Python 语法错误:扫描字符串文字时下线

Python 语法错误:扫描字符串文字时下线,python,Python,我写道: def compute_bill(food): total = 0 while item in food: if item's stock count > 0: total += prices[item] item's stock count = item's stock count - 1 然后,我得到了语法错误:扫描字符串文字时出现EOL 有人能帮帮我吗 这个“开始一个字符串,您已经在三个地方使用了它。这将导

我写道:

 def compute_bill(food):
    total = 0
    while item in food:
        if item's stock count > 0:
        total += prices[item]
        item's stock count = item's stock count - 1
然后,我得到了语法错误:扫描字符串文字时出现EOL
有人能帮帮我吗

这个
开始一个字符串,您已经在三个地方使用了它。这将导致两个字符串:一个在开始和结束处有撇号,另一个未闭合。未关闭的代码会导致
EOL错误
,因为python解释器在字符串完成之前已用完了要检查的代码

要解决此问题,请不要在变量名中使用撇号(或空格):

def compute_bill(food):
   total = 0
   while item in food:
       if item_stock_count > 0:
           total += prices[item]
           item_stock_count = item_stock_count - 1

看起来
项目的库存计数
是一个变量名。但在Python或我猜大多数/所有语言中,变量名
不能用空格分隔,也不应该包含单引号
或双引号
等等。

您的“item's stock count”是一个变量,Python变量必须遵守一些规则(请参阅):

  • 必须以字母(大写或小写)或下划线(
    )开头
  • 以下字符可以是字母、数字或下划线
因此,不允许使用空格或引号;它们被解释为其他内容,而不是变量名。因此出现错误


另请参见。

请将实际代码以良好的格式放置(即在每行代码前放置4个空格)你必须初始化
item\u stock\u count
,你缺少
if
后面的行缩进。示例中的
item\u stock\u count
没有初始化。这是一个错误。是的,但这不是问题所在。@Matthias好吧,有更多的错误,例如while语句是完全错误的(它将无限运行)。Matthew只修复OP询问的错误是正确的。