不匹配但不知道哪里出错...(python)

0 投票
6 回答
12453 浏览
提问于 2025-04-18 04:28

我需要一些编程方面的帮助。

我的作业是这样的:

写一个程序,让用户输入工作小时数和每小时的工资,然后计算总工资。对于超过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 个回答

0

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)
0
hrs = raw_input("Enter Hours:")
h = float(hrs)
rate = raw_input("Enter rate:")
r = float(rate)
pay  = h * r     
print pay

这就是你问题的答案 @user3578390

0

看起来 print rate, hours 这行代码输出的结果让检查程序感到意外,无法处理。你只需要把这一行代码前面加个注释符号,就可以了。

1

通过使用一个函数,你可以做到这一点。

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)
1

要按照你的格式打印浮点数,你需要使用一种叫做 格式字符串 的东西(这里有例子)。

所以你需要把这一行:

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)

撰写回答