整数错误在COD中

2024-09-30 04:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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: ''

Tags: or格式错误汽车intdistanceelifuserinput
3条回答

从你的评论来看,听起来你不确定你想要这个程序做什么。你可能在找这样的东西:

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,您将遇到一个问题,因为您缩短了该选项,使其不包含计时信息。你知道吗

我不太确定这个代码是否对你有帮助,但是你应该重新设计你的代码,除非很难找到bug。你知道吗

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])

你的代码有几个问题。一开始,这种情况

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变量。你知道吗

相关问题 更多 >

    热门问题