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 循环,但是我不知道如何合并它。请帮帮我。
【问题讨论】:
现在您在函数中定义letter
和number
。在你的函数之外,在第 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】:您遇到的错误是由于变量的范围造成的。您在函数内部定义了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
【讨论】:
以上是关于Python初学者;用于环和拉链的主要内容,如果未能解决你的问题,请参考以下文章