Python随机笑话生成器代码故障求助:实现双模板随机填充
Python随机笑话生成器代码修复方案
原代码问题分析
- 变量顺序错误:
joke列表定义在x、y、z之前,运行时会抛出NameError,因为引用了未定义的变量。 - 模板逻辑错误:
joke列表存储的是静态字符串,不会执行random.choice()调用,输出的只是包含代码文本的字符串,而非填充后的笑话。
修复后的代码
import random # 先定义内容列表,确保后续模板能正确引用 x = ["Porkus", "Celery", "Gartic Phone", "Hououin"] y = ["hit the griddy", "american all over everyone", "distract the shooter by shouting bingus"] z = ["ninjago 1989 conspiracy", "conspiracy", "borkus junior", "holocaust", "Kurisu"] # 用lambda表达式定义两个笑话生成逻辑 joke_generators = [ lambda: f"{random.choice(x)} is the type of guy to {random.choice(y)} during a school shooting", lambda: f"lego {random.choice(z)}" ] # 随机选择一个生成器并执行,输出最终笑话 print(random.choice(joke_generators)())
修复细节说明
- 调整变量顺序:将
x、y、z的定义移到模板之前,避免变量未定义的错误。 - 动态生成逻辑:用lambda表达式封装每个笑话的生成规则,确保每次选择模板时都会重新调用
random.choice()获取随机内容。 - f-string格式化:用简洁直观的方式拼接动态内容和固定文本,替代原代码中错误的字符串拼接写法。
内容的提问来源于stack exchange,提问作者Porkus
相关产品推荐
相关产品推荐

