孙赖 发表于 2020-8-29 21:20:14

新手小白 为什么我自己写的程序进入了死循环

import random
answer=random.randint(1,10)
print('hello hello')
temp=input('不妨说说你心里想的数字')
while   isinstance(temp,int)==False:
    temp=input('说一个1到10的整数')
guess=int(temp)
while   guess!=answer:
    temp=input('猜错了 重新猜')
    guess=int(temp)
    ifguess<answer:
            print('害 小了小了')
    ifguess>answer:
            print('还是不对 大了')
print('猜对啦')
print('不过并没有奖励')
print('游戏结束不玩了88')
以上是程序 到第一个while的时候就陷入了死循环 无论我输入什么都是提示“说一个1到10的整数” 怎么办啊 自己找好久了也没有发现毛病{:5_100:}

1q23w31 发表于 2020-8-29 21:23:10

本帖最后由 1q23w31 于 2020-8-29 21:27 编辑


import random
answer=random.randint(1,10)
print('hello hello')
temp=int(input('不妨说说你心里想的数字'))
while   isinstance(temp,int)==False:
    temp=input('说一个1到10的整数')
guess=int(temp)
while   guess!=answer:

    ifguess<answer:
            print('害 小了小了')
    ifguess>answer:
            print('还是不对 大了')
   temp=input('猜错了 重新猜')
   guess=int(temp)
print('猜对啦')
print('不过并没有奖励')
print('游戏结束不玩了88')
这样,因为你在判断之前让用户重新输入了,而且第一个循环处,input接收到的是字符型变量

疾风怪盗 发表于 2020-8-29 21:24:57

isinstance() 函数来判断一个对象是否是一个已知的类型
temp=input('不妨说说你心里想的数字')
while   isinstance(temp,int)==False:
input输入的是字符串,这个判断一直成立,所以无法运行下去

昨非 发表于 2020-8-29 21:28:57

三楼正解

孙赖 发表于 2020-8-29 22:15:15

疾风怪盗 发表于 2020-8-29 21:24
isinstance() 函数来判断一个对象是否是一个已知的类型

input输入的是字符串,这个判断一直成立,所以无 ...

恍然大悟 谢谢大佬 但是应该怎么修改一下才能继续下去呢

孙赖 发表于 2020-8-29 22:22:39

1q23w31 发表于 2020-8-29 21:23
这样,因为你在判断之前让用户重新输入了,而且第一个循环处,input接收到的是字符型变量

明白了 但是应该怎么修改一下才能继续进行下去呢

疾风怪盗 发表于 2020-8-29 22:33:06

孙赖 发表于 2020-8-29 22:22
明白了 但是应该怎么修改一下才能继续进行下去呢

Python isdigit() 方法检测字符串是否只由数字组成。
while   temp.isdigit()==False:
要么像2楼这样,加个int()转换,但是可能会报错,要么就用这个函数

孙赖 发表于 2020-8-29 22:53:02

疾风怪盗 发表于 2020-8-29 22:33
Python isdigit() 方法检测字符串是否只由数字组成。

要么像2楼这样,加个int()转换,但是可能会报错 ...

会了 非常感谢

开心超仁 发表于 2020-8-29 22:55:07

import random
answer=random.randint(1,10)
print('hello hello')
temp=input('不妨说说你心里想的数字')
turn=0 #游戏第几轮
while turn<1: #小于一轮就循环
    if 1<=int(temp)<=10:#判断输入的合不合规
      guess=int(temp)
      while guess!=answer:
            if guess<answer:
                print('害 小了小了')
            if guess>answer:
                print('还是不对 大了') #这两个小了大了我放上面了,我觉得先说大还是小再猜比较好
            temp=input('猜错了 重新猜')
            guess=int(temp)
      print('猜对啦')
      print('不过并没有奖励')
      print('游戏结束不玩了88')
      turn+=1 #正常玩完才算一轮
               #输入别的会进入下面的else
    else:
      temp=input('请猜一个1到10的数字哦')

我是个小白,可能代码可以更简洁

这个turn=0 #游戏第几轮
while turn<1: #小于一轮就循环
就是我定的只要玩一局就停,可以改比如玩三局停就
while turn<3
一直玩也可以不要turn
直接while True:{:10_257:}

孙赖 发表于 2020-8-30 10:19:03

开心超仁 发表于 2020-8-29 22:55
我是个小白,可能代码可以更简洁

这个


谢谢你 可是我刚刚跑了下好像输错多少次也不会停止呀 今天在弄次数怎么也搞不好{:5_104:}

小破竹林 发表于 2020-8-30 12:58:03

孙赖 发表于 2020-8-29 22:22
明白了 但是应该怎么修改一下才能继续进行下去呢

改成int(input())

开心超仁 发表于 2020-8-30 15:57:22

孙赖 发表于 2020-8-30 10:19
谢谢你 可是我刚刚跑了下好像输错多少次也不会停止呀 今天在弄次数怎么也搞不好

我试了可以啊猜对了就会停
如果你想猜错几次就不猜了那得另外加,这个代码原本没有这个功能{:10_257:}

开心超仁 发表于 2020-8-30 15:57:57

孙赖 发表于 2020-8-30 10:19
谢谢你 可是我刚刚跑了下好像输错多少次也不会停止呀 今天在弄次数怎么也搞不好

我的那个turn是猜出来1把,不是猜1次{:10_257:}
页: [1]
查看完整版本: 新手小白 为什么我自己写的程序进入了死循环