鱼C论坛

 找回密码
 立即注册
查看: 3789|回复: 11

小甲鱼第20讲课后作业的动动手代码疑问

[复制链接]
发表于 2019-8-6 21:25:52 | 显示全部楼层 |阅读模式

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

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

x
第20讲的题目是:
第0题:请用已学过的知识编写程序,统计下边这个长字符串中各个字符出现的次数并找到小甲鱼送给大家的一句话。
我的代码是:
str1_new = set(str1) #利用集合统计元素唯一性的特点
total = {}
for each in str1_new:
    total[each] = str1.count(each)
print(total)
统计结果是没错。。但结果是乱序的,无法查看其中的句子。。为什么小甲鱼的代码就可以看出隐藏的句子呢?

第1题:
找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
    a) 每位密码为单个小写字母
    b) 每位密码的左右两边均有且只有三个大写字母
我的代码是:
se_list = ''
for i in range(len(str2)):
    if str2[i].islower():
        if (str2[i-4:i-1].isupper()) and (str2[i+1:i+4].isupper()):
            if (str2[i-5].islower()) and (str2[i+4].islower()):
                se_list +=str2[i]
print(se_list)
同样的情况,我也可以统计出其中的密码字母。。但却是乱序的,无法组出相应的句子。。。为什么小甲鱼的代码就可以做到排序呢。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-6 21:38:55 | 显示全部楼层
小甲鱼的代码都忘了,你怎么学回去了,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-6 21:57:34 | 显示全部楼层
塔利班 发表于 2019-8-6 21:38
小甲鱼的代码都忘了,你怎么学回去了,,

做到后面,觉得基础还是要打扎实点。。
哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-7 08:14:52 | 显示全部楼层
你的代码是不是有错呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-7 20:15:56 | 显示全部楼层
falseh 发表于 2019-8-7 08:14
你的代码是不是有错呀

代码可以正常执行的。。。
你可以试试。。
关键是无法和小甲鱼的代码一样做到排序。。这样就没法看出来隐藏的话,和密码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-7 20:32:13 | 显示全部楼层
python几
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-7 21:30:37 | 显示全部楼层

3啊。。。零基础入门学python第一版的课后作业
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 22:08:55 | 显示全部楼层
        if (str2[i-4:i-1].isupper())
            if (str2[i-5].islower()) 错了吧。而且我运行出来还多了几个字母
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 22:26:10 | 显示全部楼层
file=open('D:/py/fishc/string2.txt','r')
str1=file.read()
str1=str1.replace('\n','')
str2=''
length=len(str1)
for i in range(3,length):
    if str1[i].islower():
        if str1[i-3:i].isupper() and str1[i-4].islower() and str1[i+1:i+4].isupper() and str1[i+4].islower():
            str2 += str1[i]
print(str2)
file.close()
这是第一种
import re 
def fn():
    f = open('D:/py/fishc/string2.txt','r')
    a = f.read()
    l = re.findall('[^A-Z]{1}[A-Z]{3}[a-z]{1}[A-Z]{3}[^A-Z]{1}',a)
    for i in l:  
        print(i[4],end='') 
fn()
百度到的第二种,虽然学过正则表达式,但这里没想到可以用这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 22:49:56 | 显示全部楼层
第0题
小甲鱼的代码是每出现一个新字符统计一次,你的用set函数进行了一次重置,顺序就变了,当然输出值也乱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 23:07:07 | 显示全部楼层
第1题,首先你的切片就有问题,改完程序还是不对,然后我在判断中加入了前后字符是否 有八位(划重点)的判断
并且在txt中把所有的换行符都去掉
这样再跑一遍代码,就一致了
se_list = ''
for i in range(4, len(str1) - 3):
    if str1[i].islower():
        if (str1[i - 3:i].isupper()) and (str1[i + 1:i + 4].isupper()) and (
                (len(str1[i - 3:i]) + len(str1[i + 1: i + 4])) == 6):
            if (str1[i - 4].islower()) and (str1[i + 4].islower()) and (len(str1[i - 4]) + len(str1[i + 3]) == 2):
                se_list += str1[i]
print(se_list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 23:58:55 | 显示全部楼层
3333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 07:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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