赛酱想学编程 发表于 2022-7-3 19:07:30

关于Python004中的代码请教

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呢?这部分有什么作用吗??

6YKT6ZKm5LqI 发表于 2022-7-3 21:44:53

我也是新手{:10_250:},我的理解是: 让guess等于0就可以避免guess从一开始用户还没有输入的时候就等于secret的情况,如果一开始guess的值就等于secret,那么用户没有任何输入游戏就结束了;
至于end = " ",这样可以避免在打印完"不妨猜一下小甲鱼现在心里想的是哪个数字:"之后就换行,因为不设置end的话,print会默认在结尾换行,不换行的话用户输入好看一点点

jackz007 发表于 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)成立,从而,可以正常进入循环。

赛酱想学编程 发表于 2022-7-3 22:35:08

6YKT6ZKm5LqI 发表于 2022-7-3 21:44
我也是新手,我的理解是: 让guess等于0就可以避免guess从一开始用户还没有输入的时候就等于secre ...

那也就是说让guess=0的话是有可能出现一开始就游戏结束的情况吗??

赛酱想学编程 发表于 2022-7-3 22:36:13

jackz007 发表于 2022-7-3 22:04
end = 是 print() 函数的一个命名可选参数,如果不使用这个参数,那么这个参数的默认值是 end = '\ ...

怎么说,如果赋值赋值了1-10之间的某一个数的话会有什么不同吗?

jackz007 发表于 2022-7-3 23:02:49

本帖最后由 jackz007 于 2022-7-3 23:09 编辑

赛酱想学编程 发表于 2022-7-3 22:36
怎么说,如果赋值赋值了1-10之间的某一个数的话会有什么不同吗?

      那就不好说了,如果 guess 的数值和 secret 不同的话,一切都会正常,但是,万一两者的值恰好相同的话,就不会进入 while 循环执行,会直接跳到最后一句执行:
print("游戏结束,不玩啦^_^")
      你可以人为模拟这种情况,让 secret、guess 的值都是 0,然后,执行代码,看看会发生什么。
      写代码的一条重要原则,就是要杜绝这种不确定性,必须让代码严格按照我们预设的逻辑准确运行。

6YKT6ZKm5LqI 发表于 2022-7-3 23:14:57

赛酱想学编程 发表于 2022-7-3 22:35
那也就是说让guess=0的话是有可能出现一开始就游戏结束的情况吗??

guess=0就绝对不可能一开始就游戏结束,因为secret的值是1~9,只要给guess赋值不在这个范围,就可以避免游戏一开始就结束的情况

赛酱想学编程 发表于 2022-7-4 15:02:53

jackz007 发表于 2022-7-3 23:02
那就不好说了,如果 guess 的数值和 secret 不同的话,一切都会正常,但是,万一两者的值恰好 ...

好的,谢谢您!

赛酱想学编程 发表于 2022-7-4 15:05:09

6YKT6ZKm5LqI 发表于 2022-7-3 23:14
guess=0就绝对不可能一开始就游戏结束,因为secret的值是1~9,只要给guess赋值不在这个范围,就可以避免 ...

懂啦,谢谢!
页: [1]
查看完整版本: 关于Python004中的代码请教