Python:这在raw_input函数中意味着什么?

时间:2015-09-03 17:55:04

标签: python python-2.7 raw-input

所以,我最近开始学习python而且我在 raw_input()部分。

所以当我尝试不同的东西时,我犯了一个错误(至少这是我现在的想法)。有人可以解释这两个陈述之间有什么区别吗?

  1. var1 = int(raw_input())

  2. var1 = int((raw_input())

  3. 我知道第一个等待来自用户的输入并将其分配给变量var1,但在第二种情况下,这是我得到的输出。

    >>> x = int((raw_input())按Enter键,只显示省略号并等待用户输入。

    ... 12十二是我的输入,然后我收到以下错误。

    File "<stdin>", line 2 12 ^ SyntaxError: invalid syntax

    我清楚地知道这是一个语法错误,但它不应该接受这个声明吗?为什么要等输入?

    谢谢。

    Python版本:2.7 操作系统:Windows

2 个答案:

答案 0 :(得分:10)

var1 = int((raw_input())有三个左括号和两个右括号。在用另一个右括号完成表达式之前,Python认为你还没有完成表达式的编写。这就是它显示省略号的原因。

当您输入&#34; 12&#34;时,完整的表达式变为var1 = int((raw_input())12,这是无效的语法,因为您无法在结束时立即获得数字。

答案 1 :(得分:2)

扩展凯文的答案,这里为什么你希望Python表现得像这样。在这种情况下,它会为您提供一个相当混乱的错误,但如果您执行了类似

的操作
>>> x = int((raw_input())
... + "123")

然后它可以被解析为

>>> x = int((raw_input()) + "123")

>>> x = int(raw_input() + "123")

这将是一个有效的表达式。当您想要编写不适合一行的非常长的表达式时,这将非常有用。只要有额外的左括号,就可以在新行上继续表达式。您可能想要这样做的一个案例是:

if (check_a_condition(a) and check_a_condition(b) or
    check_a_condition(c) and check_a_condition(d)):
    pass