不匹配但不知道哪里出错...(python)
我需要一些编程方面的帮助。
我的作业是这样的:
写一个程序,让用户输入工作小时数和每小时的工资,然后计算总工资。对于超过40小时的工作时间,按1.5倍的工资来计算。用45小时和每小时10.50的工资来测试这个程序(计算出来的工资应该是498.75)。你需要用raw_input来读取用户输入的字符串,然后用float()把这个字符串转换成数字。不要担心用户输入的错误,假设用户输入的都是正确的数字。
我做了这个:
inp = raw_input ('Enter Hours: ')
hours = float(inp)
inp = raw_input ('Enter Rate: ')
rate = float(inp)
print rate, hours
if hours <= 40 :
pay = hours * rate
else :
pay = rate * 40 + (rate * 1.5 * ( hours - 40 ))
print pay
看起来还不错,但当我点击检查代码时,我输入了45小时,然后输入了10.50或10.5,但每次都出现这个提示:
10.5 45.0 ← 不匹配
498.75
答案498.75是正确的,但我总是收到不匹配的提示,所以我无法完成我的作业。有人知道我哪里出错了吗?
6 个回答
4.6 编写一个程序,提示用户输入工作小时数和每小时的工资,然后计算总工资。对于40小时以内的工作,工资按正常小时工资计算;而超过40小时的部分,则按正常工资的1.5倍计算。把计算工资的逻辑放在一个叫做 computepay() 的函数里,并使用这个函数来进行计算。这个函数应该返回一个值。用45小时和每小时10.50的工资来测试程序(计算出的工资应该是498.75)。你需要使用输入功能来读取字符串,并用 float() 将字符串转换成数字。除非你想要检查用户输入的错误,否则不需要担心用户输入的正确性,可以假设用户输入的都是正确的数字。不要把你的变量命名为 sum,也不要使用 sum() 函数。
def computepay(h,r):
if h <= 40:
return h * r
elif h > 40:
return (40 * r + ((h - 40) * 1.5 * r))
hrs = float(input("Enter Hours:"))
rate = float(input("Enter Rate:"))
p = computepay(hrs, rate)
print("Pay",p)
hrs = raw_input("Enter Hours:")
h = float(hrs)
rate = raw_input("Enter rate:")
r = float(rate)
pay = h * r
print pay
这就是你问题的答案 @user3578390
看起来 print rate, hours
这行代码输出的结果让检查程序感到意外,无法处理。你只需要把这一行代码前面加个注释符号,就可以了。
通过使用一个函数,你可以做到这一点。
def computepay(h,r):
if (h>40) :
pay = (40*r)+(h-40)*1.5*r
else:
pay = (h*r)
return pay
try:
inp = raw_input("Please enter hours: ")
hours=float(inp)
inp = raw_input("Please enter rate: ")
rate= float(inp)
except:
print "Please enter a number as input"
quit()
print computepay(hours,rate)
要按照你的格式打印浮点数,你需要使用一种叫做 格式字符串 的东西(这里有例子)。
所以你需要把这一行:
print rate, hours
改成:
print("Rate = %.2f, Hours = %.0f" % (rate, hours))
# ^ ^
# | Remove all chars after point (may be you need to change that
# according your task)
# Use to chars after comma (no zeros removing)