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

编写三角形类型判断程序时遇int()参数错误:无法转换set类型

问题解决:int()参数类型错误及三角形判断逻辑修正

错误原因

错误提示 int() argument must be a string, a bytes-like object or a real number, not 'set' 是因为你用大括号{a}/{b}/{c}将变量包装成了**集合(set)**类型,而int()函数仅支持转换字符串、字节或数值类型,无法直接处理集合。

另外你的代码存在逻辑漏洞:直接将a指定为最长边是错误的,必须先比较三个边的长度,找出真正的最大值作为最长边才能正确判断三角形类型。

修正方案

步骤1:修复类型错误

移除所有变量赋值时的大括号{},直接使用原始变量;同时建议先将输入的字符串转换为整数,避免后续重复转换。

步骤2:修正最长边判断逻辑

使用max()函数获取三个边中的最大值作为最长边,再筛选出剩余两个边用于计算。

修正后的完整代码

# 读取输入并直接转换为整数
a, b, c = map(int, input().split())
print(f'A : {a}, B : {b}, C : {c}')

# 确定最长边和其余两边
sisi_terpanjang = max(a, b, c)
# 筛选出除最长边外的另外两个边
sisa_sisi = [side for side in [a, b, c] if side != sisi_terpanjang]
sisi_pertama, sisi_kedua = sisa_sisi

# 判断三角形类型
if sisi_terpanjang**2 == sisi_pertama**2 + sisi_kedua**2:
    print("segitiga siku-siku")
elif sisi_terpanjang**2 < sisi_pertama**2 + sisi_kedua**2:
    print("segitiga lancip")
else:
    print("segitiga tumpul")

关键修正点说明

  • map(int, input().split()):一次性将输入的字符串转为整数,简化后续代码
  • max(a, b, c):正确获取最长边,避免手动指定错误的边
  • 列表推导式筛选剩余边:确保用于计算的是除最长边外的另外两个边,逻辑更严谨
  • 改用elif/else:减少冗余判断,提升代码效率

内容的提问来源于stack exchange,提问作者Centing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:52:20