比较俩个整数的大小,问题是不管while 的条件是true还是false,程序都执行else去了.
num1 = input("请输入第一个整数:")num2 = input("请输入第二个整数:")
while isinstance(num1,int) and isinstance(num2,int):
if num1 < num2:
print("第一个数比第二个小!")
if num1 > num2:
print("第一个数比第二个数大!")
if num1 == num2:
print("第一个数和第二个数一样大!")
break
else:
print("输入错误!")
print("结束!")
input()函数的返回值是str型,肯定不是int啊 num1 = int(input("请输入第一个整数:"))
前面加个int 就好了
只有以break结束循环 才不会走进循环的else input函数得到返回的是字符串,要将其转成整形,条件判断语句建议使用 elif lhgzbxhz 发表于 2020-11-1 15:29
input()函数的返回值是str型,肯定不是int啊
如果我num1,num2转换成int()。那么while isinstance(num1,int) and isinstance(num2,int):就没有意义了!
我只要输入整数才有效,输入浮点型和字符串就print("输入错误"),这样我该怎么改啊!
麻烦了! as695279622 发表于 2020-11-1 15:33
num1 = int(input("请输入第一个整数:"))
前面加个int 就好了
那按照你说的将num1,num2转换成int()。那么while isinstance(num1,int) and isinstance(num2,int):就没有意义了!(我要的是只有整数才比较大小,其他的就print("输入错误"))
感谢回答!
大马强 发表于 2020-11-1 15:56
input函数得到返回的是字符串,要将其转成整形,条件判断语句建议使用 elif
你好,我已经转为整型了num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
还是报错
请输入第一个整数:1.2
Traceback (most recent call last):
File "E:\python文件文件\第四章的\test5555.py", line 1, in <module>
num1 = int(input("请输入第一个整数:"))
ValueError: invalid literal for int() with base 10: '1.2'
>>> 星星飞 发表于 2020-11-1 16:25
如果我num1,num2转换成int()。那么while isinstance(num1,int) and isinstance(num2,int):就没有意义了 ...
用isdigit()函数,具体用法自行百度 kogawananari 发表于 2020-11-1 15:35
只有以break结束循环 才不会走进循环的else
我换了
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
if isinstance(num1,int) and isinstance(num2,int):
if num1 < num2:
print("第一个数比第二个小!")
if num1 > num2:
print("第一个数比第二个数大!")
if num1 == num2:
print("第一个数和第二个数一样大!")
else:
print("输入错误!")
print("结束!")
但是一输入浮点型或字符串就会报错:
================== RESTART: E:\python文件文件\第四章的\test5555.py ==================
请输入第一个整数:1
请输入第二个整数:2
第一个数比第二个小!
结束!
>>>
================== RESTART: E:\python文件文件\第四章的\test5555.py ==================
请输入第一个整数:1.2
Traceback (most recent call last):
File "E:\python文件文件\第四章的\test5555.py", line 1, in <module>
num1 = int(input("请输入第一个整数:"))
ValueError: invalid literal for int() with base 10: '1.2'
>>>
你为什么要用while呀? 大马强 发表于 2020-11-1 17:47
你为什么要用while呀?
我觉得用while好一些。
你觉得怎么做更好啊? 星星飞 发表于 2020-11-1 18:08
我觉得用while好一些。
你觉得怎么做更好啊?
用while的目的是什么?判断?
判断的话不是用if比较好吗?我刚开始以为你的while作用是让用户输入道整形才会跳出来,现在看来并不是 我刚刚去看了书和试了一下,字符转成整形会报错,比如int('a') 但int('12')就可以,int('1.2')不行,float('1.2')可以,所以要想实现你想要的功能,首先在输入后要判断,但你只能输入整形格式的字符了,所以跟你i想实现功能就很矛盾 大马强 发表于 2020-11-1 18:26
我刚刚去看了书和试了一下,字符转成整形会报错,比如int('a') 但int('12')就可以,int('1.2')不行,float('1 ...
意思就是说你除了输入整形格式的字符串,输入其他都会报错,但是还是有用一个方法可以来实现你的程序的功能,就是利用它的报错,要用到try语句,不知道你学到那里了没有,小甲鱼视频讲过 希望对你有帮助{:10_327:} 星星飞 发表于 2020-11-1 18:08
我觉得用while好一些。
你觉得怎么做更好啊?
这里推开代码错误不说,先说说 while 循环:
while 是条件循环,而你这里代码中运行完while 下面的代码块时候就直接执行了 break 退出了循环
所以不管你前面代码怎么样,只要进入 while 循环你的代码就执行一次循环,那么还不如直接用if-else 语法结构
而且while-else 的语法结构你应该还没学,while-else 是只有在 while 正常循环结束才会执行 else代码块
对于 你使用 isnstance() 函数,应该没理解好 input 函数的功能,input 函数是接受用户输入,并将其转换为字符串返回
所以 input 函数永远返回的是 str ,而不是 int ,所以你的while 循环条件不可能成立
你可以用 isdigit() ,只要字符串是纯数字,那么就会返回 True,否则返回 False
更改 if 后的以及使用 isdigit函数 的代码:
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")
if num1.isdigit() and num2.isdigit():
if num1 < num2:
print("第一个数比第二个小!")
if num1 > num2:
print("第一个数比第二个数大!")
if num1 == num2:
print("第一个数和第二个数一样大!")
else:
print("输入错误!")
print("结束!")
想加入循环反复输入可以这样:
while True:
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")
if num1.isdigit() and num2.isdigit():
if num1 < num2:
print("第一个数比第二个小!")
if num1 > num2:
print("第一个数比第二个数大!")
if num1 == num2:
print("第一个数和第二个数一样大!")
else:
print("输入错误,两个输入的数字都应该为整数!")
Twilight6 发表于 2020-11-1 18:36
这里推开代码错误不说,先说说 while 循环:
while 是条件循环,而你这里代码中运行完while 下面 ...
感谢! 大马强 发表于 2020-11-1 18:29
希望对你有帮助
很有帮助,谢谢!
页:
[1]