You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中random.choice参数报错:传2个参数却提示3个的问题求助

解决random.choice调用时的TypeError问题

嘿,我来帮你搞定这个报错问题!先看你遇到的错误:

TypeError: choice() takes exactly 2 arguments (3 given)

这个报错看起来有点绕,但核心问题其实很简单——你给random.choice()传参的方式不对。random.choice()的设计是要接收一个**可迭代的序列(比如列表、元组)**作为参数,而不是把多个选项拆成独立参数传进去。

你现在的写法是直接把选项一个个丢进去:

leftchoice = random.choice(True, False)
# 还有这句
random.choice("left", "right")

这相当于给函数传了2个独立参数,但random.choice()只需要1个参数(就是装着所有选项的序列)。至于报错里说的“3个参数”,是因为Python 2里的random.choice内部实现是作为模块方法,会隐式传递一个self参数,加上你传的两个,总共就3个,超过了函数预期的2个,所以触发了错误。

怎么修复?

把你的选项打包成列表或者元组,作为单个参数传进去就行:

  1. 布尔值的选择可以改成这样:
leftchoice = random.choice([True, False])
# 用元组也可以,写法更简洁
leftchoice = random.choice((True, False))
  1. 选左右腿的那句改成:
print "You feel a sharp pain on your %s leg." % (random.choice(["left", "right"]))

另外,顺便提醒你代码里的一个小bug:

if leftorright == "left" or "right":

这个判断逻辑是错的!它等价于(leftorright == "left") or "right",而非空字符串"right"永远是True,所以不管你输入什么,这个条件都会成立。正确的写法应该是:

if leftorright == "left" or leftorright == "right":
# 或者更简洁的写法
if leftorright in ["left", "right"]:

这样修改后,你的代码应该就能正常运行啦!

内容的提问来源于stack exchange,提问作者Flameteor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:27:18