TypeError:不能将序列乘以'list'错误类型的非int

时间:2015-11-10 05:50:10

标签: python

我是python的新手,我不确定我的代码出错了 我真的可以使用帮助。

# this program will get hourly rate, pay rate validate.
# and then will calculate the gross pay.

pay = [7.50, 18.26]
time = [0, 41]

def main():
    getRate(pay)
    getHours(time)
    grossPay(pay, time)

def getRate(pay):
    pay_rate = float(input('Enter your hourly pay rate: '))
    while pay_rate < 7.50 or pay_rate > 18.25:
        print('Pay rate must be between $7.50 and $18.25')
        print('Enter a valid pay rate.')

        pay_rate = float(input('Enter your hourly pay rate: '))

def getHours(time):
    get_hours = float(input('Enter hours worked: '))
    while get_hours < 0 or get_hours > 40:
        print('Hours must be between 0 and 40!')
        print('Enter a valid number of hours.')

        get_hours = float(input('Enter hours worked: '))

def grossPay(pay_rate, get_hours):
    result = pay_rate * get_hours
    print(result)

main() 

3 个答案:

答案 0 :(得分:1)

在您的功能中,您永远不会返回您的工资率或工作时间的结果。

更改您的float功能以包含保存返回值,例如

decimal

在您的maindef main(): rate = getRate(pay) hours = getHours(time) grossPay(rate, hours) 函数中,添加getRategetHours变量的返回语句,例如

pay_rate

答案 1 :(得分:0)

我认为你必须重新定义

def grossPay(pay_rate, get_hours):
    for hrs, rate in zip(pay_rate, get_hrs):
      result = hrs * rate
      print(result)

答案 2 :(得分:0)

错误是由result = pay_rate * get_hours

中的这一行引起的
grossPay

因为您正在调用grossPay([7.50, 18.26], [0, 41])

import re

def filterlines(prefixes, lines):
    pattern = "|".join([re.escape(p) for p in prefixes])
    regex = re.compile(pattern)
    for line in lines:
        if regex.match(line):
            yield line

你的功能并没有做你认为他们做的事情......你正在传递一个参数,并产生一个新值,但你没有返回用户输入的值。