鱼C论坛

 找回密码
 立即注册
查看: 1889|回复: 2

[已解决]关于猜数字的小游戏

[复制链接]
发表于 2022-12-1 11:05:03 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼提供的参考答案(经本人稍微修改):

#import random # 导入random模块 # 则下面对应必须使用random.randint()
from random import * # 则下面对应直接使用randint()


times = 3
secret = randint(1, 10) # 在1到10之间随机取值
print(secret)

print('----------我爱鱼C工作室----------')

guess = 0 # 这里先给guess赋值(赋一个绝对不等于secret的值)
print('不妨猜一下小甲鱼现在心里想的是哪个数字(%d次机会):' % times, end='') # print()默认是打印完字符串会自动添加一个换行符,end=''参数告诉print()用空格代替换行符,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?

while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times -= 1 # 或 times = times - 1

    if guess == secret:
        print('哎呀,你是小甲鱼心里的蛔虫吗?!')
        print('哼,猜中了也没有奖励!')
    else:
        if guess > secret:
            print('哥,大了大了哦~~!')
        else:
            print('嘿,小了!小了!!')
        if times > 0:
            print('还有%d次机会,再试一次吧:' % times, end='')
        else:
            print('%d次机会都用光咯T_T' % (times + 3))
            
print('游戏结束!不玩啦^_^')





因为刚开始学的都是temp=input(……),所以将代码修改如下:

#import random # 导入random模块 # 则下面对应必须使用random.randint()
from random import * # 则下面对应直接使用randint()


times = 3
secret = randint(1, 10) # 在1到10之间随机取值
print(secret)

print('----------我爱鱼C工作室----------')

guess = 0 # 这里先给guess赋值(赋一个绝对不等于secret的值)
temp = input('不妨猜一下小甲鱼现在心里想的是哪个数字(%d次机会):' % times) # print()默认是打印完字符串会自动添加一个换行符,end=''参数告诉print()用空格代替换行符,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?

while (guess != secret) and (times > 0):
    guess = int(temp)
    times -= 1 # 或 times = times - 1

    if guess == secret:
        print('哎呀,你是小甲鱼心里的蛔虫吗?!')
        print('哼,猜中了也没有奖励!')
    else:
        if guess > secret:
            print('哥,大了大了哦~~!')
        else:
            print('嘿,小了!小了!!')
        if times > 0:
            temp = input('还有%d次机会,再试一次吧:' % times)
        else:
            print('%d次机会都用光咯T_T' % (times + 3))
            
print('游戏结束!不玩啦^_^')





感觉应该可以继续简化,所以继续修改如下:

#import random # 导入random模块 # 则下面对应必须使用random.randint()
from random import * # 则下面对应直接使用randint()


times = 3
secret = randint(1, 10) # 在1到10之间随机取值
print(secret)

print('----------我爱鱼C工作室----------')

#guess = 0 # 这里先给guess赋值(赋一个绝对不等于secret的值)
temp = input('不妨猜一下小甲鱼现在心里想的是哪个数字(%d次机会):' % times) # print()默认是打印完字符串会自动添加一个换行符,end=''参数告诉print()用空格代替换行符,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?

while times > 0:
    guess = int(temp)
    times -= 1 # 或 times = times - 1

    if guess == secret:
        print('哎呀,你是小甲鱼心里的蛔虫吗?!')
        print('哼,猜中了也没有奖励!')
    else:
        if guess > secret:
            print('哥,大了大了哦~~!')
        else:
            print('嘿,小了!小了!!')
        if times > 0:
            temp = input('还有%d次机会,再试一次吧:' % times)
        else:
            print('%d次机会都用光咯T_T' % (times + 3))
            
print('游戏结束!不玩啦^_^')


运行后,如果第一次即猜中的话,返回结果如下:

3
----------我爱鱼C工作室----------
不妨猜一下小甲鱼现在心里想的是哪个数字(3次机会):3
哎呀,你是小甲鱼心里的蛔虫吗?!
哼,猜中了也没有奖励!
哎呀,你是小甲鱼心里的蛔虫吗?!
哼,猜中了也没有奖励!
哎呀,你是小甲鱼心里的蛔虫吗?!
哼,猜中了也没有奖励!
游戏结束!不玩啦^_^


【我的问题】

1、为何返回结果中“哎呀,你是小甲鱼心里的蛔虫吗?!哼,猜中了也没有奖励!“被打印了三次?

2、小甲鱼的代码中while (guess != secret) and (times > 0)为何要(guess != secret),不能直接while times > 0吗?
最佳答案
2022-12-1 11:10:14
本帖最后由 jhq999 于 2022-12-1 11:11 编辑

你的第二个问题是第一个问题的答案
就是为了猜中后直接退出,不要再循环输出time次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-1 11:10:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2022-12-1 11:11 编辑

你的第二个问题是第一个问题的答案
就是为了猜中后直接退出,不要再循环输出time次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-1 11:14:17 | 显示全部楼层
猜中了以后就要退出了,所以循环条件里要有(guess != secret),然后因为你把这个给删了,就打印了三次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 21:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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