鱼C论坛

 找回密码
 立即注册
查看: 787|回复: 14

[已解决]请大神们帮我看一下为什么输入了整数依然无法跳出循环

[复制链接]
发表于 2020-4-20 16:15:44 | 显示全部楼层 |阅读模式

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

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

x
import random
secret = random.randint(1,10)
print("欢迎来到阿轩的程序")
temp = input("请输入你所猜测的数字,从0到10:")

while type(temp) != type(int):
    print("输入不合法,请重新输入!")
    temp = input("请重新输入:")
   
guess = int(temp)
   
if guess == secret:
    print("猜对了,你是我脑子里的蛔虫吗!")
    print("牛逼!")
else:   
    while guess != secret:
        temp = input("错了,请重新输入!")
        guess = int(temp)
        if guess == secret:
            print("猜对了,你是钰轩脑子里的蛔虫吗!")
            print("牛逼!")
        else:
            if guess > secret:
                print("大了大了!")
            else:
                print("小了小了!")
print("游戏结束!")
最佳答案
2020-4-20 18:20:53
本帖最后由 均昊山 于 2020-4-20 19:11 编辑

以下假设变量a为10,变量b为20:
==    等于 - 比较对象是否相等                 (a == b) 返回 False。
!=        不等于 - 比较两个对象是否不相等     (a != b) 返回 true.

第一 方法改成  while type(temp) == type(int): 就好了 小提示type(int)是字符串 type(int())才是int


第二方法改成int(input())小提示用户输入是数字 不是int类型可以print  type(temp) 显示字符串

其实怎么改代买逻辑有问题,后面guess = int(temp)赋值 就报错,

兄弟你参考一下 建议isdigit()方法判断用户输入
import random
secret = random.randint(1,10)
print("欢迎来到阿轩的程序")
temp = input("请输入你所猜测的数字,从0到10:")

while (temp.isdigit()) == False:
   
    print("输入不合法,请重新输入!")
    temp = input("请重新输入:")
   
guess = int(temp)
   
if guess == secret:
    print("猜对了,你是我脑子里的蛔虫吗!")
    print("牛逼!")
else:   
    while guess != secret:
        temp = input("错了,请重新输入!")
        guess = int(temp)
        if guess == secret:
            print("猜对了,你是钰轩脑子里的蛔虫吗!")
            print("牛逼!")
        else:
            if guess > secret:
                print("大了大了!")
            else:
                print("小了小了!")
print("游戏结束!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-20 16:17:30 | 显示全部楼层
你看你的代码,temp是个字符串(直接用input输入的)
你这时候用type比较怎么可能一样嘛。
你应该用isdigit。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-4-20 16:28:02 | 显示全部楼层
while type(temp) != type(int):
    print("输入不合法,请重新输入!")
    temp = input("请重新输入:")
问题出在这,temp是input函数返回的结果,一定是字符串,其类型一定不是整型。也就是无限循环。
如果我说的对, 给个最佳答案呗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 16:30:07 | 显示全部楼层
上面说的是对的,你可以用int(temp),强制转换成整型,捕获报错,如果报错跳出循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 16:33:00 | 显示全部楼层
会计的会怎么念 发表于 2020-4-20 16:30
上面说的是对的,你可以用int(temp),强制转换成整型,捕获报错,如果报错跳出循环。

他应该还没学try-except吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 16:35:02 | 显示全部楼层
本帖最后由 sunrise085 于 2020-4-20 16:37 编辑

你的while循环的条件写的不对,input()输入的永远都是字符串,你用type(temp)得到的不可能是int
应该用temp.isdecimal()来判断输入的是不是数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 17:55:40 | 显示全部楼层
qiuyouzhi 发表于 2020-4-20 16:33
他应该还没学try-except吧

额。。。。。反正都是要学的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 17:56:32 | 显示全部楼层
会计的会怎么念 发表于 2020-4-20 17:55
额。。。。。反正都是要学的!

是要学,可是现在没学到
所以不能用(不会用)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 18:20:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 均昊山 于 2020-4-20 19:11 编辑

以下假设变量a为10,变量b为20:
==    等于 - 比较对象是否相等                 (a == b) 返回 False。
!=        不等于 - 比较两个对象是否不相等     (a != b) 返回 true.

第一 方法改成  while type(temp) == type(int): 就好了 小提示type(int)是字符串 type(int())才是int


第二方法改成int(input())小提示用户输入是数字 不是int类型可以print  type(temp) 显示字符串

其实怎么改代买逻辑有问题,后面guess = int(temp)赋值 就报错,

兄弟你参考一下 建议isdigit()方法判断用户输入
import random
secret = random.randint(1,10)
print("欢迎来到阿轩的程序")
temp = input("请输入你所猜测的数字,从0到10:")

while (temp.isdigit()) == False:
   
    print("输入不合法,请重新输入!")
    temp = input("请重新输入:")
   
guess = int(temp)
   
if guess == secret:
    print("猜对了,你是我脑子里的蛔虫吗!")
    print("牛逼!")
else:   
    while guess != secret:
        temp = input("错了,请重新输入!")
        guess = int(temp)
        if guess == secret:
            print("猜对了,你是钰轩脑子里的蛔虫吗!")
            print("牛逼!")
        else:
            if guess > secret:
                print("大了大了!")
            else:
                print("小了小了!")
print("游戏结束!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 18:46:39 | 显示全部楼层
qiuyouzhi 发表于 2020-4-20 17:56
是要学,可是现在没学到
所以不能用(不会用)

我都是print定位问题的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-21 01:43:08 | 显示全部楼层
qiuyouzhi 发表于 2020-4-20 16:17
你看你的代码,temp是个字符串(直接用input输入的)
你这时候用type比较怎么可能一样嘛。
你应该用isdig ...

感谢,明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-21 01:44:04 | 显示全部楼层
均昊山 发表于 2020-4-20 18:20
以下假设变量a为10,变量b为20:
==    等于 - 比较对象是否相等                 (a == b) 返回 False。
...

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

使用道具 举报

 楼主| 发表于 2020-4-21 01:44:58 | 显示全部楼层
sunrise085 发表于 2020-4-20 16:35
你的while循环的条件写的不对,input()输入的永远都是字符串,你用type(temp)得到的不可能是int
应该用tem ...

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

使用道具 举报

 楼主| 发表于 2020-4-21 01:47:15 | 显示全部楼层
coolsummer2080 发表于 2020-4-20 16:28
问题出在这,temp是input函数返回的结果,一定是字符串,其类型一定不是整型。也就是无限循环。
如果我 ...

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

使用道具 举报

发表于 2020-4-21 07:44:10 | 显示全部楼层

那就设个最佳答案吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 16:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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