所以,我最近开始学习python而且我在 raw_input()部分。
所以当我尝试不同的东西时,我犯了一个错误(至少这是我现在的想法)。有人可以解释这两个陈述之间有什么区别吗?
var1 = int(raw_input())
var1 = int((raw_input())
我知道第一个等待来自用户的输入并将其分配给变量var1
,但在第二种情况下,这是我得到的输出。
>>> x = int((raw_input())
按Enter键,只显示省略号并等待用户输入。
... 12
十二是我的输入,然后我收到以下错误。
File "<stdin>", line 2
12
^
SyntaxError: invalid syntax
我清楚地知道这是一个语法错误,但它不应该接受这个声明吗?为什么要等输入?
谢谢。
Python版本:2.7 操作系统:Windows
答案 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