2015-12-02 64 views
0

我想寫一些代碼,將計算不同車牌號,正確格式和不正確的汽車的速度。該程序將在單獨的文本文件中打印速度不正確的汽車。這是我剛剛得到了錯誤,我對如何解決它不知道:整數錯誤代碼

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

它只適用於汽車2或所有汽車嗎? – 2015-12-02 22:05:03

+0

如果用戶輸入爲1,則car2到car5將不存在。我會期待'car2 not defined'錯誤。 – Ryan

回答

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,你會因爲你縮短一個不包括定時信息有問題。

+0

謝謝Ryan:D – Kuboos

+0

@Kuboos你打算如何解決第五輛車的問題? – 2015-12-02 22:19:56

+0

我會給它一個時間,它通過第一個傳感器,然後通過最後一個傳感器的時間 – Kuboos

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變量。

+0

如果r e.match( 「[AZ] [AZ] [0-9] [0-9] [AZ] [AZ] [AZ]」): 類型錯誤:比賽()失蹤1個人需要的位置參數: '串' 你能不能幫我解決這個問題,我試圖讓代碼知道汽車的reg是否格式正確,如果是我希望它不打印,如果格式不正確,我希望代碼打印出汽車正在超速行駛+其在稱爲非標準REG – Kuboos

+0

@Kuboos're.match'單獨的文本文件REG [需要](https://docs.python.org/2/library/re.html#re.match)兩個參數 - 圖案和串。你只用模式arg來嘗試它。 – kvorobiev

+0

我該怎麼做? – Kuboos

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

如果號碼牌是格式字母號碼字母的字母字母,並且如果不打印汽車+其reg,並且說它正在超速駕駛一個單獨的文本文件非標準REG – Kuboos

+0

你的代碼對 – Kuboos

+0

成功運行我的機器上,也許你正在使用python3.x和錯誤的速度計算器語法錯誤是由於'raw_input'。 –