如何在使用用户定义的函数时raw_input数据:

时间:2017-01-11 00:11:17

标签: python

您好我是编程的新手,刚开始学习python我编写了下面的代码/程序,使用raw_input计算总薪水,以提高小时和每小时的费率。我试图为40小时以上工作时间的小时费率开始一次半。在名为computepay()的函数中计算time-and-a-half的逻辑,并使用该函数进行计算。该函数应返回一个值。我用45小时和每小时10.50的速度来测试程序(工资应该返回498.75)。我尝试使用raw_input读取字符串,并使用float()将字符串转换为数字。我不要命名我的变量sum或使用sum()函数。我能够打印输出,但我需要在提示时输入数据,而不是输入" line16"

中的值
def computePay (hours,rate):
    if hours > 40:
        overtimerate = 1.5 * rate
        overtime = (hours-40) * overtimerate
        overtimepay = overtime + (40 * rate)
        return overtimepay;
    else:
        normalpay = hours * rate
        return normalpay;
hours = raw_input('Enter hours: ')
hrs = int(hours)
rate = raw_input('Enter rate: ')
r = float(rate)
p = computePay(45,10.50)
print p

2 个答案:

答案 0 :(得分:1)

<强>假设

我必须在理解你的问题时做出以下假设:

  1. 查看您的print语句,您正在使用python2.x
  2. 您想使用用户输入的小时数和费率计算payPay。
  3. <强>问题

    在以下行中,您使用的是常量hrs和r值,而不是使用用户输入的值

    make()

    <强>解决方案

    如果您想使用用户输入的值来计算薪水,您需要按如下方式调用该函数:

    p = computePay(45,10.50)
    

    使用此行,您实际上是使用存储在变量hrs和r中的值来询问python到computePay。

    最终代码:

    因此,您的最终代码应该是这样的:

    p = computePay(hrs, r)
    

    示例输出:

    def computePay (hours,rate):
        if hours > 40:
            overtimerate = 1.5 * rate
            overtime = (hours-40) * overtimerate
            overtimepay = overtime + (40 * rate)
            return overtimepay;
        else:
            normalpay = hours * rate
            return normalpay;
    hours = raw_input('Enter hours: ')
    hrs = int(hours)
    rate = raw_input('Enter rate: ')
    r = float(rate)
    p = computePay(hrs,r)
    print p
    

答案 1 :(得分:0)

如果您的意思是希望参数等于输入而不是手动输入的参数,则应该改为:

p = computePay(hrs, r)

示例输出:

Enter hours: 45
Enter rate: 10.5
498.75