关于12讲课后作业
本帖最后由 philip_g 于 2020-11-11 17:24 编辑求助,关于12讲的第六题的各种问题
首先,答案是:
list3 = for slogan in list1 for name in list2 if slogan == name]
然后,我进行推导以后,应该是这样:
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
list2 = ['4.阿迪达斯','2.李宁','3.小甲鱼','1.耐克']
list3 = []
for slogan in list1:
for name in list2:
if slogan == name:
list3.append(name + ':' + slogan)
print(list3)
问题1:我的输出结果为什么是“['1.耐克:just do it', '2.李宁:一切皆有可能', '3.小甲鱼:让编程改变世界', '4.阿迪达斯:impossible is nothing']”这样的,而不是缩进的。
问题2:为了验证“slogan == name”,我编写了一段代码,如下:
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
temp = []
for i in list1:
if i == 1:
temp.append(i)
print (temp)
结果输出为:[],这个就很郁闷了,我本来的意图实际上是想得到['1.just do it']是我哪里写错了吗?
问题3:关于“slogan”按照课堂上老师对分片的讲解,我认为应该输出的list2是“['3.小甲鱼','1.耐克']”从索引值为2开始,到结束。参看了问题求助的大部分解释后,我怎么感觉大家解释的意思都是说将列表list2中的每一个元素的索引值为2以后的字符进行保留。关于这点,我十分的费解
请大神们多多指教~小弟在此谢过~~
问题1你想表示啥?我不明白你说的缩进是什么意思
问题2
for i in list1:
if i == 1:#应该是'1',字符,而不是数字
temp.append(i)
print (temp)
问题3:
因为是在for in循环里啊,遍历列表,并对遍历结果切片 笨鸟学飞 发表于 2020-11-11 17:35
问题1你想表示啥?我不明白你说的缩进是什么意思
问题2
for i in list1:
第一个问题我要表达的是这样的,应该输出的是:
1.耐克:just do it
2.李宁:一切皆有可能
3.小甲鱼:让编程改变世界
4.阿迪达斯:impossible is nothing
而我推导以后输出的结果是:['1.耐克:just do it', '2.李宁:一切皆有可能', '3.小甲鱼:让编程改变世界', '4.阿迪达斯:impossible is nothing']
为什么没有换行,以及这个单引号怎么去掉呢? philip_g 发表于 2020-11-11 17:51
第一个问题我要表达的是这样的,应该输出的是:
1.耐克:just do it
2.李宁:一切皆有可能
换行要用到 end
问题1:我的输出结果为什么是“['1.耐克:just do it', '2.李宁:一切皆有可能', '3.小甲鱼:让编程改变世界', '4.阿迪达斯:impossible is nothing']”这样的,而不是缩进的?
因为你是直接 print(list3) 打印 list3 , 而 list3 是一个列表所以打印结果就是将整个列表打印出来
你对 list3 加个 for 循环进行打印即可达到一行一行打印的效果,参考代码:
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
list2 = ['4.阿迪达斯','2.李宁','3.小甲鱼','1.耐克']
list3 = []
for slogan in list1:
for name in list2:
if slogan == name:
list3.append(name + ':' + slogan)
for i in list3:
print(i)
问题2:验证“slogan == name”,出错
你需要知道 字符串的 '1' 是不等于整形 1 的,因为这两个数据类型是不同的
即 '1' 是字符串类型,而 1 是整形,不可能相等,也就永远不可能满足你 if 条件 所以最终输出列表的结果为 空列表
改动后的参考代码:
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
temp = []
for i in list1:
if i == '1': # 这里 1 改成字符串 '1' 或者将 i 改为 int(i)
temp.append(i)
print (temp)
问题3 建议看下这个帖子,希望有助于你的理解
python 第12讲的课后习题第六题
https://fishc.com.cn/thread-175291-1-1.html Twilight6 发表于 2020-11-11 20:41
因为你是直接 print(list3) 打印 list3 , 而 list3 是一个列表所以打印结果就是将整个列表打印出来
...
非常感谢楼主的解答
关于问题1,那是不是可以理解我发的帖子中反推的答案是有问题的呢?
list3 = for slogan in list1 for name in list2 if slogan == name]
这个推导以后应该是什么样子的呢? philip_g 发表于 2020-11-12 09:55
非常感谢楼主的解答
关于问题1,那是不是可以理解我发的帖子中反推的答案是有问题的呢?
list3 =
楼上那个帖子点进去理解下,你就能晓得啦~
页:
[1]