我正在尝试写一些东西来检查整数(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
我不知道我做错了什么,我在其他地方没有回答就问过。
答案 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的版本相同)