使用random二选一执行函数触发TypeError:参数数量不符
解决random.choice随机执行函数的报错问题
错误原因
你写的random.choice(frontright(),frontleft())存在两个问题:
- 参数格式错误:
random.choice()仅接受一个可迭代对象(比如列表、元组)作为参数,你直接传入两个函数调用的结果,相当于给函数传了3个参数(内部的self + 两个函数返回值),因此触发TypeError。 - 逻辑错误:这种写法会先执行
frontright()和frontleft(),再把它们的返回值传给choice,完全做不到“随机二选一执行”——两个函数都会被提前执行一遍。
正确实现代码
方法1:分步写法(清晰直观)
import random # 假设已定义以下两个函数 def frontright(): # 函数逻辑 pass def frontleft(): # 函数逻辑 pass # 随机选择函数对象,再执行 selected_func = random.choice([frontright, frontleft]) selected_func()
方法2:一行简洁写法
random.choice([frontright, frontleft])()
关键说明
- 把**函数本身(不带括号)**放进列表,
random.choice会从列表里随机挑选一个函数对象。 - 选中后再加上
()调用,这样就只会执行被选中的那个函数,实现50%概率二选一的需求。
内容的提问来源于stack exchange,提问作者Br3xin
相关产品推荐
相关产品推荐

