鱼C论坛

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

第20讲动动手1,有个小问题

[复制链接]
发表于 2020-5-16 17:59:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 一文先生 于 2020-5-16 19:54 编辑
str1 = '''复制进来的参数'''
if (str1[3].islower()) and (str1[0:3].isupper()) and (str1[4:7].isupper()) and (not str1[7].isupper()) and ('\n' not in str1[0:3]+str1[4:7]):
    print(str1[3],end = ' ')
else:
    
    for i in range(4,len(str1)-5):
        if ((str1[i].islower()) and (str1[i-3:i].isupper()) and (str1[i+1:i+4].isupper()) and (not str1[i+4].isupper()) and
            (str1[i+4]!='\n') and (str1[i-4]!= '\n') and (not str1[i-4].isupper()) and ('\n' not in str1[i-3:i]+str1[i+1:i+4])):  
            print(str1[i],end= ' ')
        else:
            continue
上面我的代码运行的最终结果是正确的。 问题在这里!:最后那个条件('\n' not in str1[i-3:i]+str1[i+1:i+4])如果我拆分成('\n' not in str1[i-3:i]) and ('\n'  not in str1[i+1:i+4]) 那么结果会不一样,这是为什么呢?!不是应该一个意思吗?求助各位老师 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-16 18:02:14 | 显示全部楼层
它应该是要到str1[i-3:i]+str1[i+1:i+4]这个组合里面
去找\n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 18:02:42 | 显示全部楼层
上面我的代码运行的最终结果是正确的。
你是想让他结果不正确吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 18:03:35 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-16 18:02
你是想让他结果不正确吗?

看他的代码
里面有一个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 18:05:15 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-16 18:02
你是想让他结果不正确吗?

我前面写成('\n' not in str1[i-3:i]) and ('\n'  not in str1[i+1:i+4]),发现答案不对,才改为('\n' not in str1[i-3:i]+str1[i+1:i+4])的 但不知道为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 18:06:08 | 显示全部楼层
wuqramy 发表于 2020-5-16 18:02
它应该是要到str1+str1这个组合里面
去找\n

那请问跟('\n' not in str1[i-3:i]) and ('\n'  not in str1[i+1:i+4])有何区别呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 18:09:24 | 显示全部楼层
一文先生 发表于 2020-5-16 18:06
那请问跟('\n' not in str1) and ('\n'  not in str1)有何区别呢

str1[i-3:i]+str1[i+1:i+4]是这个组合里面只要有\n就返回True
('\n' not in str1[i-3:i]) and ('\n'  not in str1[i+1:i+4])是要在这两个地方有\n才是True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 18:14:26 | 显示全部楼层
wuqramy 发表于 2020-5-16 18:09
str1+str1是这个组合里面只要有\n就返回True
('\n' not in str1) and ('\n'  not in str1)是要在这两个 ...

可是我的目的就是要在str1[i-3:i]和 str1[i+1:i+4]这两个地方都不能有\n呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 18:24:07 | 显示全部楼层
一文先生 发表于 2020-5-16 18:14
可是我的目的就是要在str1和 str1这两个地方都不能有\n呀

那就要用你的第二种写法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 18:34:50 | 显示全部楼层
wuqramy 发表于 2020-5-16 18:24
那就要用你的第二种写法

举个例子:假如字符串:AA\naBB\n  我想达到:\n不能在AA\n和BB\n这两个地方(任意一个地方存在\n都不行),那么我把代码写成:('\n' not in str1[i-3:i]+str1[i+1:i+4])和跟写成:('\n' not in str1[i-3:i]) and ('\n'  not in str1[i+1:i+4])有何区别呢?结果却是有差别的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 18:58:30 | 显示全部楼层
这代码看的难受....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 19:03:52 | 显示全部楼层
额……刚自己又试验了一遍。。发现,这两种写法都是正确的。。。可能在第一次编的时候改了一点地方才导致结果不对吧。超不好意思,那我的问题已解决了,打扰大家了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 19:12:33 | 显示全部楼层
Twilight6 发表于 2020-5-16 18:58
这代码看的难受....
str = '''复制进来的参数'''
if (str1[3].islower()) and (str1[0:3].isupper()) and (str1[4:7].isupper()) and (not str1[7].isupper()) and ('\n' not in str1[0:3]+str1[4:7]):
    print(str1[3],end = ' ')
else:
    
    for i in range(4,len(str1)-5):
        if ((str1[i].islower()) and (str1[i-3:i].isupper()) and (str1[i+1:i+4].isupper()) and (not str1[i+4].isupper()) and
            (not str1[i-4].isupper()) and ('\n' not in str1[i-3:i]+str1[i+1:i+4])):
            print(str1[i],end= ' ')
        else:
            continue
改善了一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 19:25:12 | 显示全部楼层

如果自己解决了问题,就把帖子重新编辑为已解决,或者给上面几楼设置最佳毕竟是幸苦来帮你解决问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 06:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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