鱼C论坛

 找回密码
 立即注册
查看: 1309|回复: 13

[已解决]《零基础入门学习Python》020讲课后练习动动手1这样编写代码为什么得不到正确答案?

[复制链接]
发表于 2017-11-24 17:24:29 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 jle55555 于 2017-11-24 19:49 编辑
  1. str2='''小甲鱼老师发的string2文本文档内容粘贴'''
  2. str2=str2.replace('\n','')
  3. low='abcdefghijklmnopqrstuvwxyz'
  4. high='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  5. lis1=[]
  6. length=len(str2)
  7. for i in range(3,length-3):
  8.     if str2[i] in low:
  9.         if (str2[i-1] in high) and (str2[i-2] in high) and (str2[i-3] in high) and (str2[i+1] in high) and (str2[i+2] in high) and (str2[i+3] in high):
  10.             lis1.append(str2[i])
  11. print(lis1)
复制代码
最佳答案
2017-11-25 11:53:53
本帖最后由 ooxx7788 于 2017-11-25 11:55 编辑
  1. f = open(r'C:\Users\letian\Documents\python\string2.txt')
  2. f_str = f.read()
  3. lenth = len(f_str)
  4. password = []
  5. for i in range(4, lenth-4):
  6.     pw = f_str[i]
  7.     if pw.islower():
  8.         if f_str[i-4].islower() and f_str[i+4].islower() and f_str[i-3].isupper() \
  9.                 and f_str[i-2].isupper() and f_str[i-1].isupper() and f_str[i+1].isupper() \
  10.                 and f_str[i+2].isupper() and f_str[i+3].isupper():
  11.             password.append(pw)
  12. print(''.join(password))
复制代码


这是我学时候写的代码。 主要是要找到符合aAAAaAAAa这种结构中的中间那个a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-24 19:34:39 | 显示全部楼层
因为/n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-24 19:39:35 | 显示全部楼层

你是指换行符'\n'吗?我已经在02.行代码中用replace方法全部取消掉了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 19:41:44 | 显示全部楼层
你只去掉了前后的空格和回车符,每一行的换行符去不掉。这个是这道题的难点所在,通过迭代字符串的时候,每一行都有个“\n”符号存在,你无法跳过。所以小甲鱼才用了逻辑推理的算法来解决这个问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-24 19:52:27 | 显示全部楼层
铁棍阿童木 发表于 2017-11-24 19:41
你只去掉了前后的空格和回车符,每一行的换行符去不掉。这个是这道题的难点所在,通过迭代字符串的时候,每 ...

strip()方法好像是只能去前后的,但我用的是replace()方法,这是IDLE中的试验
>>> string='''qwer
126
zz
vb'''
>>> string
'qwer\n126\nzz\nvb'
>>> string.replace('\n','')
'qwer126zzvb'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 21:03:30 | 显示全部楼层
你难道忘了windows系统的换行符是“\n\r”吗,你可以试着把 "\n\r" 替换成 “”试试,也许能行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-24 21:43:13 | 显示全部楼层
铁棍阿童木 发表于 2017-11-24 21:03
你难道忘了windows系统的换行符是“\n\r”吗,你可以试着把 "\n\r" 替换成 “”试试,也许能行。

试过了,还是不行...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 23:38:33 | 显示全部楼层
所有课后作业,我也就这个没完成。小甲鱼逻辑推理的方法是最高效的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 10:06:08 | 显示全部楼层
铁棍阿童木 发表于 2017-11-24 23:38
所有课后作业,我也就这个没完成。小甲鱼逻辑推理的方法是最高效的!

嗯,其实小甲鱼老师的方法我也理解,但自己的一些方法如果能搞懂不能实现的原因,可能也会有所收获。我完成作业中很大一部分收获就是在弄清程序为什么出错,所以对于这个错误还是很在意的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-25 11:53:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ooxx7788 于 2017-11-25 11:55 编辑
  1. f = open(r'C:\Users\letian\Documents\python\string2.txt')
  2. f_str = f.read()
  3. lenth = len(f_str)
  4. password = []
  5. for i in range(4, lenth-4):
  6.     pw = f_str[i]
  7.     if pw.islower():
  8.         if f_str[i-4].islower() and f_str[i+4].islower() and f_str[i-3].isupper() \
  9.                 and f_str[i-2].isupper() and f_str[i-1].isupper() and f_str[i+1].isupper() \
  10.                 and f_str[i+2].isupper() and f_str[i+3].isupper():
  11.             password.append(pw)
  12. print(''.join(password))
复制代码


这是我学时候写的代码。 主要是要找到符合aAAAaAAAa这种结构中的中间那个a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 12:37:19 | 显示全部楼层
ooxx7788 发表于 2017-11-25 11:53
这是我学时候写的代码。 主要是要找到符合aAAAaAAAa这种结构中的中间那个a

你的代码我有两个疑问:第一,你没有设置遇到换行符时的操作呀;第二,为什么“ if f_str[i-4].islower() and f_str[i+4].islower()”,这两个字母是大写还是小写都无所谓啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-25 14:57:55 | 显示全部楼层
jle55555 发表于 2017-11-25 12:37
你的代码我有两个疑问:第一,你没有设置遇到换行符时的操作呀;第二,为什么“ if f_str.islower() and  ...

好像如果直接从文件里面读出来的是没有换行符的。而你们复制进来的是有换行符的。

开始和末尾两位在题目中没有明确说明,但实际上是包含这个约束的,否则就不满足两边有且只有3个大写字母的要求。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 16:12:18 | 显示全部楼层
ooxx7788 发表于 2017-11-25 14:57
好像如果直接从文件里面读出来的是没有换行符的。而你们复制进来的是有换行符的。

开始和末尾两位在题 ...

好的,十分感谢,我好像就是忘记‘有且只有’这个约束,我试试看哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 16:20:06 | 显示全部楼层
ooxx7788 发表于 2017-11-25 14:57
好像如果直接从文件里面读出来的是没有换行符的。而你们复制进来的是有换行符的。

开始和末尾两位在题 ...

果真,我就是忘记“有且仅有”的约束,困扰两天的问题终于解决,谢谢啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 10:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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