马钰乔布轩 发表于 2020-4-20 16:15:44

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

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("游戏结束!")

qiuyouzhi 发表于 2020-4-20 16:17:30

你看你的代码,temp是个字符串(直接用input输入的)
你这时候用type比较怎么可能一样嘛。
你应该用isdigit。

coolsummer2080 发表于 2020-4-20 16:28:02

while type(temp) != type(int):
    print("输入不合法,请重新输入!")
    temp = input("请重新输入:")
问题出在这,temp是input函数返回的结果,一定是字符串,其类型一定不是整型。也就是无限循环。
如果我说的对,{:5_109:} 给个最佳答案呗。{:5_101:}

会计的会怎么念 发表于 2020-4-20 16:30:07

上面说的是对的,你可以用int(temp),强制转换成整型,捕获报错,如果报错跳出循环。

qiuyouzhi 发表于 2020-4-20 16:33:00

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

他应该还没学try-except吧

sunrise085 发表于 2020-4-20 16:35:02

本帖最后由 sunrise085 于 2020-4-20 16:37 编辑

你的while循环的条件写的不对,input()输入的永远都是字符串,你用type(temp)得到的不可能是int
应该用temp.isdecimal()来判断输入的是不是数字

会计的会怎么念 发表于 2020-4-20 17:55:40

qiuyouzhi 发表于 2020-4-20 16:33
他应该还没学try-except吧

额。。。。。反正都是要学的!

qiuyouzhi 发表于 2020-4-20 17:56:32

会计的会怎么念 发表于 2020-4-20 17:55
额。。。。。反正都是要学的!

是要学,可是现在没学到
所以不能用(不会用)

均昊山 发表于 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类型可以printtype(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("游戏结束!")

均昊山 发表于 2020-4-20 18:46:39

qiuyouzhi 发表于 2020-4-20 17:56
是要学,可是现在没学到
所以不能用(不会用)

我都是print定位问题的~

马钰乔布轩 发表于 2020-4-21 01:43:08

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

感谢,明白了!

马钰乔布轩 发表于 2020-4-21 01:44:04

均昊山 发表于 2020-4-20 18:20
以下假设变量a为10,变量b为20:
==    等于 - 比较对象是否相等               (a == b) 返回 False。
...

感谢,大神!

马钰乔布轩 发表于 2020-4-21 01:44:58

sunrise085 发表于 2020-4-20 16:35
你的while循环的条件写的不对,input()输入的永远都是字符串,你用type(temp)得到的不可能是int
应该用tem ...

感谢,大神!

马钰乔布轩 发表于 2020-4-21 01:47:15

coolsummer2080 发表于 2020-4-20 16:28
问题出在这,temp是input函数返回的结果,一定是字符串,其类型一定不是整型。也就是无限循环。
如果我 ...

感谢,大神!

qiuyouzhi 发表于 2020-4-21 07:44:10

马钰乔布轩 发表于 2020-4-21 01:43
感谢,明白了!

那就设个最佳答案吧~
页: [1]
查看完整版本: 请大神们帮我看一下为什么输入了整数依然无法跳出循环