Python 解释器:无法赋值给字面量

-4 投票
3 回答
5982 浏览
提问于 2025-04-17 02:47

我写了一个程序,其中有这样的代码:

('<') = raw_input(v1), ('>') = raw_input(v2)

然后我收到了一个错误信息:语法错误:不能给字面量赋值。我哪里出错了呢?

3 个回答

1

你是不是想用 <> 作为输入提示?如果是的话,你应该这样做:

v1 = raw_input('<')
v2 = raw_input('>')

raw_input 这个函数会把提示信息作为参数传进去,然后你在终端输入的内容会被赋值给 v1v2

如果你想用一行代码来实现这个功能,可以试试这个:

v1, v2 = raw_input('<'), raw_input('>')

你看到那个错误信息的原因是 ('<') 被称为字面量。字面量就是在代码中直接写出来的值,简单来说,就是不是变量。这就像说 3 = len(mylist)... 你怎么能把 len 函数的输出赋值给 3 呢?这是不可能的,因为 3 不是一个变量。在 Python(以及大多数其他编程语言)中,你只能把值赋给变量,变量通常是一些像 v1myinput 这样的字符组合:

v1 = len(mylist)
2

让我来试着解释一下你所说的意思:

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"

你所表达的意思是(忽略 v1v2 这两个变量):

('<')              #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() 的结果。

4

我哪里做错了?

你试图把用户输入的内容赋值给一个字符串的实例,这样是行不通的。

为了回应你在其他答案评论中的问题,如果你想输入 v1 然后返回 '<',你需要这样做:

v1 = '<'

听起来在你继续之前,你非常需要先理解一些基本的编程概念,比如赋值、变量和函数。

撰写回答