代码中的整数错误

时间:2015-12-02 21:59:24

标签: python string integer

我正在尝试编写一些代码,用于计算不同车牌,正确格式和错误的汽车的速度。该程序将在单独的文本文件中打印格式不正确的超速驾驶汽车。这是我刚刚得到的错误,我不知道如何解决它:

import re
distance = 200
speedlimit = 50
nonstandardReg = open("text.txt ","w")

userinput = input("Choose a car number 1 to 5")
if userinput ==('1')or(' 1')or('car1')or(' car1'):
 car1 = "AD 12DER, 12:36:01, 12:36:40"
elif userinput ==('2')or(' 2')or('car2')or(' car2'):
 car2 = "DE 61FE1, 02:47:01, 02:47:30"
elif userinput == ('3')or(' 3')or('car3')or(' car3'):
 car3 = "AF 012GL, 04:08:32, 07:32:28"
elif userinput == ('4')or(' 4')or('car4')or(' car4'):
 car4 = "TG 043WE, 08:45:23, 12:14:56"
elif userinput == ('5')or(' 5')or('car5')or(' car5'):
 car5 = "TL 12AWY"
else:
 print("Invalid Car")
car1Time1 =int(car1[16:18])
car1Time2 =int(car1[26:28])
car1TimeEnd = car1Time2-car1Time1
car1Speed = distance/car1TimeEnd

car2Time1 =int(car2[16:18])
car2Time2 =int(car2[26:28])
car2TimeEnd = car2Time2-car2Time1
car2Speed = distance/car2TimeEnd

car3Time1 =int(car3[16:18])
car3Time2 =int(car3[26:28])
car3TimeEnd = car3Time2-car3Time1
car3Speed = distance/car3TimeEnd

car4Time1 =int(car4[16:18])
car4Time2 =int(car4[26:28])
car4TimeEnd = car4Time2-car4Time1
car4Speed = distance/car4TimeEnd

car5Time1 =int(car5[16:18])
car5Time2 =int(car5[26:28])
car5TimeEnd = car5Time2-car5Time1
car5Speed = distance/car5TimeEnd

这是我得到的错误:

car2Time1 =(int(car2[16:18]))
ValueError: invalid literal for int() with base 10: ''

3 个答案:

答案 0 :(得分:0)

从你的评论中,听起来你并不确定你希望程序做什么。您可能正在寻找类似的东西:

if userinput ==('1')or userinput ==(' 1')or userinput ==('car1')or userinput ==(' car1'):
 car = "AD 12DER, 12:36:01, 12:36:40"
elif userinput ==('2')or userinput ==(' 2')or userinput ==('car2')or userinput ==(' car2'):
 car = "DE 61FE1, 02:47:01, 02:47:30"
elif userinput == ('3')or userinput ==(' 3')or userinput ==('car3')or userinput ==(' car3'):
 car = "AF 012GL, 04:08:32, 07:32:28"
elif userinput == ('4')or userinput ==(' 4')or userinput ==('car4')or userinput ==(' car4'):
 car = "TG 043WE, 08:45:23, 12:14:56"
elif userinput == ('5')or userinput ==(' 5')or userinput ==('car5')or userinput ==(' car5'):
 car = "TL 12AWY"
else:
 print("Invalid Car")
carTime1 =int(car[16:18])
carTime2 =int(car[26:28])
carTimeEnd = carTime2-carTime1
carSpeed = distance/carTimeEnd

现在,如果他们尝试使用car5,你就会遇到问题,因为你缩短了那个,不包括时间信息。

答案 1 :(得分:0)

您的代码有几个问题。首先,这个条件

if userinput ==('1')or(' 1')or('car1')or(' car1'):

将始终评估为True。你应该使用

if userinput ==('1') or userinput==(' 1') or userinput==('car1') or userinput == (' car1'):

代替。以及elif语句等等。那么你只需要一个car变量:

if userinput ==('1') or userinput==(' 1') or userinput==('car1') or userinput == (' car1'):
 car = "AD 12DER, 12:36:01, 12:36:40"
...
elif userinput ==('5') or userinput==(' 5') or userinput==('car5') or userinput == (' car5'):
 car = "TL 12AWY"
else:
 print("Invalid Car")
carTime1 =int(car[16:18])
carTime2 =int(car[26:28])
carTimeEnd = carTime2-carTime1
carSpeed = distance/carTimeEnd

你需要为car5正确初始化car变量。

答案 2 :(得分:0)

我不太确定这段代码是否对您有帮助,但您应该重新设计代码,除非很难找到错误。

car_dict={

'car1': "AD 12DER, 12:36:01, 12:36:40",
'car2': "DE 61FE1, 02:47:01, 02:47:30",
'car3': "AF 012GL, 04:08:32, 07:32:28",
'car4': "TG 043WE, 08:45:23, 12:14:56",
'car5': "TL 12AWY"
}

def speed_calculator(st, distance =200):
    start_time= int(st[16:18])
    end_time= int(st[26:28])
    time_in_between = end_time - start_time
    return distance/time_in_between

userinput = raw_input("Choose a car number 1 to 5").strip()


for key in car_dict:
    if userinput in key:
        print speed_calculator(car_dict[key])