鱼C论坛

 找回密码
 立即注册
查看: 1763|回复: 6

[已解决]while用法

[复制链接]
发表于 2022-5-1 15:51:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
# not操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase
while not isinstance(temp, int):
    print("抱歉,输入不合法,", end='')
    temp = input("请输入一个整数:")

while在这个语句中是什么意思啊
最佳答案
2022-5-14 20:28:50

这里代码的理想作用是判断 temp 输入是否合法,但是这段代码是错误的

因为 input 函数返回的永远是字符串,而 isinstance 函数判断 temp 是否为 int 整型 就永不成立

即一定返回 False ,但是因为前面进行了 not 取反,那么就会导致 while 循环条件必成立,导致死循环

所以不能使用 isinstance 函数,你可以使用字符串方法 indigit() 函数来判断字符串是否是纯数字字符串

参考代码:
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
while not temp.isdigit():
    print("抱歉,输入不合法,", end='')
    temp = input("请输入一个整数:")
temp = int(temp)
print("你输入的整数为:", temp)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-2 08:04:00 From FishC Mobile | 显示全部楼层
如果输入的不是整型数字,那么就一直循环输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 09:40:01 | 显示全部楼层
这是死循环了吧,感觉终止不了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 21:45:49 | 显示全部楼层
try:
    temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
except:
    print(输入有误)
# not操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase
while not isinstance(temp, int):
    try:
        temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
    except:
        print("抱歉,输入不合法,", end='')
你试试这个我修改过的代码,看看行不行(不改还真没法终止,当然神奇的Ctrl+C例外
注:while是当后面的条件返回值为True,或用bool检测为True的(有些不行),则一直执行,否则结束循环
注:isinstance是判断第一个参数是否属于第二个参数,是返回True,否返回False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-3 22:12:14 | 显示全部楼层
try:
    temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
except:
    print(‘输入有误’)
# not操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase
while not isinstance(temp, int):
    try:
        temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
    except:
        print("抱歉,输入不合法,", end='')
#@lisa冲冲冲 记得的代码要用代码格式公布!!!
while在这里的意思就是:如果用户输入错误,就让用户重新输入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-3 22:21:33 | 显示全部楼层
同问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-14 20:28:50 | 显示全部楼层    本楼为最佳答案   

这里代码的理想作用是判断 temp 输入是否合法,但是这段代码是错误的

因为 input 函数返回的永远是字符串,而 isinstance 函数判断 temp 是否为 int 整型 就永不成立

即一定返回 False ,但是因为前面进行了 not 取反,那么就会导致 while 循环条件必成立,导致死循环

所以不能使用 isinstance 函数,你可以使用字符串方法 indigit() 函数来判断字符串是否是纯数字字符串

参考代码:
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
while not temp.isdigit():
    print("抱歉,输入不合法,", end='')
    temp = input("请输入一个整数:")
temp = int(temp)
print("你输入的整数为:", temp)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 08:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表