Python初学者;用于环和拉链

Posted

技术标签:

【中文标题】Python初学者;用于环和拉链【英文标题】:Beginner in Python; For Loops & Zips 【发布时间】:2015-04-15 03:12:57 【问题描述】:

所以我是一名 Comp sci 专业的大一新生。我正在上一门教 Python 的课程。这是我的任务:

创建一个以字符串和列表为参数的函数。字符串应包含字母表的前十个字母,列表应包含每个字母对应的数字。将字符串和列表压缩成每个字母和数字配对的元组列表。然后该函数应分别在不同的行上打印数字和相应的字母。提示:使用 zip 函数和循环!

这是我目前所拥有的:

def alpha(letter, number):
    letter = "abcdefghij"
    number = [1,2,3,4,5,6,7,8,9,10]
    return zip(letter, number)
print alpha(letter, number)

我遇到的问题是第 5 行的错误,显示“字母”未定义。我觉得应该有一个 for 循环,但是我不知道如何合并它。请帮帮我。

【问题讨论】:

现在您在函数中定义letternumber。在你的函数之外,在第 5 行,它们没有被定义。 【参考方案1】:

zip 适用于可迭代对象(字符串和列表都是可迭代对象),因此您不需要 for 循环来生成对,因为 zip 本质上是为您执行该 for 循环.看起来你想要一个 for 循环来打印这些对。

您的代码有点混乱,您通常希望在函数之外定义变量并使函数尽可能通用:

def alpha(letter, number):
    for pair in zip(letter, number):
        print pair[0], pair[1]

letter = "abcdefghij"
number = [1,2,3,4,5,6,7,8,9,10]
alpha(letter, number)

【讨论】:

【参考方案2】:

您遇到的错误是由于变量的范围造成的。您在函数内部定义了letternumber,所以当您调用alpha(letter,number) 时,它们还没有被定义。

为了打印结果,您可以迭代 zip 的结果,如下例所示:

def alpha(letters, numbers):
    for c,n in zip(letters,numbers):
        print c,n

letters = "abcdefghij"
numbers = range(1,11)
alpha(letters, numbers)

输出:

a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
i 9
j 10

【讨论】:

以上是关于Python初学者;用于环和拉链的主要内容,如果未能解决你的问题,请参考以下文章

致python初学者的天梯

python初学之魔法方法1

《Python编程初学者指南》高清PDF版|百度网盘免费下载|Python基础

《适用于初学者的 Python》

《适用于初学者的 Python》

简洁易懂,初学者挑战学习Python编程30天