鱼C论坛

 找回密码
 立即注册
查看: 1876|回复: 12

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

[复制链接]
发表于 2020-8-29 21:20:14 | 显示全部楼层 |阅读模式

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

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

x
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)
    if  guess<answer:
            print('害 小了小了')
    if  guess>answer:
            print('还是不对 大了')
print('猜对啦')
print('不过并没有奖励')
print('游戏结束不玩了88')
以上是程序 到第一个while的时候就陷入了死循环 无论我输入什么都是提示“说一个1到10的整数” 怎么办啊 自己找好久了也没有发现毛病
最佳答案
2020-8-29 21:24:57
isinstance() 函数来判断一个对象是否是一个已知的类型
temp=input('不妨说说你心里想的数字')
while   isinstance(temp,int)==False:
input输入的是字符串,这个判断一直成立,所以无法运行下去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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:

    if  guess<answer:
            print('害 小了小了')
    if  guess>answer:
            print('还是不对 大了')
     temp=input('猜错了 重新猜')
     guess=int(temp)
print('猜对啦')
print('不过并没有奖励')
print('游戏结束不玩了88')
这样,因为你在判断之前让用户重新输入了,而且第一个循环处,input接收到的是字符型变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 21:24:57 | 显示全部楼层    本楼为最佳答案   
isinstance() 函数来判断一个对象是否是一个已知的类型
temp=input('不妨说说你心里想的数字')
while   isinstance(temp,int)==False:
input输入的是字符串,这个判断一直成立,所以无法运行下去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-8-29 21:28:57 | 显示全部楼层
三楼正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-29 22:15:15 | 显示全部楼层
疾风怪盗 发表于 2020-8-29 21:24
isinstance() 函数来判断一个对象是否是一个已知的类型

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

恍然大悟 谢谢大佬 但是应该怎么修改一下才能继续下去呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了 但是应该怎么修改一下才能继续进行下去呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 22:33:06 | 显示全部楼层
孙赖 发表于 2020-8-29 22:22
明白了 但是应该怎么修改一下才能继续进行下去呢

Python isdigit() 方法检测字符串是否只由数字组成。
while   temp.isdigit()==False:
要么像2楼这样,加个int()转换,但是可能会报错,要么就用这个函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-8-29 22:53:02 | 显示全部楼层
疾风怪盗 发表于 2020-8-29 22:33
Python isdigit() 方法检测字符串是否只由数字组成。

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

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

使用道具 举报

发表于 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:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-30 10:19:03 | 显示全部楼层
开心超仁 发表于 2020-8-29 22:55
我是个小白,可能代码可以更简洁

这个

谢谢你 可是我刚刚跑了下好像输错多少次也不会停止呀 今天在弄次数怎么也搞不好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 12:58:03 From FishC Mobile | 显示全部楼层
孙赖 发表于 2020-8-29 22:22
明白了 但是应该怎么修改一下才能继续进行下去呢

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

使用道具 举报

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

我试了可以啊猜对了就会停
如果你想猜错几次就不猜了那得另外加,这个代码原本没有这个功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的那个turn是猜出来1把,不是猜1次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 03:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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