|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 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 = '' )
|
|