【问题标题】:Python Interpreter: Can't assign to literal [closed]Python解释器:无法分配给文字[关闭]
【发布时间】:2011-11-22 08:24:06
【问题描述】:

我用这段代码写了一个程序:

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

并收到消息syntax error: can't assign to literal。我做错了什么?

【问题讨论】:

  • 想要做什么?因为你的代码没有意义
  • 你做错了什么是分配给一个文字,就像错误消息说的那样。这还不够具体吗?你知道什么是字面意思吗?你知道什么是作业吗?
  • @KarlKnechtel 我是 m\python 的新手,不,我不知道 Lieral 是什么。
  • en.wikipedia.org/wiki/Literal_%28computer_programming%29 。您不能分配给('<'),因为这简化为'<',它是一个字符串,而不是一个变量。尝试这样做就像尝试更改 4 的值。
  • @KarlKnechtel 但是当我在没有单引号的情况下输入它时,它会给我一个syntax error

标签: python syntax syntax-error variable-assignment


【解决方案1】:

我做错了什么?

您正在尝试将用户输入的内容分配给字符串的实例。这行不通。

要在对另一个答案的评论中抓住您的问题并尝试将其合并,如果您希望能够输入 v1 并让它返回 '<',您需要这样做:

v1 = '<'

听起来,在你走得更远之前,你强烈需要了解一些基本的编程概念,如赋值、变量和函数。

【讨论】:

    【解决方案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
    

    用清晰的英文输入这些行,你的意思是:

    “将'&lt;' 设置为将用户定义的值从raw_input() 分配给元组raw_input(), '&gt;' 的结果”。

    说,“设置某个固定值等于用户提供的值”是说“设置 5 等于前一个等式的值”的代数等价物。


    * 由于逗号运算符是绑定最少的运算符之一,因此您实际上将由字符串 raw_input(), '&gt;' 组成的 tuple 设置为等于第二个 raw_input 中的字符串打电话。

    该语句可以分解如下:

    将字符串 '' = raw_input() 得到的值

    raw_input(), '&gt;' = raw_input() 被解释为:

    将调用raw_input()和'>'的结果组成的元组设置为等于调用raw_input()的结果

    【讨论】:

      【解决方案3】:

      您是否尝试以&lt;&gt; 作为提示输入?如果是这样,这就是你应该做的:

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

      一行中的另一个选项,因为看起来您正在尝试执行一行:

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

      您收到该错误消息的原因是 ('&lt;') 是所谓的文字。文字是在代码中显式输入的值。基本上,不是变量。这就像说3 = len(mylist)... 你如何将len 函数的输出分配给3?你不能,因为 3 不是一个变量。您应该只分配给一个变量,在 python(和大多数其他语言)中,通常是某种类似单词的字符集,如 v1myinput

      v1 = len(mylist)
      

      【讨论】:

      • 这样我可以输入v1 并显示&lt; 吗?
      • 它将显示您通过命令行界面输入的内容。如果要将字符串 '
      猜你喜欢
      • 1970-01-01
      • 2021-06-06
      • 2023-03-12
      • 2020-07-02
      • 1970-01-01
      • 2013-04-22
      • 2017-02-13
      • 2012-05-27
      • 2011-02-13
      相关资源
      最近更新 更多