'x'是此函数的无效关键字参数

时间:2012-07-13 23:58:19

标签: python python-2.7

我正在尝试写一些东西来检查整数(z)是否在x和y的范围内,x是最小数,y是最大数。我这样做是通过检查z是否小于最小数量或大于最大数量。如果其中任何一个为真,则返回无效,否则确认它。检查值的最大值,最小值和数量由raw_input确定。这是代码:

int(x = raw_input('x:\n')) #max number
int(y = raw_input('y:\n')) #min number
int(z = raw_input('z:\n')) #number to check.
if z < y:
    print 'invalid.'
elif z > x :
    print 'invalid.'

我可以输入x值,但是当我尝试输入y值时,我收到此错误:

Traceback (most recent call last):
  File "C:/Python27/random/bark", line 2, in <module>
    int(y = raw_input('y:\n')) #min number
TypeError: 'y' is an invalid keyword argument for this function

我不知道我做错了什么,我在其他地方没有回答就问过。

4 个答案:

答案 0 :(得分:9)

取代这个:

int(x = raw_input('x:\n')) #max number

试试这个:

x = int(raw_input('x:\n')) #max number

类似于其他输入语句。

内置Python函数raw_input()“从输入读取一行,将其转换为字符串”。为了让您将输入用作整数,您需要在int()函数的帮助下将string转换为int,该函数将“字符串或数字转换为a普通整数“。从你的代码看起来你有基本的想法,但你的语法有点纠结。

答案 1 :(得分:5)

与C不同,Python赋值语句不能用作参数中的表达式。

例如,以下内容不合法,将导致SyntaxError

if name = name + 1:
    pass

在这种情况下,您收到TypeError而不是SyntaxError的原因是因为Python的关键字参数功能。 Python允许您将命名参数传递给以下形式的函数:foo(arg1=0, second_argument="hello")。因此,口译员认为这就是你要做的事情。

您收到的错误消息是Python解释器认为您将关键字参数传递给int()的结果。当然,int()不会将关键字参数“x”(或“y”或“z”)视为错误。这就是你应该做的事情:

x = int(raw_input("x:\n"))
y = int(raw_input("y:\n"))
z = int(raw_input("z:\n"))

答案 2 :(得分:0)

试试这个

x,y,z, = int(raw_input("x:")),int(raw_input("y:")),int(raw_input("z:"))

这是输出

>>> x,y,z, = int(raw_input("x:")),int(raw_input("y:")),int(raw_input("z:"))
x:5
y:6
z:7
>>> x
5
>>> y
6
>>> z
7

答案 3 :(得分:0)

如果您想要更短的版本,请尝试以下方法:

x,y,z = (int(raw_input(var+':')) for var in "xyz")

(它与Joran Beasley的版本相同)