You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

问题分析

  1. print被意外赋值为元组:该错误通常是因为代码运行环境中,print被错误赋值为元组(比如之前执行过print = (1,2,3)这类语句),导致调用print时实际是在尝试调用一个元组,触发类型错误。
  2. 输入类型未转换:umur(年龄)和hari(工作天数)是输入的字符串,直接用于数值比较和乘法运算会引发逻辑错误或类型错误。
  3. 条件缩进错误:第一个elif jenis=='pria'与外层if umur >='18' and umur <'30'对齐,导致逻辑分支混乱,部分场景下upah变量未定义。
  4. 无默认分支处理:未考虑年龄不在18-40区间的情况,会引发NameError。

修正方案

  1. 重启Python环境或执行del print恢复print函数的正常功能。
  2. 将输入的年龄和工作天数转换为整数类型。
  3. 修正条件判断的缩进,确保分支逻辑正确。
  4. 添加默认分支,处理年龄不在指定区间的情况。

修正后的代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:01:27