鱼C论坛

 找回密码
 立即注册
查看: 2438|回复: 15

第18讲动手题最后一题运行失败,似乎是zip使用不对

[复制链接]
发表于 2019-10-31 20:55:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第18讲动手题.png 我想通过右边的代码实现功能,运行出错,意思好像是zip函数不能用len求长度,百度了下zip返回的应该是元素是元组的列表啊,为啥不行,我红色方框里面的在IDLE里面测试zip也是有问题,不知道问题出在哪儿,求大神指导
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-31 21:00:57 | 显示全部楼层
用list把zip转换为列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 21:01:02 | 显示全部楼层
没定义__len__方法,可以用list转换
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 21:02:25 | 显示全部楼层
  1. >>> a= 'abcdefg'
  2. >>> b = '1234567'
  3. >>> print(list(zip(a, b)))
  4. [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4'), ('e', '5'), ('f', '6'), ('g', '7')]
  5. >>> print(*zip(a, b))
  6. ('a', '1') ('b', '2') ('c', '3') ('d', '4') ('e', '5') ('f', '6') ('g', '7')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 21:05:49 | 显示全部楼层
      错误的原因是 zip() 函数返回的结果没有赋值给变量,导致新生成的对象被直接丢掉。

      试试这个:  
  1. a = 'asfgwfsf'
  2. b = 'afwefgef'
  3. c = zip(a , b)
  4. print(c)
复制代码


      楼主,代码能不能不要贴成图片
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-10-31 21:18:32 | 显示全部楼层
jackz007 发表于 2019-10-31 21:05
错误的原因是 zip() 函数返回的结果没有赋值给变量,导致新生成的对象被直接丢掉。

      试试这 ...

好的,以后不贴图片了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-31 21:28:16 | 显示全部楼层
list(zip(a, b))

需要先转化成列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 18:28:44 | 显示全部楼层
jackz007 发表于 2019-10-31 21:05
错误的原因是 zip() 函数返回的结果没有赋值给变量,导致新生成的对象被直接丢掉。

      试试这 ...

试了下你这个代码,运行也不行唉,我看有人让用  list()来将zip先转换成表格才行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 18:29:59 | 显示全部楼层
zltzlt 发表于 2019-10-31 21:28
list(zip(a, b))

需要先转化成列表

意思是zip返回的也是一个迭代对象吗?为啥我看的书上写的返回的是一个元组啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 18:38:43 | 显示全部楼层
zltzlt 发表于 2019-10-31 21:28
list(zip(a, b))

需要先转化成列表
  1. def findstr(str1=1,str2=2):
  2.     str1=input('请输入目标字符串:')
  3.     str2=input('请输入子字符串(两个字符):')
  4.     a=list(str1)
  5.     b=tuple(str2)
  6.     c=a[:]
  7.     c.pop()
  8.     d=list(zip(a,c))
  9.     time=0
  10.     for i in len(d):
  11.         if b == d[i]:
  12.             time+=1
  13.     print(time)
复制代码

转化之后运行还是失败了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-4 23:39:36 | 显示全部楼层
润木 发表于 2019-11-4 18:38
转化之后运行还是失败了啊

你写的这个想实现啥功能?我复制粘贴了一下第10行报错,加个range
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 12:59:41 | 显示全部楼层
jackz007 发表于 2019-10-31 21:05
错误的原因是 zip() 函数返回的结果没有赋值给变量,导致新生成的对象被直接丢掉。

      试试这 ...

然并卵,右边的才是代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 13:00:25 | 显示全部楼层
zip返回元组是Python2的事了,现在都是zip object
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-5 13:45:53 | 显示全部楼层
永恒的蓝色梦想 发表于 2019-11-5 13:00
zip返回元组是Python2的事了,现在都是zip object

          知音啊,我用的正是 Python 2.7.16
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-5 18:12:47 | 显示全部楼层
jackz007 发表于 2019-11-5 13:45
知音啊,我用的正是 Python 2.7.16

老哥666
不过我记得你应该知道我用py3……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-6 18:02:32 | 显示全部楼层
永恒的蓝色梦想 发表于 2019-11-5 13:00
zip返回元组是Python2的事了,现在都是zip object

好吧,小甲鱼新版的教程更新太慢了,只能用老版的书和教程先学着
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-20 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表