2015-10-11 41 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()函数执行的恶意代码。