我正在为学校写一个python测验/计算器,我在为测验创建随机问题时遇到了问题。
目前,我的代码如下:
while True:
if i + n == 10:
answer = input("If I have",i,"blue marbles and",n,"yellow marbles in a bag, what percentage of blue marbles are there? ")
else:
i = random.randint(1, 10)
n = random.randint(1, 10)
然而,python出现了一个错误:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: input expected at most 1 arguments, got 5
我尝试了多种方法,例如:
while True:
question = "If I have",i,"blue marbles and",n,"yellow marbles in a bag, what percentage of blue marbles are there? "
answer = input(question)
然而,当打印在外壳上时,它打印出来,如果我有,4个[例如],蓝色弹珠和&#39;,6,&#39;黄色大理石在一个袋子里,什么有蓝色弹珠的百分比?&#39;。
如您所见,它会打印引号和逗号,但正确包含变量i
和n
。我查看了.strip()
函数,但所有教程都太混乱了,但我认为这就是我需要的东西!
任何人都可以使这行代码工作,它只是将问题打印为输入语句,同时包含变量吗?
答案 0 :(得分:8)
input()
只接受一个参数,但是您传入5:
input(
"If I have",
i,
"blue marbles and",
n,
"yellow marbles in a bag, what percentage of blue marbles are there? ")
首先将它们组合成一个字符串:
input("If I have {} blue marbles and {} yellow marbles in a bag, "
"what percentage of blue marbles are there? ".format(i, n))
这会使用str.format()
method将i
和n
的值插入更大的字符串中。
你可能在这里与print()
混淆了,它明确地接受了任意数量的参数,并在将它们写入stdout之前将每个参数转换为字符串,并用空格分隔每个参数。 input()
不提供此功能。
答案 1 :(得分:3)
我认为您的问题是您将input
函数调用视为print
调用。但是,input
和print
的界面不同。
input
只需要一个参数print
将接受多个参数因此,请尝试创建这样的提示:
prompt = "If I have {} blue marbles and {} yellow marbles etc".format(i, n)
input(prompt)
答案 2 :(得分:0)
答案已经给出;但是我会提供一些见解,因为你看起来像一个初学者。 Input()和Print()是内置函数。它们与您自己创建的功能没有什么不同。函数基本上是一个在调用时运行的代码块。函数有参数,这些参数是传递给函数的值。所以我的添加功能如下:
def add(x, y)
answer = x + y
print(answer)
我会通过输入以下内容来调用它:
add(10, 20)
并且程序/交互式shell将返回30。
这就是为什么Input()和Print()的行为不同,因为Print()意味着接受许多参数并将它们连接成一个大字符串,而Input只接受一个。如果你遇到困难,或者不太确定如何使用函数,模块等.Python有一个内置的help()函数(需要一个参数,lol)。
因此输入帮助(输入)会告诉您输入只需要一个参数。如果您忘记某些内容的确切语法或细节,这将非常有用。
希望这能解决你遇到的任何问题,特别是如果你不确定为什么给定的答案有效而你的答案没有。