如何解决其他语句未使用字符串或浮点输入执行
num1 = int(input("Enter the first integer: "))
num2 = int(input("Enter the second integer: "))
if (str(num1).isdigit()) and (str(num2).isdigit()):
if num1>num2:
print(num2,num1)
else:
print(num1,num2)
else:
print("That is not an integer!")
我得到的错误:
回溯(最近通话最近一次):
文件“ C:\ Users \ shrad.spyder-py3 \ temp.py”,第183行,在 num2 = int(input(“输入第二个整数:”))
ValueError:以10为底的int()无效文字:'2.2'
解决方法
在尝试测试它是否由数字组成之前,您正尝试将其转换为int。等待直到完成此测试,然后再进行转换。
num1 = input("Enter the first integer: ") # keep it as a string for now
num2 = input("Enter the second integer: ")
if num1.isdigit() and num2.isdigit():
num1 = int(num1) # NOW convert to int
num2 = int(num2)
if num1>num2:
print(num2,num1)
else:
print(num1,num2)
else:
print("That is not an integer!")
请注意,您的isdigit
测试不适用于负整数。
int()
仅接受整数-这是一个不带小数点的数字,这就是为什么它不接受2.2的原因。您可能要使用float()。
2.2
是float
,而不是int
,但是您正在尝试将其强制转换为int
。
好吧,您知道他们说的是“永远不要相信用户的输入”。即使用户自己就是你自己。
语句:input("Enter the first integer: ")
返回一个字符串(您键入的字符串),然后将该字符串传递给int()
,并尝试将其转换为整数。
int函数的要求是,在给定字符串作为输入时,该字符串严格是整数的描述(而不是浮点数,例如2.2)
您可以尝试使用第一行:num1 = int(input("Enter the first integer: "))
,然后print(num1)
,以弄清楚这对您自己如何起作用;什么时候升起,什么时候不升起。
您发布的代码中的问题是,您首先尝试转换为int,然后再检查输入是否实际上是int。因此,Python解释器必须首先面对问题,并使用它自己的自动方法来报告它:异常。
一种解决此问题的方法可能是将字符串-> int coverion推迟到实际需要为止。幸运的是,在比较中这只是一个位置,它将变成:if int(num1) > int(num2):
。
这将使您免于一开始的int()转换的麻烦,再加上用于int-checking的返回字符串转换(if (str(num1).isdigit()) and (str(num2).isdigit()):
可能变成if num1.isdigit() and num2.isdigit():
,因为num1,num2没有被覆盖)。
或者,如果您希望无错误地转换小数点数字,则可以使用float()
函数(也可以方便地转换int)。
您还可以尝试使用异常处理,例如:
try:
num1 = int(input("Enter the first integer: "))
num2 = int(input("Enter the second integer: "))
except Exception as e:
print("Error converting input to integers",e)
这将使您不必再验证下面的输入...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。