2

我正在学习python这里是一个示例代码

girls = ['alice','bernice','clarice']
boys = ['chris','arnold','bob']
letterGirls = {}
for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
  print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

我收到以下错误

 File "<stdin>", line 3
    print [b+'+'+g for b in boys for g in letterGirls[b[0]]]
                                                           ^
IndentationError: unindent does not match any outer indentation level

1)我想解决上述错误和
2)我想知道如何在 python 中的 for 循环中编写代码块,例如在上面的示例中,我在终端上检查了如果我没有在第一个 for 行下方留下空格,那么语法是错误我不清楚如何在python中的for循环代码块中给出空格是否有一些东西可以在python中留下空格

for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
  print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

根据下面的建议更新
我更新了代码打印语句在给出的示例中的 for 循环之外所以我更新了我的 ubuntu 终端上的程序

girls = ['alice','bernice','clarice']
boys = ['chris','arnold','bob']
letterGirls = {}
for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

但我仍然收到上面代码的错误

print[b+'+'+g for b in boys for g in letterGirls[b[0]]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'c'

因为我正在终端上编写程序,这正是我的终端的样子

@ubuntu:~$ python
Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> girls = ['alice','bernice','clarice']
>>> boys = ['chris','arnold','bob']
>>> letterGirls = {}
>>> for girl in girls:
...     letterGirls.setdefault(girl[0],[]).append(girl)
... print [b+'+'+g for b in boys for g in letterGirls[b[0]]]
  File "<stdin>", line 3
    print [b+'+'+g for b in boys for g in letterGirls[b[0]]]
        ^
SyntaxError: invalid syntax
>>> print[b+'+'+g for b in boys for g in letterGirls[b[0]]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'c'
4

3 回答 3

2

同一级别的代码应该使用相同的缩进,所以'for'语句和'print'应该在一个列中(相同的缩进)。建议的方法是使用 4 个空格从级别缩进级别。将您的代码更改为:

for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

我对您的建议是在PEP8 指南中阅读更多内容,这将使您的生活更轻松

于 2013-03-27T08:29:34.463 回答
0

1)你在“打印”语句中有错误的缩进,确保你在 Python 中为同级块缩进 4 个空格。在这种情况下,您不应该在 'print' 之前缩进。

girls = ['alice','bernice','clarice']
boys = ['chris','arnold','bob']
letterGirls = {}
for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

输出:

['chris+clarice', 'arnold+alice', 'bob+bernice']

2)如果要在循环中创建块语句,请确保所有语句具有相同的缩进级别。

for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
    print "This is in the loop"
print "This is not in the loop"
于 2013-03-27T08:31:04.173 回答
0

如果你想在循环外打印语句:

for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

如果你想在循环内打印语句:

for girl in girls:
    letterGirls.setdefault(girl[0],[]).append(girl)
    print [b+'+'+g for b in boys for g in letterGirls[b[0]]]

缩进必须对齐。在这里阅读更多。每个缩进级别应该使用 4 个空格。

例如,如果您想要代码中的另一个级别:

for ():
    print x
    for():
        print x

对于每个缩进级别,空格必须为 4。

PS。即使您使用其他命令(如 while 循环或 if/else 条件),这也是您必须应用的。

于 2013-03-27T08:31:04.673 回答