鱼C论坛

 找回密码
 立即注册
查看: 3748|回复: 19

菜鸟学Python问题集

[复制链接]
发表于 2015-6-14 08:31:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wwsw0105 于 2015-6-14 18:45 编辑

在学习Python的过程中,问题多多,总是是发新帖貌似不太好,一方面为了方便自己查阅曾经的问题,及时复习,另一方面也是为了少浪费点论坛资源,决定弄个自己的问题集。以后的问题都在这一个帖子中贴出。
首先第一个问题:先上代码:
  1. import xlrd
  2. data = xlrd.open_workbook(r'A:\python\test.xlsx')
  3. sheetnums = data.nsheets
  4. for n in range(sheetnums):
  5.     table = data.sheet_by_index(n)
  6.     nrows = table.nrows
  7.     for i in range (nrows):
  8.         cell1 = table.cell_value(i,15)
  9.         cell2 = table.cell_value(i,18)
  10.         if cell2 == cell1:
  11.             if cell2 == ['']:
  12.                 print('空')
  13.             else:
  14.                 print (cell1,cell2)
  15.                 print (table.name)

复制代码

代码中这段为啥判断不了,判断这个单元格是否为空应该怎么写?请前辈指教
  1.         if cell2 == cell1:
  2.                     if cell2 == ['']:
  3.                        print('空')
复制代码

我后来改变思路,虽然也实现了想要的功能,但还是对上面那个问题比较困惑。还有我初学Python,目前还在练习多写代码,现阶段主要想用python处理excel,解决一些平时工作中繁琐的任务,希望有人能提供一些详细的关于python处理excel的教程,感激不尽~!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-6-20 10:33:38 | 显示全部楼层
课后习题中的这个问题没搞明白,求高手指点,
请问以下这句代码会打印什么?
  1. >>> "{{1}}".format("不打印", "打印")
复制代码

结果是‘{1}’:cry
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-14 11:31:07 | 显示全部楼层
N0.2
同样先上代码:
  1. def mysum(L):
  2.     print (L)
  3.     if not L:
  4.         return 0
  5.     else:
  6.         return L[0] + mysum(L[1:])
  7. a = mysum([1,2,3,4,5])
  8. print (a)
复制代码

运行结果:
  1. [1, 2, 3, 4, 5]
  2. [2, 3, 4, 5]
  3. [3, 4, 5]
  4. [4, 5]
  5. [5]
  6. []
  7. 15
复制代码

我的问题是为啥没见到程序结束时,这段代码的运行结果,不应该有个'0'返回的吗?
  1.     if not L:
  2.         return 0
复制代码

还有个小问题,上代码
  1. >>> a = [5]
  2. >>> a[1:]
  3. []
  4. >>> a[1]
  5. Traceback (most recent call last):
  6.   File "<pyshell#6>", line 1, in <module>
  7.     a[1]
  8. IndexError: list index out of range
复制代码

列表a只有一个元素,当用a[1]索引时,出现错误,这个我可以理解,但当用a[1:]时为啥能返回一个空的列表,如何理解?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-14 12:04:46 | 显示全部楼层
好文要定!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2015-6-14 20:51:41 | 显示全部楼层

谢啦,但我看出来你其实是来混币的:lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2015-6-14 21:29:05 | 显示全部楼层
抱歉,第一个问题没处理过excel不能为你解答。
第二个问题第一个是返回值只是个值,并不是要打印到屏幕上。不过你赋值给a了,所以这里的返回值是1+2+3+4+5+0,你把0变成其他的就可以看出来了。
第三个这个算列表的特性吧。你要是实在想理解这可能是因为,a[1]是你要取第2个元素。但是取不到,所以报错。a[1:]这样是从第2个元素开始取到最后一个,那第二个元素是啥,啥也不是就没有,到最后一个(不包括最后一个)。所以返回了[]。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-14 22:28:35 | 显示全部楼层
自己尝试动手 解决一下,
1、可以把cell2的类型打印出来看一下print(type(cell2))
2、可以把cell2的值打印出来看一下print(cell2)
两个都打印出来,你自己就知道为啥 这条if语句过不去了~~

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
~风介~ + 5 + 5 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-15 00:36:02 | 显示全部楼层
我记得 openpyxl 里的空单元格,在Python里是None,xlrd没用过,你可以试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 15:35:45 | 显示全部楼层
wei_Y 发表于 2015-6-14 21:29
抱歉,第一个问题没处理过excel不能为你解答。
第二个问题第一个是返回值只是个值,并不是要打印到屏幕上 ...

谢谢斑竹,讲的很透彻
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 16:18:08 | 显示全部楼层
lightninng 发表于 2015-6-14 22:28
自己尝试动手 解决一下,
1、可以把cell2的类型打印出来看一下print(type(cell2))
2、可以把cell2的值打 ...

谢谢啦,或许这就叫做授人以鱼,不如授人以渔吧。把类型打出来一看,发现不是列表,把括号去掉就可以了。非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 16:20:52 | 显示全部楼层
Reed 发表于 2015-6-15 00:36
我记得 openpyxl 里的空单元格,在Python里是None,xlrd没用过,你可以试试

试了下,在xlrd里不管用,同样感谢你给提的意见
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-15 20:07:17 | 显示全部楼层
wwsw0105 发表于 2015-6-15 16:18
谢谢啦,或许这就叫做授人以鱼,不如授人以渔吧。把类型打出来一看,发现不是列表,把括号去掉就可以了。 ...

大家都这么一步一步过来的,楼主加油~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 21:21:19 | 显示全部楼层
lightninng 发表于 2015-6-15 20:07
大家都这么一步一步过来的,楼主加油~~

谢谢你的鼓励,其实在我学习的路上,你不断更新的帖子给我提供了强大的动力哦,我也正在实行个100天计划,才持续6天,:lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-15 22:20:31 | 显示全部楼层
wwsw0105 发表于 2015-6-15 21:21
谢谢你的鼓励,其实在我学习的路上,你不断更新的帖子给我提供了强大的动力哦,我也正在实行个100天计划 ...

加油,学习就是贵在坚持,当然有好伙伴一起奋斗,相互支持最好了~~:handshake
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-17 23:43:41 | 显示全部楼层
和java 类似大家觉的呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-18 20:18:06 | 显示全部楼层
:lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-20 19:43:25 | 显示全部楼层
wwsw0105 发表于 2015-6-14 11:31
N0.2
同样先上代码:

返回的0是给上一个函数看的file:///storage/emulated/0/DCIM/Camera/ii.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-24 16:07:49 | 显示全部楼层
怎么不用VBA来解决你的问题呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-24 16:09:10 | 显示全部楼层
没有太复杂的逻辑判断,没有要求程序运行的速度,完全可以用VBA来解决EXCEL问题。:lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-24 22:06:06 | 显示全部楼层
对于第一个问题,我想说楼主我不会,但是我想知道你在哪学的这个模块,我最近想搞操作office的模块,win32com和openxml等等乱七八糟的看到不是不知道选哪个好,而且哪个我也没找到相关的中文文档或者教程。
对于第二个问题,return 0 了但是程序没有结束,递归没有结束只是返回给上一个值了,一步一步计算一下应该就能清楚。
对于第三个问题,你本身就给了一个元素,调用这个元素应该是a[0],当你从1开始分片就是从一个什么都没有的地方到一个什么都没有的地方,自然应该是空了,不然楼主认为应该是什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-16 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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