老笨啊 发表于 2019-8-6 21:25:52

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

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

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

塔利班 发表于 2019-8-6 21:38:55

小甲鱼的代码都忘了,你怎么学回去了,,

老笨啊 发表于 2019-8-6 21:57:34

塔利班 发表于 2019-8-6 21:38
小甲鱼的代码都忘了,你怎么学回去了,,

做到后面,觉得基础还是要打扎实点。。
哈哈

falseh 发表于 2019-8-7 08:14:52

你的代码是不是有错呀{:10_269:}{:10_269:}{:10_269:}

老笨啊 发表于 2019-8-7 20:15:56

falseh 发表于 2019-8-7 08:14
你的代码是不是有错呀

代码可以正常执行的。。。
你可以试试。。
关键是无法和小甲鱼的代码一样做到排序。。这样就没法看出来隐藏的话,和密码

falseh 发表于 2019-8-7 20:32:13

python几

老笨啊 发表于 2019-8-7 21:30:37

falseh 发表于 2019-8-7 20:32
python几

3啊。。。零基础入门学python第一版的课后作业

whiteness 发表于 2020-3-17 22:08:55

      if (str2.isupper())
            if (str2.islower()) 错了吧。而且我运行出来还多了几个字母

whiteness 发表于 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.islower():
      if str1.isupper() and str1.islower() and str1.isupper() and str1.islower():
            str2 += str1
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}{3}{1}{3}[^A-Z]{1}',a)
    for i in l:
      print(i,end='')
fn()
百度到的第二种,虽然学过正则表达式,但这里没想到可以用这个

ctOS_ 发表于 2020-3-17 22:49:56

第0题
小甲鱼的代码是每出现一个新字符统计一次,你的用set函数进行了一次重置,顺序就变了,当然输出值也乱

ctOS_ 发表于 2020-3-17 23:07:07

第1题,首先你的切片就有问题,改完程序还是不对,然后我在判断中加入了前后字符是否 有八位(划重点)的判断
并且在txt中把所有的换行符都去掉
这样再跑一遍代码,就一致了
se_list = ''
for i in range(4, len(str1) - 3):
    if str1.islower():
      if (str1.isupper()) and (str1.isupper()) and (
                (len(str1) + len(str1)) == 6):
            if (str1.islower()) and (str1.islower()) and (len(str1) + len(str1) == 2):
                se_list += str1
print(se_list)

lwje1009 发表于 2020-10-22 23:58:55

3333
页: [1]
查看完整版本: 小甲鱼第20讲课后作业的动动手代码疑问