Python 3"太多的论点"?

时间:2016-01-12 18:00:03

标签: python python-3.x python-3.5

我正在为学校写一个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;。

如您所见,它会打印引号和逗号,但正确包含变量in。我查看了.strip()函数,但所有教程都太混乱了,但我认为这就是我需要的东西!

任何人都可以使这行代码工作,它只是将问题打印为输入语句,同时包含变量吗?

3 个答案:

答案 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() methodin的值插入更大的字符串中。

你可能在这里与print()混淆了,它明确地接受了任意数量的参数,并在将它们写入stdout之前将每个参数转换为字符串,并用空格分隔每个参数。 input()不提供此功能。

答案 1 :(得分:3)

我认为您的问题是您将input函数调用视为print调用。但是,inputprint的界面不同。

  • 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)。

因此输入帮助(输入)会告诉您输入只需要一个参数。如果您忘记某些内容的确切语法或细节,这将非常有用。

希望这能解决你遇到的任何问题,特别是如果你不确定为什么给定的答案有效而你的答案没有。