鱼C论坛

 找回密码
 立即注册
查看: 1327|回复: 9

[已解决]为什么guess = int(guess)放在while就可以输入字符串结束

[复制链接]
发表于 2020-6-11 19:50:49 | 显示全部楼层 |阅读模式

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

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

x
guess = input("请输入你的分数:")
guess = int(guess)

while guess != "e":
    guess = int(guess)
    
    if guess == 100:
         print("S")
    if 90 <= guess < 100:
         print("A")
    if 80 <= guess < 90:
         print("B")
    if 60 <= guess < 80:
         print("c")
    if guess < 60:
         print("D")
    guess = input("请重新输入吧:")
   

我的理解是,程序是从上往下走的,最上面的两行代码随便输入一个数字,然后就到了下面的if进行判断,判断出了第一个数,也就进入到了循环里面,
下一次是从最底下的guess = input(" 请重新输入吧:")这里开始,进行判断,因为没有用int整型所以input,可以输入字符串,但是我将guess = input("请重新输入吧:")
中加入int进行整型就只能输入数字,输入了字符串"e"就会报错。




问题:
        为什么guess == int(guess)放在while下面,就可以输入字符串来结束程序,和放在while循环下面后,最顶上的guess = input("请输入你的分数:")不用整型,and,最底下的guess = input("请重新输入吧:")也不用进行整型。
最佳答案
2020-6-11 19:59:26
本帖最后由 Twilight6 于 2020-6-11 20:01 编辑

然后就到了下面的if进行判断,判断出了第一个数,也就进入到了循环里面

你这句话就错咯!是判断循环条件成立 进入循环才判断 if,而不是先判断 if 哦

但是我将guess = input("请重新输入吧:")
中加入int进行整型就只能输入数字,输入了字符串"e"就会报错。

因为你如果 guess 在while 最后一个执行,那么 这边的 guess 你输入完 首先判断的是 循环条件 guess != 'e' 是否等于 e ,而不会运行到你循环里面的 int

int 是转为整型,而字母不能转为整型, 所以才会导致你报错,但是这里判断的是先判断 while 而不是先转为整型 所以就不会报错   反之你直接 int 就会报错


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-11 19:52:59 | 显示全部楼层
因为后来有个guess = int(guess)啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-11 19:54:31 | 显示全部楼层
qiuyouzhi 发表于 2020-6-11 19:52
因为后来有个guess = int(guess)啊

哪个,大神可以说详细点嘛。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 19:56:31 | 显示全部楼层
zhp466 发表于 2020-6-11 19:54
哪个,大神可以说详细点嘛。

我说的这一步,其实就是把guess转换成int的步骤。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 19:59:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-6-11 20:01 编辑

然后就到了下面的if进行判断,判断出了第一个数,也就进入到了循环里面

你这句话就错咯!是判断循环条件成立 进入循环才判断 if,而不是先判断 if 哦

但是我将guess = input("请重新输入吧:")
中加入int进行整型就只能输入数字,输入了字符串"e"就会报错。

因为你如果 guess 在while 最后一个执行,那么 这边的 guess 你输入完 首先判断的是 循环条件 guess != 'e' 是否等于 e ,而不会运行到你循环里面的 int

int 是转为整型,而字母不能转为整型, 所以才会导致你报错,但是这里判断的是先判断 while 而不是先转为整型 所以就不会报错   反之你直接 int 就会报错


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-11 20:25:06 | 显示全部楼层
Twilight6 发表于 2020-6-11 19:59
你这句话就错咯!是判断循环条件成立 进入循环才判断 if,而不是先判断 if 哦

嗷,那也就是他程序运行到最底下的guess = input(“请重新输入吧”)这里后,就先判断while,我输入的这个数
是不是等于e,然后在进行整型数字,在接着下面的if判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-11 20:26:21 | 显示全部楼层
如果是e的话就直接结束程序,不是的话就进行整型然后if判断,是这样嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 20:27:17 | 显示全部楼层
zhp466 发表于 2020-6-11 20:26
如果是e的话就直接结束程序,不是的话就进行整型然后if判断,是这样嘛?

对 , 所以先被判断掉了,如果你直接 int ,那么就会报错  因为 e 不能转为整型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-11 20:29:16 | 显示全部楼层
Twilight6 发表于 2020-6-11 20:27
对 , 所以先被判断掉了,如果你直接 int ,那么就会报错  因为 e 不能转为整型

嗷嗷,谢谢大佬指教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 20:29:45 | 显示全部楼层
zhp466 发表于 2020-6-11 20:29
嗷嗷,谢谢大佬指教。

客气了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 19:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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