所以我是一名大一学生。我正在上一门教授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循环但是,我不知道如何合并它。请帮帮我。
答案 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)
您遇到的错误是由于变量的范围。您在函数内定义了letter
和number
,因此当您调用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