微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

其他语句未使用字符串或浮点输入执行

如何解决其他语句未使用字符串或浮点输入执行

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.2float,而不是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 举报,一经查实,本站将立刻删除。