因此,在《自动化无聊的东西》第4章中,第一个项目问题是假设您有一个列表,其中spam = ['apples', 'bananas', 'tofu', 'cats]
编写一个函数,将列表值作为参数,并返回一个字符串,其中所有项之间用逗号和空格分隔,最后一项前面有单词“and”。此函数应适用于传递给它的任何列表
为了我写的代码
def list():
for i in range(len(list)-1):
print(' ,' + ' , and' + list[-1])
spam = ['apples','bananas','tofu','cats']
list = spam
print(spam)
我可以让逗号和空格出现,但我想不出如何让最后一个值总是在它之前
我也试过了
def list():
for i in range(len(list)-1):
print(' ,')
for i[-1]
print(, and' + list[-1])
spam = ['apples','bananas','tofu','cats']
list = spam
print(spam)
两者都不起作用
我不想找人告诉我什么是代码,而是我的想法是错误的,我应该如何框架。你知道吗
谢谢你!你知道吗
请看下面的代码。你知道吗
输出:
我是python新手,所以我不包括使用本书尚未涉及的方法的可能答案。查看您的代码:
当您的代码需要打印时,它实际上是在打印列表引用,而不是将列表作为字符串打印。您编写了一个函数:
但是你从来没有向它传递过任何东西,你甚至从来没有在你的代码中调用过这个函数:
您在这里所做的就是定义变量spam来存储列表引用,然后将变量spam存储在另一个变量list中,然后打印spam…所以您甚至不使用list变量
我建议您使用位于pythontutor.com的Python可视化工具,它确实帮助了我。话虽如此,既然你不想要实际的答案或代码,我将给你我经历的思考过程:
步骤1:定义一个函数,该函数将以列表值作为参数,并返回一个字符串将所有项用逗号和空格分隔,并在最后一项之前插入'和'。
您的函数需要一个接受list参数并将其传递给函数的参数
创建一个将列表值作为字符串保存的新变量。因为您还没有解析列表来获取数据,所以这可能是一个空变量。
找出列表的长度(考虑到它需要接受任何列表长度,而不仅仅是示例)。根据列表的长度,从0开始返回该长度的数字序列,并将其递增1(提示:有一个内置函数可以同时执行这两个操作)
创建一种方法,当上面的代码在序列中运行时,它检查列表索引是否是最后一个索引。如果它是列表中的最后一个索引,请将“and”连接到该索引,将其存储为一个变量(您在步骤2中创建的变量)并递增,以便它将移动到下一个列表索引。否则,如果它不是列表中的最后一个索引,请将该索引与“,”连接起来,将其存储在变量(您在步骤2中创建的变量)中,然后递增,使其移动到下一个列表索引。
一旦您的代码遍历了整个列表,让它返回值(同时计算出我使用print()的代码,而不是返回,这样我就可以在屏幕上看到输出)。
一旦你得到这个工作,它将采取在任何列表或列表长度:
并以逗号分隔的字符串形式返回列表,在最后一个索引前加上“and”
一旦您的代码成功地完成了这项工作,您就可以转到让我困惑了一段时间的部分: “但是您的函数应该能够处理传递给它的任何列表值。”
现在您需要更改函数,以便它遍历列表,如果列表包含字符串,它将正常运行,但是如果列表包含整数,它需要运行相同的进程,但将整数转换为字符串,以便以相同的方式打印列表
并以逗号分隔的字符串形式返回列表,在最后一个索引前加上“and”
相关问题 更多 >
编程相关推荐