通过 Python 的连接方法进行隐式列表声明?



我是新来的,因为我刚刚开始编程。在尝试学习Python的基础知识时,我已经遇到了一些问题。我希望你们中的一个能帮忙。

我很难理解这个代码片段是如何工作的。列表satz是在已经被上面的联接方法使用之后引入的,但我没有得到任何错误:

import random
auswahl = [["Hallo!","Guten Tag!","Moin!"],["Wie geht es Ihnen?","Wie läuft's?", "Whazz uppp?"],["Tschüß!","Auf Wiedersehen!","I'm outta here!"]]
for i in auswahl:
print (" ".join(satz))
counter = 0
satz = []
for j in i:
satz.append((auswahl[counter][random.randint(0,2)]))
counter = counter + 1

这是输出:

你好!Wie läuft?我要离开这里

莫因!我是谁?Auf Wiedersehen

Guten标签!我是谁?Auf Wiedersehen

然而,这个使用大致相同设置的例子不起作用:

counter = [1,2,3]
for i in counter:
print(" ".join(test))
test = []
NameError                                 Traceback (most recent call last)
<ipython-input-46-ba80e417be84> in <module>()
1 counter = [1,2,3]
2 for i in counter:
----> 3     print(" ".join(hallo))
4     hallo = []
NameError: name 'hallo' is not defined

我在其他帖子中没有发现任何有用的东西。也许你们中的一个可以帮忙?提前感谢!

如果你想随机化计数器列表的顺序,你需要定义测试如下:

import random
test = []
counter = [1,2,3]
for i in counter: 
test.append(str(counter[random.randint(0,2)]))
print(" ".join(test))

除非将" ".join(satz)移动到for循环的底部,否则第一个示例将不起作用,因为satz必须在加入之前定义,如下所示:

import random
auswahl = [["Hallo!","Guten Tag!","Moin!"],["Wie geht es Ihnen?","Wie läuft's?", "Whazz uppp?"],["Tschüß!","Auf Wiedersehen!","I'm outta here!"]]
for i in auswahl:
counter = 0
satz = []
for j in i:
satz.append((auswahl[counter][random.randint(0,2)]))
counter = counter + 1
print (" ".join(satz))

最新更新