Python TypeError:int()参数必须是字符串或数字,而不是';元组';
我正在努力找出我正在做的作业中的这个错误。假设它是一个计算工资和加班工资的工资单程序,加班时间定义为40小时以上的任何时间Python TypeError:int()参数必须是字符串或数字,而不是';元组';,python,Python,我正在努力找出我正在做的作业中的这个错误。假设它是一个计算工资和加班工资的工资单程序,加班时间定义为40小时以上的任何时间 我的错误: Traceback (most recent call last): File "C:\Python33\Assignment6.py", line 79, in <module> main() File "C:\Python33\Assignment6.py", line 18, in main original_pay
我的错误:
Traceback (most recent call last):
File "C:\Python33\Assignment6.py", line 79, in <module>
main()
File "C:\Python33\Assignment6.py", line 18, in main
original_pay = calculate_pay(original_hours, original_rate)
File "C:\Python33\Assignment6.py", line 52, in calculate_pay
original_hours = int(original_hours)
TypeError: int() argument must be a string or a number, not 'tuple'
回溯(最近一次呼叫最后一次):
文件“C:\Python33\Assignment6.py”,第79行,在
main()
文件“C:\Python33\Assignment6.py”,第18行,在main中
原始工资=计算工资(原始工时、原始费率)
文件“C:\Python33\Assignment6.py”,第52行,计算支付
原始工时=整数(原始工时)
TypeError:int()参数必须是字符串或数字,而不是“tuple”
我的代码:
overtime_rate_constant = .5
overtime_limit = 40
overtime_hours = 0
def main ():
greet()
original_hours = get_hours()
original_rate = get_rate()
original_pay = calculate_pay(original_hours, original_rate)
totalpay = overtime_pay + original_pay
print_data(original_rate, overtime_hours, original_hours, calculate_overtime_hours, original_pay, totalpay)
def get_hours ():
original_hours = int(input("Please enter hours worked (8-86): "))
print()
while original_hours < 8 or original_hours > 86:
print("You must enter between 8 - 86 hours.")
print()
original_hours = int(input("Please try again: "))
print()
original_hours = int(original_hours)
for original_hours in range (41, 86):
overtime_hours = original_hours - overtime_limit
return original_hours, overtime_hours
return original_hours
def get_rate ():
original_rate = int(input("Please enter your hourly rate: "))
print()
while original_rate < 7 or original_rate > 50:
print("You must enter a pay rate between 7 - 50 dollars")
print()
rate = int(input("Please try again: "))
print()
return original_rate
return original_rate
def calculate_pay (original_hours, original_rate):
original_hours = int(original_hours)
original_rate = int(original_rate)
original_pay = original_hours * original_rate
overtime_pay = original_hours * original_hours + overtime_hours * .5
return overtime_pay, original_pay
def print_data (original_rate, overtime_hours, original_hours, overtime_pay, original_pay, totalpay):
print()
print("Pay rate: $", format (original_rate, '0,.2f'))
print("Regular Hours: ", format (original_hours, '0,.0f'))
print("Overtime Hours: ", format (overtime_hours, '0,.0f'))
print("Regular Pay: $", format (original_pay, '0,.2f'))
print("Overtime Pay: $", format (overtime_pay, '0,.2f'))
print("Total Pay: $", format (totalpay, '0,.2f'))
def greet ():
print("This program calculates pay.")
print()
main()
加班率\常数=.5
加班限制=40
加班时间=0
defmain():
问候
原始工时=获取工时()
原始利率=获取利率()
原始工资=计算工资(原始工时、原始费率)
总工资=加班工资+原工资
打印数据(原始工资率、加班工时、原始工时、计算加班工时、原始工资、总工资)
def get_小时():
原始工时=整数(输入(“请输入工作小时数(8-86):”)
打印()
当原始时数<8或原始时数>86时:
打印(“您必须在8-86小时之间输入。”)
打印()
原始时数=整数(输入(“请重试:”)
打印()
原始工时=整数(原始工时)
对于范围(41,86)内的原始_小时:
加班时间=原加班时间-加班时间限制
返回原始工时、加班工时
返回原始时间
def获取率():
原始费率=整数(输入(“请输入您的小时费率:”)
打印()
当原始利率<7或原始利率>50时:
打印(“您必须输入7-50美元之间的付款率”)
打印()
rate=int(输入(“请重试:”)
打印()
返回原始价格
返回原始价格
def计算工资(原始工时、原始费率):
原始工时=整数(原始工时)
原始利率=整数(原始利率)
原始工资=原始工时*原始费率
加班工资=原工作时间*原工作时间+加班时间*.5
退还加班费,原加班费
def打印数据(原始工资率、加班工时、原始工时、加班工资、原始工资、总工资):
打印()
打印(“工资率:$”,格式(原始工资率,'0,.2f'))
打印(“正常工作时间:”,格式(原始工作时间,'0,.0f'))
打印(“加班时间:”,格式(加班时间,'0,.0f'))
打印(“常规付款:$”,格式(原始付款,'0.2f'))
打印(“加班费:$”,格式(加班费,'0,.2f'))
打印(“总薪酬:$”,格式(总薪酬,'0.2f'))
def greet():
打印(“此程序计算薪资。”)
打印()
main()
问题出在这一行(在您的get\u hours
功能中):
这将返回一个元组。问题出在这一行(在
get\u hours
函数中):
这将返回一个元组。您的
calculate\u pay()
函数无法正确处理加班。确保正确传递get\u hours()
返回的元组中的值,并确保get\u hours()
始终返回一个2元组,即使第二个元素为0。您的calculate\u pay()
函数无法正确处理加班。确保正确传递get_hours()
返回的元组中的值,并确保get_hours()
始终返回一个2元组,即使第二个元素是0。我没有看到这是为您分配的。无论如何,请关注变量赋值,如果您返回n个值,则从调用的位置接收该值和n个变量,否则将出现以下错误:
TypeError: int() argument must be a string or a number, not 'tuple'
你的节目有点乱。现在,已经修好了
overtime_rate_constant = .5
overtime_limit = 40
overtime_hours = 0
def main ():
greet()
original_hours,overtime_hours = get_hours()
original_rate = get_rate()
overtime_pay, original_pay = calculate_pay(original_hours, original_rate)
totalpay = overtime_pay + original_pay
print_data(original_rate, overtime_hours, original_hours, overtime_pay, original_pay, totalpay)
def get_hours ():
original_hours = int(input("Please enter hours worked (8-86): "))
print()
while original_hours < 8 or original_hours > 86:
print("You must enter between 8 - 86 hours.")
print()
original_hours = int(input("Please try again: "))
print()
#original_hours = int(original_hours)
for original_hours in range (41, 86):
overtime_hours = original_hours - overtime_limit
return original_hours, overtime_hours
#return original_hours
def get_rate ():
original_rate = int(input("Please enter your hourly rate: "))
print()
while original_rate < 7 or original_rate > 50:
print("You must enter a pay rate between 7 - 50 dollars")
print()
rate = int(input("Please try again: "))
print()
return original_rate
return original_rate
def calculate_pay (original_hours, original_rate):
original_hours = int(original_hours)
original_rate = int(original_rate)
original_pay = original_hours * original_rate
overtime_pay = original_hours * original_hours + overtime_hours * .5
return overtime_pay, original_pay
def print_data (original_rate, overtime_hours, original_hours, overtime_pay, original_pay, totalpay):
print()
print("Pay rate: $", format (original_rate, '0,.2f'))
print("Regular Hours: ", format (original_hours, '0,.0f'))
print("Overtime Hours: ", format (overtime_hours, '0,.0f'))
print("Regular Pay: $", format (original_pay, '0,.2f'))
print("Overtime Pay: $", format (overtime_pay, '0,.2f'))
print("Total Pay: $", format (totalpay, '0,.2f'))
def greet ():
print("This program calculates pay.")
print()
main()
加班率\常数=.5
加班限制=40
加班时间=0
defmain():
问候
原始工时、加班工时=获取工时()
原始利率=获取利率()
加班工资,原始工资=计算工资(原始工时,原始费率)
总工资=加班工资+原工资
打印数据(原始工资率、加班工时、原始工时、加班工资、原始工资、总工资)
def get_小时():
原始工时=整数(输入(“请输入工作小时数(8-86):”)
打印()
当原始时数<8或原始时数>86时:
打印(“您必须在8-86小时之间输入。”)
打印()
原始时数=整数(输入(“请重试:”)
打印()
#原始工时=整数(原始工时)
对于范围(41,86)内的原始_小时:
加班时间=原加班时间-加班时间限制
返回原始工时、加班工时
#返回原始时间
def获取率():
原始费率=整数(输入(“请输入您的小时费率:”)
打印()
当原始利率<7或原始利率>50时:
打印(“您必须输入7-50美元之间的付款率”)
打印()
rate=int(输入(“请重试:”)
打印()
返回原始价格
返回原始价格
def计算工资(原始工时、原始费率):
原始工时=整数(原始工时)
原始利率=整数(原始利率)
原始工资=原始工时*原始费率
加班工资=原工作时间*原工作时间+加班时间*.5
退还加班费,原加班费
def打印数据(原始工资率、加班工时、原始工时、加班工资、原始工资、总工资):
打印()
打印(“工资率:$”,格式(原始工资率,'0,.2f'))
打印(“正常工作时间:”,格式(原始工作时间,'0,.0f'))
打印(“加班时间:”,格式(加班时间,'0,.0f'))
打印(“常规付款:$”,格式(原始付款,'0.2f'))
打印(“加班费:$”,格式(加班费,'0,.2f'))
打印(“总薪酬:$”,格式(总薪酬,'0.2f'))
def greet():
打印(“此程序用于计算
overtime_rate_constant = .5
overtime_limit = 40
overtime_hours = 0
def main ():
greet()
original_hours,overtime_hours = get_hours()
original_rate = get_rate()
overtime_pay, original_pay = calculate_pay(original_hours, original_rate)
totalpay = overtime_pay + original_pay
print_data(original_rate, overtime_hours, original_hours, overtime_pay, original_pay, totalpay)
def get_hours ():
original_hours = int(input("Please enter hours worked (8-86): "))
print()
while original_hours < 8 or original_hours > 86:
print("You must enter between 8 - 86 hours.")
print()
original_hours = int(input("Please try again: "))
print()
#original_hours = int(original_hours)
for original_hours in range (41, 86):
overtime_hours = original_hours - overtime_limit
return original_hours, overtime_hours
#return original_hours
def get_rate ():
original_rate = int(input("Please enter your hourly rate: "))
print()
while original_rate < 7 or original_rate > 50:
print("You must enter a pay rate between 7 - 50 dollars")
print()
rate = int(input("Please try again: "))
print()
return original_rate
return original_rate
def calculate_pay (original_hours, original_rate):
original_hours = int(original_hours)
original_rate = int(original_rate)
original_pay = original_hours * original_rate
overtime_pay = original_hours * original_hours + overtime_hours * .5
return overtime_pay, original_pay
def print_data (original_rate, overtime_hours, original_hours, overtime_pay, original_pay, totalpay):
print()
print("Pay rate: $", format (original_rate, '0,.2f'))
print("Regular Hours: ", format (original_hours, '0,.0f'))
print("Overtime Hours: ", format (overtime_hours, '0,.0f'))
print("Regular Pay: $", format (original_pay, '0,.2f'))
print("Overtime Pay: $", format (overtime_pay, '0,.2f'))
print("Total Pay: $", format (totalpay, '0,.2f'))
def greet ():
print("This program calculates pay.")
print()
main()
Traceback (most recent call last):
File "p.py", line 72, in <module>
main()
File "p.py", line 11, in main
original_pay = calculate_pay(original_hours, original_rate)
File "p.py", line 45, in calculate_pay
original_hours = int(original_hours)
TypeError: int() argument must be a string or a number, not 'tuple'
Traceback (most recent call last):
File "p.py", line 72, in <module>
main()
File "p.py", line 12, in main
totalpay = overtime_pay + original_pay
NameError: global name 'overtime_pay' is not defined
Traceback (most recent call last):
File "p.py", line 73, in <module>
main()
File "p.py", line 14, in main
print_data(original_rate, overtime_hours, original_hours, calculate_overtime_hours, original_pay, totalpay)
NameError: global name 'calculate_overtime_hours' is not defined