Python代码报错TypeError: 'tuple' object is not callable求助排查
解决Python薪资计算代码的TypeError及逻辑问题
问题概述
编写Python代码计算员工薪资,输入姓名、性别、年龄、工作天数后计算总薪资,但执行时触发TypeError: 'tuple' object is not callable错误,错误出在print语句,需实现示例中的薪资计算输出功能。
原始代码
nama=input('Nama: ') jenis=input('Jenis kelamin: ') umur=input('Umur: ') hari=input('Hari kerja: ') if umur >='18' and umur <'30': if jenis=='wanita' : upah=750000 elif jenis=='pria' : upah=700000 if umur >='30' and umur <='40' : if jenis=='wanita' : upah=850000 elif jenis=='pria' : upah=800000 total = upah*hari print(nama, 'menerima upah sebesar Rp.', total, 'karena telah bekerja', hari, 'hari')
报错信息
TypeError Traceback (most recent call last) <ipython-input-16-2a7d3cefc5b8> in <module> 16 total = upah*hari 17 ---> 18 print(nama, 'menerima upah sebesar Rp.', total, 'karena telah bekerja', hari, 'hari') TypeError: 'tuple' object is not callable
问题分析
- print被意外赋值为元组:该错误通常是因为代码运行环境中,
print被错误赋值为元组(比如之前执行过print = (1,2,3)这类语句),导致调用print时实际是在尝试调用一个元组,触发类型错误。 - 输入类型未转换:
umur(年龄)和hari(工作天数)是输入的字符串,直接用于数值比较和乘法运算会引发逻辑错误或类型错误。 - 条件缩进错误:第一个
elif jenis=='pria'与外层if umur >='18' and umur <'30'对齐,导致逻辑分支混乱,部分场景下upah变量未定义。 - 无默认分支处理:未考虑年龄不在18-40区间的情况,会引发
NameError。
修正方案
- 重启Python环境或执行
del print恢复print函数的正常功能。 - 将输入的年龄和工作天数转换为整数类型。
- 修正条件判断的缩进,确保分支逻辑正确。
- 添加默认分支,处理年龄不在指定区间的情况。
修正后的代码
nama = input('Nama: ') jenis = input('Jenis kelamin: ') umur = int(input('Umur: ')) hari = int(input('Hari kerja: ')) upah = 0 # 初始化默认值 if 18 <= umur < 30: if jenis == 'wanita': upah = 750000 elif jenis == 'pria': upah = 700000 elif 30 <= umur <= 40: if jenis == 'wanita': upah = 850000 elif jenis == 'pria': upah = 800000 else: print("Umur tidak dalam rentang yang ditentukan") if upah != 0: total = upah * hari print(f"{nama} menerima upah sebesar Rp. {total} karena telah bekerja {hari} hari")
验证示例
输入:
Nama: Anna Jenis kelamin: wanita Umur: 20 Hari kerja: 2
输出:
Anna menerima upah sebesar Rp. 1500000 karena telah bekerja 2 hari
内容的提问来源于stack exchange,提问作者Ardel Ritoria
相关产品推荐
相关产品推荐

