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