Python初学者;对于循环和拉链

时间:2015-04-15 03:12:57

标签: python for-loop zip user-defined-functions

所以我是一名大一学生。我正在上一门教授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行的错误,即“letter”未定义。我觉得应该有一个for循环但是,我不知道如何合并它。请帮帮我。

2 个答案:

答案 0 :(得分:1)

zip适用于迭代(字符串和列表都是可迭代的),所以你不需要for循环来生成对,因为zip基本上是这样做的为你循环。看起来你想要一个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)

答案 1 :(得分:0)

您遇到的错误是由于变量的范围。您在函数内定义了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