Python实现循环逐次向字符串添加随机字母的记忆程序方法
Python记忆测试程序实现
核心规则
- 程序首次运行打印3个随机小写字母
- 提示玩家输入刚才展示的字母序列
- 玩家输入正确则展示长度为4的全新随机字母序列(与上一轮序列完全不同)
- 连续答对则持续提升序列长度,每次长度加1,且每轮序列均与上一轮不同
- 玩家输入错误则程序直接终止
交互示例
The pattern is:
a f c
What is the pattern shown?: a f c
That is correct!
The pattern is:
g h t k
What is the pattern shown?: g h t
Sorry, that is incorrect!
** end of program **
原有参考代码问题
给出的参考代码存在多处无法运行、不符合需求的问题:
- 语法错误:函数内部代码没有正确缩进,Python无法正常解析
- 缺少依赖导入:用到的
random、string、time模块均未提前导入 - 初始长度错误:初始序列从1个字母开始累加,不符合首次展示3个字母的要求
- 循环逻辑错误:固定循环5次就结束,不符合「答对就持续增加长度」的规则
- 缺少重复校验:没有判断新生成的序列是否和上一轮一致
- 文案不匹配:提示语、结束提示和需求给出的示例不一致
原有参考代码如下:
def easyLevel(): i = 0 pattern = random.choice(string.ascii_lowercase) for i in range (5): pattern = pattern + " " + random.choice(string.ascii_lowercase) print("The pattern is: ") print(pattern) time.sleep(5) easyAns = str(input("What was the pattern?: ")) if easyAns == pattern: i = i + 1 print("That's correct!") else: print("Sorry, that's incorrect.") break
修正后可运行完整代码
import random import string import time import os def memory_test(): current_length = 3 last_pattern = "" while True: # 生成与上一轮不重复的当前序列 while True: char_list = random.choices(string.ascii_lowercase, k=current_length) current_pattern = " ".join(char_list) if current_pattern != last_pattern: break print("The pattern is:") print(current_pattern) # 序列展示5秒后清屏,避免玩家直接照着输入,不需要该效果可删除以下两行 time.sleep(5) os.system('cls||clear') user_ans = input("What is the pattern shown?: ") if user_ans == current_pattern: print("That is correct!") last_pattern = current_pattern current_length += 1 else: print("Sorry, that is incorrect!") break print("** end of program **") if __name__ == "__main__": memory_test()
代码说明
- 用
random.choices一次性抽取指定数量的小写字母,再用空格拼接,比循环累加字符串效率更高 - 内层循环保证每轮新序列和上一轮完全不同,符合规则要求
- 默认带5秒记忆等待+自动清屏效果,还原真实记忆测试玩法,删除对应两行代码即可关闭该效果,交互流程和需求示例完全一致
- 用
while True无限循环实现答对就升级的逻辑,没有固定轮次上限,直到玩家答错才退出 - 所有交互文案完全匹配需求给出的运行示例
内容的提问来源于stack exchange,提问作者yejin
相关产品推荐
相关产品推荐

