2015-10-11 39 views
-4

晚上好。我是新來的python,但不是編程。我目前在編寫程序時遇到了麻煩,但我不明白爲什麼。如果工作時間大於40小時但不到60小時,我想要顯示加班工資。不幸的是,每次嘗試使用和關鍵字時,我都會從程序中收到語法錯誤。有人能解釋我做錯了什麼嗎?如果和語法錯誤python

wage = eval(input("Enter in the employees hourly wage: ")) #get wage 
hours_worked = eval(input("Enter in the number of hours worked: ")) #get hours 
pay = wage * hours_worked # calculate pay 
ot = ((hours_worked - 40) * (1.5) * wage) + (wage * 40) 
double = ((hours_worked - 40) * (2) * wage) + (wage * 40) 
#calculate overtime pay 

if (hours_worked <= 40): 
    print (pay) 

if (hours_worked > 40 and < 60): 
    print (ot) 

if (hours_worked >= 60): 
    print (double) 
+1

該錯誤還會告訴你*它發生在哪裏;也許這有幫助(你可以添加到你的問題)。 – Evert

+1

在Python(以及其他所有我能想到的語言)中,必須給出「和」兩個條件。如果(hours_worked> 40和hours_worked <60'。<60本身就是一個語法錯誤。 –

+1

如果條件(即使這裏的每個答案都是這樣)都沒有必要放置括號,請參閱(任何)教程。 – Evert

回答

4
if (hours_worked > 40 and hours_worked < 60): 
+4

'if 40

0
if (hours_worked > 40 and < 60): 
print (ot) 

應該

if (hours_worked > 40 and hours_worked < 60): 
print (ot) 

代替。 Python還不支持在按位if條件之間重複該變量。

+0

謝謝大家的幫助,這是一個簡單的解決方法。我不知道我必須在和之後第二次包含變量。回去插入它後,它完美地工作。再次感謝。 –

+0

好,你很高興。請享用! – Gustavo6046

1

第11行

if (hours_worked > 40 and <60):

這並不在Python工作。你可以寫,要麼是這樣的:

if (hours_worked > 40 and hours_worked < 60):

還是把它寫一個較短的方式是:

if (40 < hours_worked < 60):

1

在語言背景蟒蛇來自中,and符不需要匹配的值,它需要條件。因此,它試圖將< 60解釋爲一個條件,而不是你的意思是它是一個更模式匹配風格的構造。
您需要將其替換爲hours_worked < 60才能成爲條件。

0

你只是忘了在第二個狀態

hours_worked > 40 and hours_worked < 60 

出現這種情況是因爲該解釋無法理解這個語法包括hours_worked。它解析第一個條件,然後找到「和」。因此它期望另一個條件。相反,它會發現'<'符號。

2

如其他人所說,你可以使用

if (hours_worked > 40 and hours_worked < 60): 

if (40 < hours_worked < 60): 

我還要指出的是,你並不真的需要在第一線的eval()函數。你真正想使用的函數是int()。如果您發佈此代碼供公衆使用,人們可以編寫可以使用eval()函數執行的惡意代碼。