使用random.choice随机选择函数实现加减1功能遇问题求助
问题分析与修正方案
原代码存在的问题
- 内部函数
adding和substracting仅修改局部参数x,没有返回值,无法影响外部的x变量 - 执行
random.choice([adding,substracting])只是选中了函数对象,但没有调用函数,加减逻辑根本没执行 - 外部函数的参数
x被重新赋值,实际完全没用上这个入参
修正后的代码(两种实现方式)
方式1:修复嵌套函数逻辑
import random def addsubone(): n = [1,2,3,4,5,6] x = random.choice(n) def adding(x): return x + 1 def substracting(x): return x - 1 # 选中函数后立即调用,将结果赋值给x x = random.choice([adding, substracting])(x) return x print(addsubone())
方式2:简化实现(推荐)
直接跳过嵌套函数,用增量列表实现更简洁:
import random def addsubone(): n = [1,2,3,4,5,6] x = random.choice(n) # 随机选择+1或-1的增量 x += random.choice([1, -1]) return x print(addsubone())
修正说明
- 移除了无用的外部函数参数
x,因为函数内部会重新随机选取初始数字 - 方式1中让内部函数返回修改后的值,选中函数后立即调用并更新
x - 方式2直接通过随机增量实现需求,避免了嵌套函数的冗余逻辑
内容的提问来源于stack exchange,提问作者Sskatx
相关产品推荐
相关产品推荐

