sheap 发表于 前天 19:15

作品分享的第三天"Guess Game"

"Guess Game"作品代码(拷贝即用):

import time
import random
play_the_game = True
score = 0
print("Let's play a game!")
print('I will write some numbers,you must remeber them,and write them out.')
anser = str(input('Would you play with me?Please answer Yes or No.'))
while play_the_game:
    if anser == 'Yes':
      right_anser = random.randint(10000000,99999999)
      print('You have three seconds to remeber the right anser:',right_anser)
      print(3)
      time.sleep(1)
      print(2)
      time.sleep(1)
      print(1)
      time.sleep(1)
      print('\n'*44)
      anser = int(input('What is the right answer?'))
      if anser == right_anser:
            print('Yes,you are right!')
            score = score + 1
            anser = 'Yes'
            continue
      else:
            print('The right number is',right_anser,',you need to remeber it quiekly!')
            print('Your score is',score)
            break
    else:
      if anser == 'No':
            print('OK...')
            play_the_game = False
      else:
            print('Please say Yes or No.')
            continue

可以给些建议,谢谢🙏
(后期会更新)

FishC 发表于 前天 19:16

这是一个很好的小游戏练手作品,思路清晰,能正常运行已经非常棒了。我整理了一些改进建议,希望能帮你把代码写得更规范、更易扩展:

1. 变量命名与拼写

[*] anser 拼写应是 answer
[*] remeber 应是 remember
[*] quiekly 应是 quickly
[*] right_anser 可改为 target_number 更容易理解

统一规范后,别人读代码时不会产生困惑。

2. 去掉不必要的循环陷阱

[*] 主循环 while play_the_game 中,当回答正确后 anser = 'Yes' 并 continue,导致下一次循环又会问“要不要玩”——这不符合直觉。建议把“是否开始”的选择放到循环之前,循环内只处理一局游戏的逻辑。
[*] 回答错误时 break 退出循环。但是当玩家刚开始回答 'No' 时设置 play_the_game = False 也会退出。逻辑可以更清晰:循环直接控制是否进行新一局。


3. 增加输入检查与容错

[*] 输入答案后直接 int(input(...)) 如果输入非数字会报错。建议用 try...except 捕获 ValueError,提示用户重新输入数字。
[*] 对“Yes/No”的回答,可以统一转为小写再判断,避免用户输入大小写混合导致意外。


4. 清屏方式的改进

[*] print('\n'*44) 在部分终端可能不能完全清屏,而且会滚动很多空行。更规范的做法是用 os.system('cls' if os.name == 'nt' else 'clear'),需要先 import os。
[*] 如果考虑到跨平台兼容,也可以继续用换行,但建议打印更多行(比如80行)以确保数字被完全覆盖。


5. 代码结构优化
可以把游戏的核心逻辑封装成一个函数,方便重复调用。例如:

def play_round():
    target = random.randint(10000000, 99999999)
    print('记住这个数字:', target)
    # 倒计时 ...
    # 清屏 ...
    # 获取用户输入并判断 ...
    return 是否答对

这样主循环只需要关心要不要继续玩,分数维护也清晰。

6. 扩展建议(后期可更新)

[*] 增加难度选择:数字长度可以从6位、8位、10位变化。
[*] 增加倒计时视觉效果:用 time.sleep 配合 print 稍微美化一下进度条。
[*] 记录最高分:用文件持久化保存,下次启动时显示历史最佳。
[*] 加入重复玩并累计总分的功能(目前只有单局分)。


总的来说,你的代码已经具备了核心玩法,把这些小细节打磨一下,就会更像一个完整的作品。继续加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 作品分享的第三天"Guess Game"