Python 解释器:无法赋值给字面量
我写了一个程序,其中有这样的代码:
('<') = raw_input(v1), ('>') = raw_input(v2)
然后我收到了一个错误信息:语法错误:不能给字面量赋值
。我哪里出错了呢?
3 个回答
你是不是想用 <
和 >
作为输入提示?如果是的话,你应该这样做:
v1 = raw_input('<')
v2 = raw_input('>')
raw_input
这个函数会把提示信息作为参数传进去,然后你在终端输入的内容会被赋值给 v1
和 v2
。
如果你想用一行代码来实现这个功能,可以试试这个:
v1, v2 = raw_input('<'), raw_input('>')
你看到那个错误信息的原因是 ('<')
被称为字面量。字面量就是在代码中直接写出来的值,简单来说,就是不是变量。这就像说 3 = len(mylist)
... 你怎么能把 len
函数的输出赋值给 3 呢?这是不可能的,因为 3 不是一个变量。在 Python(以及大多数其他编程语言)中,你只能把值赋给变量,变量通常是一些像 v1
或 myinput
这样的字符组合:
v1 = len(mylist)
让我来试着解释一下你所说的意思:
user_provided_value = raw_input("Say something:")
if user_provided_value == "v1":
print "Heavier than a duck!"
elif user_provided_value == "v2":
print "Lighter than a duck!"
else:
print "You must enter either v1 or v2"
你所表达的意思是(忽略 v1
和 v2
这两个变量):
('<') #1 Set '<'
#2 [ ('<') is the same as simply saying '<' ]
= #3 to be the result of assigning
#5 to a tuple composed of
raw_input() #6 what the user types in at the prompt
, #7 (the comma operator creates a tuple)
('>') #8 And '>'
= # to be
raw_input() #4 what the user types in at the prompt
把这些话用简单易懂的英语说出来,就是:
“把 '<'
设置为从 raw_input()
获取的用户输入值,赋值给元组 raw_input(), '>'
。”
换句话说,“把某个固定值设置为用户提供的值”就像说“把5设置为前面那个等式的结果”一样。
*
由于逗号运算符的优先级最低,你实际上是在把由字符串 raw_input(), '>'
组成的元组设置为等于第二个 raw_input
调用的结果。
这个语句可以分解为以下几个部分:
把字符串 '<' 设置为评估语句 raw_input(), '>' = raw_input() 的结果。
raw_input(), '>' = raw_input()
可以理解为:
把调用 raw_input() 和字符串 '>' 的结果组成的元组设置为等于调用 raw_input() 的结果。
我哪里做错了?
你试图把用户输入的内容赋值给一个字符串的实例,这样是行不通的。
为了回应你在其他答案评论中的问题,如果你想输入 v1
然后返回 '<'
,你需要这样做:
v1 = '<'
听起来在你继续之前,你非常需要先理解一些基本的编程概念,比如赋值、变量和函数。