鱼C论坛

 找回密码
 立即注册
查看: 1561|回复: 18

20讲,结果不显示

[复制链接]
发表于 2020-3-22 11:23:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 猪猪虾 于 2020-3-22 12:26 编辑

         
         #请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) 每位密码为单个小写字母
#b) 每位密码的左右两边均有且只有三个大写字母
import sys
f=open(r"C:\Users\Administrator\Desktop\python\string2.txt","r")
string=f.read()
string = string.replace('\n','').replace('\r','')
code=[]
for i in range(3,len(string)-4):
        # 最后一个条件是确保左边第4个字母不再是大写字母
        if string[i-3:i].isupper() and  string  [i] .islower() and string[i+1:i+4].isupper() and string[i+4].islower():
            code.append(string[i])
        else:
            break

string1=''.join(code)     #列表转换成字符串
print(string1)
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-22 11:33:58 | 显示全部楼层
。。。
你那个输出的实在是脑回路清奇
这是赋值,不是拼接。。。
再说了,你在循环里直接输出不就好了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 11:45:49 | 显示全部楼层
本帖最后由 Hoiste 于 2020-3-22 11:47 编辑

首先for循环里面的if,string这么长的一段字符串不可能全是大写,所以string.isupper()总是返回False,你要表达的应该是string[i].isupper()吧?
然后你用第二个for循环套if循环这一段多余了,只需要有一个i的位置,我们就可以查找i的前三位,后三位,以及前第四位,后第四位的大小写,还有那个==0是什么鬼。。。
改成
if each.islower() and string[i-3:i].isupper() and string[i+1:i+4].isupper():
        if string[i-4].islower() and string[i+4].islower():
第三,因为里面带有换行符和回车,在Python里面有可能把这当成一个大写字符,你需要用replace方法把\n和\r换成空字符,
string = string.replace('\n','').replace('\r','')
最后,你使用的列表换成字符串输出的办法会让你失望,建议使用下面语句:
string1 = ''.join(code)
最后,建议使用代码格式发代码,方法在内容输入框上方有个<>,点一下弹出输入框,把代码复制进去点确定就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 11:59:09 | 显示全部楼层
Hoiste 发表于 2020-3-22 11:45
首先for循环里面的if,string这么长的一段字符串不可能全是大写,所以string.isupper()总是返回False,你要 ...

我那个==应该是有必要的吧,万一右边的第四个字母还是大写,那中间那个小写字母就不是密码了,0是FALSE,我是想确保那个字母不是大写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:00:00 | 显示全部楼层
猪猪虾 发表于 2020-3-22 11:59
我那个==应该是有必要的吧,万一右边的第四个字母还是大写,那中间那个小写字母就不是密码了,0是FALSE, ...

#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) 每位密码为单个小写字母
#b) 每位密码的左右两边均有且只有三个大写字母
import sys
f=open(r"C:\Users\Administrator\Desktop\python\string2.txt","r")
string=f.read()
string = string.replace('\n','').replace('\r','')
code=[]
for i in range(3,len(string)-3):
            # 最后一个条件是确保左边3个大写字母之后的不再是大写字母
        if string[i-3:i].isupper() and  string[i].islower() and string[i+1:i+4].isupper() and string[i+4].isupper()==0:
            code.append(string[i])
        else:
            break

string1=''.join(code)     #列表转换成字符串
print(string1)

#现在啥也没有了
         
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 12:04:34 | 显示全部楼层
本帖最后由 Hoiste 于 2020-3-22 12:08 编辑
猪猪虾 发表于 2020-3-22 12:00
#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) ...


string.islower()是闹哪样?你要整个字符串都是小写吗?string[i].islower()!!!,然后,你不想第四位是大写你就判断islower()就行啦,我判断代码不是给了吗。。。。而且你前面第四位都还没判断呢

看了一下,非代码界面打中括号会被隐藏,所以会看不到我打的一些东西,用代码说一下string.islower()应该是
string[i].islower()
这体现了用代码格式发代码的重要性了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:07:53 | 显示全部楼层
Hoiste 发表于 2020-3-22 12:04
string.islower()是闹哪样?你要整个字符串都是小写吗?string.islower()!!!,然后,你不想第四位是大 ...

#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) 每位密码为单个小写字母
#b) 每位密码的左右两边均有且只有三个大写字母
import sys
f=open(r"C:\Users\Administrator\Desktop\python\string2.txt","r")
string=f.read()
string = string.replace('\n','').replace('\r','')
code=[]
for i in range(3,len(string)-4):
        # 最后一个条件是确保左边第4个字母不再是大写字母
        if string[i-3:i].isupper() and  string[i].islower() and string[i+1:i+4].isupper() and string[i+4].islower()==0:
            code.append(string[i])
        else:
            break

string1=''.join(code)     #列表转换成字符串
print(string1)
   
         
#我改了,但是。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:08:58 | 显示全部楼层
猪猪虾 发表于 2020-3-22 12:07
#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) ...

我的代码里面不是string.islower,复制粘贴后成那样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 12:09:32 | 显示全部楼层

shi

本帖最后由 Hoiste 于 2020-3-22 12:10 编辑
猪猪虾 发表于 2020-3-22 12:07
#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) ...


我编辑了上面那个回复,你用代码格式发一下,还有,别纠结那个==0表达False,用islower表达小写判断不会让代码出现一些莫名其妙的逻辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:11:03 | 显示全部楼层
猪猪虾 发表于 2020-3-22 12:08
我的代码里面不是string.islower,复制粘贴后成那样的


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 12:13:14 | 显示全部楼层
直接给你看我的吧。。。
string = string.replace('\n','').replace('\r','')

i = 3

for each in string[3:-3]:
    if each.islower() and string[i-3:i].isupper() and string[i+1:i+4].isupper():
        if string[i-4].islower() and string[i+4].islower():
            print(each,end = '')
    i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:13:27 | 显示全部楼层
#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) 每位密码为单个小写字母
#b) 每位密码的左右两边均有且只有三个大写字母
import sys
f=open(r"C:\Users\Administrator\Desktop\python\string2.txt","r")
string=f.read()
string = string.replace('\n','').replace('\r','')
code=[]
for i in range(3,len(string)-4):
        # 最后一个条件是确保左边第4个字母不再是大写字母
        if string[i-3:i].isupper() and  string [i].islower() and string[i+1:i+4].isupper() and string[i+4].islower():
            code.append(string[i])
        else:
            break

string1=''.join(code)     #列表转换成字符串
print(string1)
   
         
         
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:14:35 | 显示全部楼层

好,我重新发了一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 12:16:54 | 显示全部楼层
先给你看看我的吧,密码体我就不弄了。
string = string.replace('\n','').replace('\r','')

i = 3

for each in string[3:-3]:
    if each.islower() and string[i-3:i].isupper() and string[i+1:i+4].isupper():
        if string[i-4].islower() and string[i+4].islower():
            print(each,end = '')
    i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:20:58 | 显示全部楼层
Hoiste 发表于 2020-3-22 12:04
string.islower()是闹哪样?你要整个字符串都是小写吗?string.islower()!!!,然后,你不想第四位是大 ...
#请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
#a) 每位密码为单个小写字母
#b) 每位密码的左右两边均有且只有三个大写字母
import sys
f=open(r"C:\Users\Administrator\Desktop\python\string2.txt","r")
string=f.read()
string = string.replace('\n','').replace('\r','')
code=[]
for i in range(3,len(string)-4):
        # 最后一个条件是确保左边第4个字母不再是大写字母
        if string[i-3:i].isupper() and  string[i].islower() and string[i+1:i+4].isupper() and string[i+4].islower():
            code.append(string[i])
        else:
            break

string1=''.join(code)     #列表转换成字符串
print(string1)
    
         
         
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 12:24:23 | 显示全部楼层

还是不对啊,只输出一个字符了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 12:34:17 | 显示全部楼层
Hoiste 发表于 2020-3-22 12:04
string.islower()是闹哪样?你要整个字符串都是小写吗?string.islower()!!!,然后,你不想第四位是大 ...
不是非代码界面不能输入中括号。是因为html语言中[i]是斜体标记。当遇到[i]后就会把之后的都改为斜体。
html语言中斜体标记:[i]   [/i]
若是中括号内有其他内容则不会出现这种情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 12:47:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 13:44:36 | 显示全部楼层
本帖最后由 Hoiste 于 2020-3-22 13:45 编辑
猪猪虾 发表于 2020-3-22 12:24
还是不对啊,只输出一个字符了


刚刚回复太多被审核了,你的代码不要那句else和break,需要全部字符都扫一遍,要不然一下判断不是密码然后就退出循环了,我试过你的代码了,去掉就成功了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 06:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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