Python random函数无法输出字典内容问题求助
问题分析与修复
你的代码存在两个核心错误,导致最终输出空字符串:
- 函数内使用了比较运算符
==而非赋值运算符=,没有将随机选中的值赋给random10 - 全局变量
random10在函数内修改时未声明global,Python会将其视为局部变量,无法影响外部的random10
修正方案1:修复原逻辑
调整赋值方式并声明全局变量,保留原有代码结构:
import random random10 = "" lda_10 = { 1: "bahria town - overseas A", 2: "bahria town - awais qarni block", 3: "bahria town - shaheen block", 4: "bahria town - shaheen block extension", 5: "bahria town - Ghouri block", 6: "bahria town - takbeer block", 7: "bahria town - Gulbahar Block", 8: "bahria town - Nargis Block", 9: "bahria town - Iris Block", 10: "bahria town - JASMINE block", 11: "bahria town - Gulmohar block", 12: "bahria town - block cc", 13: "bahria town - Chambeli block", 14: "bahria town - tulip block", 15: "bahria town - janiper block", 16: "bahria town - Overseas b", 17: "bahria town - block dd", 18: "bahria town - rafi block", 19: "bahria town - iqbal block", 20: "bahria town - shershah block", 21: "bahria town - talha block", 22: "bahria town - johar block", 23: "bahria town - quaid block", 24: "bahria town - Ghaznavi block", 25: "bahria town - sikandar block", 26: "bahria town - tipu sultan block", 27: "bahria town - overseas A", 28: "bahria town - overseas A", 29: "bahria town - overseas A", 30: "bahria town - awais qarni block", 31: "bahria town - shaheen block", 32: "bahria town - shaheen block", 33: "bahria town - shaheen block", 34: "bahria town - shaheen block extension", 35: "bahria town - shaheen block extension", 36: "bahria town - shaheen block extension", 37: "bahria town - Ghouri block", 38: "bahria town - takbeer block", 39: "bahria town - takbeer block", 40: "bahria town - takbeer block", 41: "bahria town - Gulbahar Block", 42: "bahria town - Gulbahar Block", 43: "bahria town - Gulbahar Block", 44: "bahria town - Nargis Block", 45: "bahria town - Iris Block", 46: "bahria town - Iris Block", 47: "bahria town - Iris Block", 48: "bahria town - JASMINE block", 49: "bahria town - JASMINE block", 50: "bahria town - JASMINE block", 51: "bahria town - Gulmohar block", 52: "bahria town - Gulmohar block", 53: "bahria town - Gulmohar block", 54: "bahria town - block cc", 55: "bahria town - block cc", 56: "bahria town - block cc", } def R_10(): global random10 # 声明使用全局变量 random10 = random.choice(list(lda_10.values())) # 替换==为赋值运算符= R_10() print(random10)
修正方案2:更规范的写法(推荐)
避免使用全局变量,让函数直接返回随机结果,代码更简洁易维护:
import random lda_10 = { 1: "bahria town - overseas A", 2: "bahria town - awais qarni block", 3: "bahria town - shaheen block", 4: "bahria town - shaheen block extension", 5: "bahria town - Ghouri block", 6: "bahria town - takbeer block", 7: "bahria town - Gulbahar Block", 8: "bahria town - Nargis Block", 9: "bahria town - Iris Block", 10: "bahria town - JASMINE block", 11: "bahria town - Gulmohar block", 12: "bahria town - block cc", 13: "bahria town - Chambeli block", 14: "bahria town - tulip block", 15: "bahria town - janiper block", 16: "bahria town - Overseas b", 17: "bahria town - block dd", 18: "bahria town - rafi block", 19: "bahria town - iqbal block", 20: "bahria town - shershah block", 21: "bahria town - talha block", 22: "bahria town - johar block", 23: "bahria town - quaid block", 24: "bahria town - Ghaznavi block", 25: "bahria town - sikandar block", 26: "bahria town - tipu sultan block", 27: "bahria town - overseas A", 28: "bahria town - overseas A", 29: "bahria town - overseas A", 30: "bahria town - awais qarni block", 31: "bahria town - shaheen block", 32: "bahria town - shaheen block", 33: "bahria town - shaheen block", 34: "bahria town - shaheen block extension", 35: "bahria town - shaheen block extension", 36: "bahria town - shaheen block extension", 37: "bahria town - Ghouri block", 38: "bahria town - takbeer block", 39: "bahria town - takbeer block", 40: "bahria town - takbeer block", 41: "bahria town - Gulbahar Block", 42: "bahria town - Gulbahar Block", 43: "bahria town - Gulbahar Block", 44: "bahria town - Nargis Block", 45: "bahria town - Iris Block", 46: "bahria town - Iris Block", 47: "bahria town - Iris Block", 48: "bahria town - JASMINE block", 49: "bahria town - JASMINE block", 50: "bahria town - JASMINE block", 51: "bahria town - Gulmohar block", 52: "bahria town - Gulmohar block", 53: "bahria town - Gulmohar block", 54: "bahria town - block cc", 55: "bahria town - block cc", 56: "bahria town - block cc", } def R_10(): return random.choice(list(lda_10.values())) # 调用函数并打印结果 print(R_10())
补充说明:你的字典中存在大量重复值,当前写法会让出现次数多的街区拥有更高的随机选中概率,这个逻辑是合理的。
内容的提问来源于stack exchange,提问作者noob
相关产品推荐
相关产品推荐

