Python接收用户输入动态匹配变量实现random.choice随机选词问题
问题原因
你的代码无法正常运行的核心错误是条件判断逻辑写错了:你在if/elif分支里拿用户输入的字符串和未定义的标识符(kolay/orta/zor)做比较,这几个值既不是字符串也没有提前赋值,Python运行时会直接抛出名称错误,根本走不到正确的选词分支里。
修复方法
两种可行的实现方案,可按需选择:
- 方案1:直接修正判断条件
把判断逻辑里的裸标识符换成带引号的难度字符串,同时给输入结果加strip()处理,自动清除用户误输入的前后空格,避免因为多余空格导致匹配失败。
修复后完整代码:
import pygame import pygame_menu import random kolay_secim = ["agac","odun","baba"] orta_secim = ["zar","okey","tavla"] zor_secim = ["emekli","yasli","deli"] zorluk_secimi = input('Hangi zorlukta oynamak istiyorsunuz? (kolay,orta,zor)').strip() if zorluk_secimi == "kolay": print(random.choice(kolay_secim)) elif zorluk_secimi == "orta": print(random.choice(orta_secim)) elif zorluk_secimi == "zor": print(random.choice(zor_secim)) else: print("Gecersiz Zorluk Secimi yazima dikkat ediniz.")
- 方案2:字典映射写法(更易维护)
如果后续要新增难度等级,不用堆叠大量if/elif分支,直接用字典把难度名称和对应词库做键值映射,代码更简洁:
import pygame import pygame_menu import random kelime_havuzu = { "kolay": ["agac","odun","baba"], "orta": ["zar","okey","tavla"], "zor": ["emekli","yasli","deli"] } zorluk_secimi = input('Hangi zorlukta oynamak istiyorsunuz? (kolay,orta,zor)').strip() if zorluk_secimi in kelime_havuzu: print(random.choice(kelime_havuzu[zorluk_secimi])) else: print("Gecersiz Zorluk Secimi yazima dikkat ediniz.")
内容的提问来源于stack exchange,提问作者SupFlynn
相关产品推荐
相关产品推荐

