繁体   English   中英

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

[英]Beginner in Python; For Loops & Zips

因此,我是一名大一新生。 我正在上一门教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循环,但是,我不知道如何合并它。 请帮我。

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM