鱼C论坛

 找回密码
 立即注册
查看: 3852|回复: 3

关于第20课动手操作题的疑惑

[复制链接]
发表于 2014-2-26 20:27:07 | 显示全部楼层 |阅读模式
1鱼币
第一题我是这样写的:
    txt = '''黏贴的文本里的字符串'''
    #判断各种特殊字符分别在文本中出现的次数
    symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
    letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    #迭代symbols中的每个字符
    for each in symbols:
        #判断字符是否在txt文件中,如果是,则计算该字符在文本中一共有几个            
        if each in txt:
            num = txt.count(each)
            print('字符 %s 在文本当中一共出现了%d 次' % (each,num))
    #找出字母并打印
    for each2 in txt:      #如果这里换成for each2 in letters那么打印出来的字母是按照letters里的排序顺序出现的  
        if each2 in letters:
            print(each2,end = '')
论坛小甲鱼给出的参考答案
str1 = '''拷贝过来的字符串'''
list1 = []

for each in str1:
    if each not in list1:
        if each == '\n':
            print('\\n', str1.count(each))
        else:
            print(each, str1.count(each))
        list1.append(each)


实在不明白其中if语句的道理,求达人解释解释!!
另外看看我自己的写法有没有不合理的地方?望指正。


第二题。
我是这样写的:
利用切片来判断字符前后3个位置的字符是否为大写。

txt = '''黏贴的文本字符串'''
length = len(txt)
for i in range(length):
    if txt.islower() and txt[(i+1):(i+4)].isupper() and txt[(i-3):(i)].isupper() :

        print(txt,end = '')


小甲鱼给出的参考答案:
str1 = '''拷贝过来的字符串'''
countA = 0
countB = 0
countC = 0
length = len(str1)
for i in range(length):
    if str1 == '\n':
[i]
        continue
    if str1.isupper():

        if countB == 1:
            countC += 1
            countA = 0
        else:
            countA += 1
        continue
    if str1.islower() and countA == 3:

        countB = 1
        countA = 0
        target = i
        continue
    if str1.islower() and countC == 3:

        print(str1[target], end='')
    countA = 0
    countB = 0
    countC = 0


不太明白思路,能否解释一下下。感激不尽。





[/i]

最佳答案

查看完整内容

str1 = '''\nhelloworld''' list1 = [] #这样写主要原因是无法用 print(each, str1.count(each))输出\n for each in str1:#每一个在str1中的成员 if each not in list1:#每一个在str1但不在list1中的成员 if each == '\n':#如果是\n的话 print('\\n', str1.count(each))#输出\n并输出其在str1中的次数 else:#如果不是\n的话 print(each, str1.count(each))#输出它并输出其在 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-26 20:27:08 | 显示全部楼层
str1 = '''\nhelloworld'''
list1 = []
#这样写主要原因是无法用 print(each, str1.count(each))输出\n
for each in str1:#每一个在str1中的成员
    if each not in list1:#每一个在str1但不在list1中的成员
        if each == '\n':#如果是\n的话
            print('\\n', str1.count(each))#输出\n并输出其在str1中的次数
        else:#如果不是\n的话
            print(each, str1.count(each))#输出它并输出其在str1中的次数
        list1.append(each)#把每个不在list1中的成员添加的list1中,防止它被再次输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-27 17:17:33 | 显示全部楼层
看样子是用python写的,自己实际运行一下就应该明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:07:59 | 显示全部楼层
~风介~ 发表于 2014-2-26 20:27
str1 = '''\nhelloworld'''
list1 = []
#这样写主要原因是无法用 print(each, str1.count(each))输出\n
...

学到了!!厉害厉害!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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