如果和语法错误python

时间:2015-10-11 21:58:50

标签: python syntax

晚上好。我是python的新手而不是编程。我目前正在编写一个我正在编写的程序,但我不明白为什么。如果工作小时数大于40但小于60,我想显示加班工资。不幸的是,每次我尝试使用和关键字我都会从程序中得到语法错误。有人可以解释一下我做错了什么吗?

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)

7 个答案:

答案 0 :(得分:4)

if (hours_worked > 40 and hours_worked < 60):

答案 1 :(得分:2)

if (60 > hours_worked > 40):

答案 2 :(得分:2)

正如其他人所说,你可以使用

if (hours_worked > 40 and hours_worked < 60):

if (40 < hours_worked < 60):

我还应该指出,你并不需要在第一行中使用eval()。你真正想要使用的函数是int()。如果您发布此代码供公众使用,人们可能会编写将使用eval()函数执行的恶意代码。

答案 3 :(得分:1)

第11行

if (hours_worked > 40 and <60):

这在python中不起作用。您可以这样写:

if (hours_worked > 40 and hours_worked < 60):

或者更简短的写作方式是:

if (40 < hours_worked < 60):

答案 4 :(得分:1)

在python来自的语言背景中,and运算符不需要匹配值,它需要条件。因此,它试图将< 60解释为条件,而不是将其视为更多模式匹配风格的构造。
您需要将其替换为hours_worked < 60

,将其变为条件

答案 5 :(得分:0)

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

应该是

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

代替。 Python还不支持在按位if条件之间重复变量。

答案 6 :(得分:0)

你忘记在第二个条件中包含hours_worked

hours_worked > 40 and hours_worked < 60  

这是因为解释器无法理解这种语法。它解析第一个条件,然后它找到一个“和”。因此,它期待另一个条件。相反,它找到'&lt;'符号。