Python Else语句未使用字符串或浮点输入执行

Python Else语句未使用字符串或浮点输入执行,python,if-statement,Python,If Statement,我得到的错误: 回溯(最近一次呼叫最后一次): 文件“C:\Users\shrad.spyder-py3\temp.py”,第183行,在 num2=int(输入(“输入第二个整数:”) ValueError:以10为基数的int()的文本无效:“2.2”是一个浮点数,不是int,但您试图将其转换为int,2.2是一个浮点数,而不是int,但您试图将其转换为int您试图在测试它是否由数字组成之前将其转换为int。在进行转换之前,请等待完成此测试 num1 = int(input("En

我得到的错误:

回溯(最近一次呼叫最后一次):

文件“C:\Users\shrad.spyder-py3\temp.py”,第183行,在 num2=int(输入(“输入第二个整数:”)


ValueError:以10为基数的int()的文本无效:“2.2”是一个
浮点数,不是
int
,但您试图将其转换为
int
2.2
是一个
浮点数,而不是
int
,但您试图将其转换为
int

您试图在测试它是否由数字组成之前将其转换为int。在进行转换之前,请等待完成此测试

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!")

顺便说一下,请注意您的
isdigit
测试对负整数不起作用。

在测试整数是否由数字组成之前,您正在尝试将其转换为整数。在进行转换之前,请等待完成此测试

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!")

顺便说一句,请注意您的
isdigit
测试对负整数不起作用。

int()
将只接受整数-这是一个没有小数点的数字,这就是它不接受2.2的原因。您可能想使用float()。

int()
将只接受一个整数-这是一个没有小数点的数字,这就是它不接受2.2的原因。您可能想使用float()。

好吧,您知道他们说的是什么,“永远不要相信用户输入”。即使用户是你自己

语句:
input(“输入第一个整数:”)
返回一个字符串(您键入的字符串),然后将该字符串传递给
int()
,并尝试将其转换为整数

当给定一个字符串作为输入时,int函数要求该字符串严格地表示为整数(而不是浮点数,比如2.2)

您可以尝试第一行:
num1=int(输入(“输入第一个整数”)
;它何时升起,何时不升起

您发布的代码中的问题是,您首先尝试转换为int,然后检查输入是否为int。因此,Python解释器必须首先面对这个问题,并使用它自己的自动方式报告它:异常

解决这个问题的一种方法是将字符串->int转换推迟到实际需要时。幸运的是,在比较中,只有一个地方是:
if int(num1)>int(num2):
。 这将避免您在开始时进行int()转换时遇到的麻烦,再加上用于int检查的返回字符串转换(
if(str(num1).isdigit())和(str(num2).isdigit()):
可以变成
if num1.isdigit()和num2.isdigit():
,因为num1,num2还没有被转换。)

或者,如果希望转换小数点而不出错,可以使用
float()
函数(该函数也可以方便地转换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!")

这反过来又使您不必验证下面的输入…

好吧,您知道他们说什么,“永远不要相信用户输入”。即使用户是你自己

语句:
input(“输入第一个整数:”)
返回一个字符串(您键入的字符串),然后将该字符串传递给
int()
,并尝试将其转换为整数

当给定一个字符串作为输入时,int函数要求该字符串严格地表示为整数(而不是浮点数,比如2.2)

您可以尝试第一行:
num1=int(输入(“输入第一个整数”)
;它何时升起,何时不升起

您发布的代码中的问题是,您首先尝试转换为int,然后检查输入是否为int。因此,Python解释器必须首先面对这个问题,并使用它自己的自动方式报告它:异常

解决这个问题的一种方法是将字符串->int转换推迟到实际需要时。幸运的是,在比较中,只有一个地方是:
if int(num1)>int(num2):
。 这将避免您在开始时进行int()转换时遇到的麻烦,再加上用于int检查的返回字符串转换(
if(str(num1).isdigit())和(str(num2).isdigit()):
可以变成
if num1.isdigit()和num2.isdigit():
,因为num1,num2还没有被转换。)

或者,如果希望转换小数点而不出错,可以使用
float()
函数(该函数也可以方便地转换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!")

这将使您无需验证下面的输入…

2.2是一个浮点数,不是int,但您正在尝试将其转换为int。您的代码在my pycharm编辑器中运行得非常好。只需删除int并编写num1=input(“输入第一个整数:”)。2.2是一个浮点,不是int,但您正试图将其转换为int。您的代码在我的pycharm编辑器中运行得非常好。只需删除int并写入num1=input(“输入第一个整数:”)。