鱼C论坛

 找回密码
 立即注册
查看: 1470|回复: 3

[已解决]猜数字游戏使用最后一次机会后代码不执行

[复制链接]
发表于 2018-2-1 22:07:42 | 显示全部楼层 |阅读模式

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

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

x
各位大大好:
        小弟写了一段猜数字小游戏代码后,发现在使用最后一次机会后,不执行“机会用完”或“猜对了恭喜”的代码。
        麻烦各位大大协助看下,谢谢。
        代码如下:

#引入随机模块
import random

#设定在1-2之间随机生成一个数字
num = random.randint ( 1,2 )

#设置猜数字的次数
count = 0

#提醒用户猜数字
guess = eval ( input( "请猜一个1-2的数字:" ) )

#循环执行以下语句
while count != 2  :

#如果用户在第二次及后面的次数中猜对了,执行
    if guess == num :
        print("恭喜你!猜对啦!\n正确的数字就是", guess)
        break

#如果用户一直没有猜对,执行
    if guess > num :
        print ( "你猜的数字太大啦!你还有" , 3 - ( count + 1 ) , "次机会!再猜一次:",end = '' )
        guess = eval ( input (  ) )
        count = count + 1

    if guess < num :
        print ( "你猜的数字太小啦!你还有" , 3 - ( count + 1 ) , "次机会!再猜一次:",end = '' )
        guess = eval ( input (  ) )
        count = count + 1

#如果用户次数用完了,执行
    else :
         print ( "很抱歉,机会已用完,祝你好运!" )

最佳答案
2018-2-2 14:51:25
本帖最后由 冰封雪舞 于 2018-2-2 15:03 编辑

因为while count != 2  :这句所以你最后一次机会的时候,等到使用者输入完后,后边count=count+1,这时coutn=2了而后循环while count!=2!条件不满足,就不进入循环了,所以最后一次机会其实没进入循环,自然也就不执行了,所以你while count != 2  :这句改成while count != 3 :就可以了。但是会多出一个0次机会的bug。另外else最好移到循环外,因为在循环里边逻辑上没有满足else的条件,所以无法执行这一句。针对这个0次bug,在你这种方法的基础上修改了下程序,如下:

#引入随机模块
import random
#设定在1-2之间随机生成一个数字
num = random.randint ( 1,2 )
#设置猜数字的次数
count = 0
#循环执行以下语句
while count != 3  :
    guess = eval ( input ( "请猜一个1-2的数字:"  ) )
    count = count + 1        
#如果用户在第二次及后面的次数中猜对了,执行
    if guess == num :
        print("恭喜你!猜对啦!\n正确的数字就是", guess)
        break
#如果用户一直没有猜对,执行
    elif guess > num :
        if count==3:
            print("你猜的数字太大啦!,抱歉机会用完了,祝你好运!")
        else:
            print ( "你猜的数字太大啦!你还有" , 3 -  count , "次机会!再猜一次:",end = '' )            
    elif guess < num :
        if count==3:
            print("你猜的数字太小啦!,抱歉机会用完了,祝你好运!")
        else:
            print ( "你猜的数字太小啦!你还有" , 3 -  count  , "次机会!再猜一次:",end = '' )
     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-1 22:23:40 | 显示全部楼层
你逻辑问题,3个if已经把所有情况包括了,输入正常情况下,
而else缩进表示针对最后一个if,即你猜的不小也能出现机会用完,循环却没有完
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-1 22:23:56 | 显示全部楼层
最后一个else的缩进不对,应该和while一致。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-2 14:51:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 冰封雪舞 于 2018-2-2 15:03 编辑

因为while count != 2  :这句所以你最后一次机会的时候,等到使用者输入完后,后边count=count+1,这时coutn=2了而后循环while count!=2!条件不满足,就不进入循环了,所以最后一次机会其实没进入循环,自然也就不执行了,所以你while count != 2  :这句改成while count != 3 :就可以了。但是会多出一个0次机会的bug。另外else最好移到循环外,因为在循环里边逻辑上没有满足else的条件,所以无法执行这一句。针对这个0次bug,在你这种方法的基础上修改了下程序,如下:

#引入随机模块
import random
#设定在1-2之间随机生成一个数字
num = random.randint ( 1,2 )
#设置猜数字的次数
count = 0
#循环执行以下语句
while count != 3  :
    guess = eval ( input ( "请猜一个1-2的数字:"  ) )
    count = count + 1        
#如果用户在第二次及后面的次数中猜对了,执行
    if guess == num :
        print("恭喜你!猜对啦!\n正确的数字就是", guess)
        break
#如果用户一直没有猜对,执行
    elif guess > num :
        if count==3:
            print("你猜的数字太大啦!,抱歉机会用完了,祝你好运!")
        else:
            print ( "你猜的数字太大啦!你还有" , 3 -  count , "次机会!再猜一次:",end = '' )            
    elif guess < num :
        if count==3:
            print("你猜的数字太小啦!,抱歉机会用完了,祝你好运!")
        else:
            print ( "你猜的数字太小啦!你还有" , 3 -  count  , "次机会!再猜一次:",end = '' )
     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 07:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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