3

我正在尝试编写一些东西来检查整数(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

4 回答 4

10

In place of this:

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

try this:

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

similarly for the other input statements.

Built-in Python function raw_input() "reads a line from input, converts it to a string ". In order for you to use to use the input as an integer, you need to convert the string to int with the help of the int() function which converts "a string or number to a plain integer". From your code it looks like you had the basic idea, but your syntax was a bit tangled up.

于 2012-07-14T00:00:19.783 回答
4

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

例如,以下内容根本不合法,并且将导致SyntaxError

if name = name + 1:
    pass

在这种情况下,您收到 aTypeError而不是 aSyntaxError的原因是 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"))
于 2012-07-14T00:05:45.147 回答
0

try this

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

this is the output

>>> 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
于 2012-07-14T00:02:29.610 回答
0

如果你想要一个更短的版本,试试这个:

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

(它与 Joran Beasley 的版本相同)

于 2012-07-14T01:35:46.507 回答