所以我正在做我的第一个项目这是一个三角形标识符通过边,我遇到了这个问题,如果有人写了一个字母,程序会崩溃,因为你不能浮动输入时,它是一个字符串所以我尝试了一些方法(尝试:除了我尝试:
if x == STR and x != int and x != float:打印("请选择一个可行的单位")但它现在显示,即使我有正常的数字,如(4,6,6)我只做了x的输入来确定它是否有效最后的代码:
print("please input the sides of the triangle")
x = input("the first side = ")
y = input(" the second side = ")
z = input("the third side = ")
if str(x) == x and int(x) != x and float(x) != x:
print("please choose a viable unit ")
elif x == y == z:
print("the triangle is equilateral ")
elif x == y or y == z or x == z:
print("the triangle is isosceles")
elif x != y or x != z or y != z:
print("the triangle is scalene")
elif(x*x) + (y*y) == (z*z) or (z*z) + (y*y) == (x*x) or (z*z) + (x*x) == (y*y):
print("the triangle is also right")
这一行:
if str(x) == x and int(x) != x and float(x) != x:
实际上不会将x
变为int
或float
;它也永远不可能是真的,因为x
不可能同时是所有这些类型。x
总是一个str
,因为input
总是返回一个str
。如果x
是一个不能转换为int
的值,这一行唯一能做的就是引发一个ValueError
(这将导致您的脚本退出,因为您还没有捕捉到它)。
你要做的是把x
,y
和z
转换成float
s,一旦你读到它们:
try:
x = float(input("the first side = "))
y = float(input(" the second side = "))
z = float(input("the third side = "))
except ValueError:
print("please choose a viable unit ")
exit()
在此之后,如果脚本没有退出,则x
、y
和z
保证为float
值,并且可以对它们执行数学运算而不会遇到TypeError
s。
首先,帮大家一个忙,把你的标题改成类似于"帮助Python输入和输入"的东西
第二:当您使用python输入时,它将该输入作为字符串读取。因此,为了对该字符串进行任何数学运算,它必须不是字符串,而是一个数字。
也就是说,输入必须沿着
的行foo = float(input("bar"))
编辑:您还提到,如果用户输入字符串,您会遇到问题。您可以将此答案用于参考如何实现该实例
的try except case