可爱的菲菲酱 发表于 2020-5-6 13:19:06

help

输入三角形的3条边长,判断其形状。输入错误则,输出“EER”。(例:输入:3 4 5,输出:直角三角形)我的代码有哪些问题,请指出。另外if语句有没有满足则继续执行,不满足则将后面的代码不再执行的函数?

a=input()
b=a.isdigit()
if b==False:
    print("ERR")
x=a.split(" ")
x.sort(key=int)
c=int(x)
d=int(x)
e=int(x)
if c**2+d**2==e**2:
    print("直角三角形")
elif c**2+d**2>e**2:
    print("钝角三角形")
elif c**2+d**2<e**2:
    print("锐角三角形")

qiuyouzhi 发表于 2020-5-6 13:22:27

本帖最后由 qiuyouzhi 于 2020-5-6 13:26 编辑

1,
a=input()
x=a.split(" ")
for each in x:
    b=each.isdigit()
    if b==False:
      print("ERR")
x.sort(key=int)
c=int(x)
d=int(x)
e=int(x)
if c**2+d**2==e**2:
    print("直角三角形")
elif c**2+d**2>e**2:
    print("钝角三角形")
elif c**2+d**2<e**2:
    print("锐角三角形")
2,exit。

永恒的蓝色梦想 发表于 2020-5-6 13:24:19

qiuyouzhi 发表于 2020-5-6 13:22
1,你可以自己测试一下,我没看出来什么错误。
2,exit。

很明显,有空格的字符串 isdigit 返回 False

liuzhengyuan 发表于 2020-5-6 13:25:08

本帖最后由 liuzhengyuan 于 2020-5-6 13:29 编辑

a = input()
x = a.split(" ")

b = True
if len(x) != 3:
      b = False
for i in x:
    if not i.isdigit():
      b = False
      
if b == False:
    print("ERR")
else:
    x.sort()
    c=int(x)
    d=int(x)
    e=int(x)
    if c**2+d**2==e**2:
      print("直角三角形")
    elif c**2+d**2>e**2:
      print("钝角三角形")
    elif c**2+d**2<e**2:
      print("锐角三角形")

永恒的蓝色梦想 发表于 2020-5-6 13:30:04

try:
    a,b,c=sorted(map(lambda i:i*i,map(int,input().split())))
   
except:
    print('ERR')

else:
    a+=b
   
    if a>c:
      print('钝角三角形')
    elif a<c:
      print('锐角三角形')
    else:
      print('直角三角形')

可爱的菲菲酱 发表于 2020-5-6 13:48:10

永恒的蓝色梦想 发表于 2020-5-6 13:24
很明显,有空格的字符串 isdigit 返回 False

那有什么解决的办法吗?转成列表之类的吗?

永恒的蓝色梦想 发表于 2020-5-6 14:23:16

可爱的菲菲酱 发表于 2020-5-6 13:48
那有什么解决的办法吗?转成列表之类的吗?

对,
页: [1]
查看完整版本: help