鱼C论坛

 找回密码
 立即注册
查看: 91|回复: 8

[已解决]关于Python004中的代码请教

[复制链接]
发表于 2022-7-3 19:07:30 | 显示全部楼层 |阅读模式

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

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

x
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
# 这里先给guess赋值(赋一个绝对不等于secret的值)
guess = 0

# print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
# 嗯,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times = times - 1 # 用户每输入一次,可用机会就-1
    if guess == secret:
        print("我草,你是小甲鱼心里的蛔虫吗?!")
        print("哼,猜中了也没有奖励!")
    else:
        if guess > secret:
            print("哥,大了大了~~~")
        else:
            print("嘿,小了,小了~~~")
        if times > 0:
            print("再试一次吧:", end=" ")
        else:
            print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")



萌新请教一下这一段代码中我标红的部分另secret=0有什么作用?;还有标绿的部分为什么需要加个end呢?这部分有什么作用吗??
最佳答案
2022-7-3 21:44:53
我也是新手,我的理解是: 让guess等于0就可以避免guess从一开始用户还没有输入的时候就等于secret的情况,如果一开始guess的值就等于secret,那么用户没有任何输入游戏就结束了;
至于end = " ",这样可以避免在打印完"不妨猜一下小甲鱼现在心里想的是哪个数字:"之后就换行,因为不设置end的话,print会默认在结尾换行,不换行的话用户输入好看一点点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-7-3 21:44:53 | 显示全部楼层    本楼为最佳答案   
我也是新手,我的理解是: 让guess等于0就可以避免guess从一开始用户还没有输入的时候就等于secret的情况,如果一开始guess的值就等于secret,那么用户没有任何输入游戏就结束了;
至于end = " ",这样可以避免在打印完"不妨猜一下小甲鱼现在心里想的是哪个数字:"之后就换行,因为不设置end的话,print会默认在结尾换行,不换行的话用户输入好看一点点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-7-3 22:04:12 | 显示全部楼层
        end = 是 print() 函数的一个命名可选参数,如果不使用这个参数,那么这个参数的默认值是 end = '\n',就是说,在默认情况下,print() 在输出完内容后会自动附加一个换行符 '\n',那么,下一次再调用 print() 的时候,打印的内容就会从下一行的行首开始。如果使用了 end = " ",那么,在打印完内容后,就不再附加回车换行了,取而代之的是一个空格字符 " "。
        之所以在循环开始前为 guess 赋 0 值,是因为 secret 的值为 1 ~ 10 不可能为 0,while 的循环条件(guess != secret and times > 0)成立,从而,可以正常进入循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-7-3 22:35:08 | 显示全部楼层
6YKT6ZKm5LqI 发表于 2022-7-3 21:44
我也是新手,我的理解是: 让guess等于0就可以避免guess从一开始用户还没有输入的时候就等于secre ...

那也就是说让guess=0的话是有可能出现一开始就游戏结束的情况吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-7-3 22:36:13 | 显示全部楼层
jackz007 发表于 2022-7-3 22:04
end = 是 print() 函数的一个命名可选参数,如果不使用这个参数,那么这个参数的默认值是 end = '\ ...

怎么说,如果赋值赋值了1-10之间的某一个数的话会有什么不同吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-7-3 23:02:49 | 显示全部楼层
本帖最后由 jackz007 于 2022-7-3 23:09 编辑
赛酱想学编程 发表于 2022-7-3 22:36
怎么说,如果赋值赋值了1-10之间的某一个数的话会有什么不同吗?


        那就不好说了,如果 guess 的数值和 secret 不同的话,一切都会正常,但是,万一两者的值恰好相同的话,就不会进入 while 循环执行,会直接跳到最后一句执行:
  1. print("游戏结束,不玩啦^_^")
复制代码

        你可以人为模拟这种情况,让 secret、guess 的值都是 0,然后,执行代码,看看会发生什么。
        写代码的一条重要原则,就是要杜绝这种不确定性,必须让代码严格按照我们预设的逻辑准确运行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-7-3 23:14:57 | 显示全部楼层
赛酱想学编程 发表于 2022-7-3 22:35
那也就是说让guess=0的话是有可能出现一开始就游戏结束的情况吗??

guess=0就绝对不可能一开始就游戏结束,因为secret的值是1~9,只要给guess赋值不在这个范围,就可以避免游戏一开始就结束的情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-7-4 15:02:53 | 显示全部楼层
jackz007 发表于 2022-7-3 23:02
那就不好说了,如果 guess 的数值和 secret 不同的话,一切都会正常,但是,万一两者的值恰好 ...

好的,谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-7-4 15:05:09 | 显示全部楼层
6YKT6ZKm5LqI 发表于 2022-7-3 23:14
guess=0就绝对不可能一开始就游戏结束,因为secret的值是1~9,只要给guess赋值不在这个范围,就可以避免 ...

懂啦,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2022-8-17 18:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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