【问题标题】:Python Separating String into Words and RecursionPython将字符串分成单词和递归
【发布时间】:2015-07-30 08:10:12
【问题描述】:

我正在尝试创建一个将接受输入的代码(下面的示例)

输入:
BHK158 车辆 11
OIUGHH 摩托车 34.46
BHK158 车辆 12.000
TRIR 卡车 2.0
BLAS215 摩托车 0.001
结束

并生成一个输出,其中列出了每个车牌号并在旁边列出了总成本(示例如下)

对应的输出:
OIUGHH:5.8582
BHK158:5.75
TRIR:2.666
BLAS215:0.00017

车辆牌照每公里收费 0.25 美元(公里是输入列表中的数字值),卡车每公里收费 1.333 美元,摩托车每公里收费 0.17 美元。输出按降序排列。

到目前为止,这是我的代码:

fileinput = input('Input: \n')
split_by_space = fileinput.split(' ')

vehicles = {}


    if split_by_space[1] == 'VEHICLE':
        split_by_space[2] = (float(split_by_space[2]) * 0.25) 
    elif split_by_space[1] == 'TRUCK':
        split_by_space[2] = float(split_by_space[2]) * 1.333 
    elif split_by_space[1] == 'MOTORCYCLE':
        split_by_space[2] = float(split_by_space[2]) * 0.17 

    if split_by_space[0] in vehicles:
        previousAmount = vehicles[split_by_space[0]]
        vehicles[split_by_space[0]] = previousAmount + split_by_space[2]
    else:
        vehicles[split_by_space[0]] = split_by_space[2]

谢谢,任何帮助/提示将不胜感激。

【问题讨论】:

  • 您的代码抛出 IndentationError,请修复。

标签: python string recursion


【解决方案1】:

通过您的代码,我注意到一些事情,python 中的列表索引从 0 开始,而不是 1,因此您会遇到一堆越界错误。其次,输入只取输入的第一行,所以它永远不会超过第一行。 .split() 默认用\n 分割文本,你必须指定是否要用其他东西分割,比如空格。

test.txt 内容:

BHK158 VEHICLE 11
OIUGHH MOTORCYCLE 34.46
BHK158 VEHICLE 12.000
TRIR TRUCK 2.0
BLAS215 MOTORCYCLE 0.001

python代码:

fileinput = open('test.txt', 'r')
lines = fileinput.readlines()

vehicles = {}

for line in lines:
    split_by_space = line.split(' ')
    if split_by_space[1] == "VEHICLE":
        split_by_space[2] = (float(split_by_space[2]) * 0.25)
    elif split_by_space[1] == "TRUCK":
        split_by_space[2] = float(split_by_space[2]) * 1.333
    elif split_by_space[1] == "MOTORCYCLE":
        split_by_space[2] = float(split_by_space[2]) * 0.17


    if split_by_space[0] in vehicles:
        previousAmount = vehicles[split_by_space[0]]
        vehicles[split_by_space[0]] = previousAmount + split_by_space[2]
    else:
        vehicles[split_by_space[0]] = split_by_space[2]

输出:

{'BLAS215': 0.00017, 'OIUGHH': 5.858200000000001, 'TRIR': 2.666, 'BHK158': 5.75}

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2018-05-09
    • 1970-01-01
    • 2019-11-07
    • 2011-02-03
    相关资源
    最近更新 更多