鱼C论坛

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

[已解决]大家好, 这个内嵌函数和闭包的练习题求大佬指点

[复制链接]
发表于 2020-5-20 18:49:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hwang.me 于 2020-5-20 10:52 编辑



大佬们, 小萌新在做这道题, 有些地方还是不明白, 为什么12行是 for i in range (length) 不能直接是for i in f2呢? 还有就是最后43行到46行 是为什么不清空前边的大写字母,只清空小写字母和后边的大写字母啊。。 求大佬拍打。。[表情]
最佳答案
2020-5-20 18:58:26
正好今天也有鱼油问,就重新写了一次,嘿嘿 你看下我写的这个代码会不会更好理解些
str1 = """小甲鱼准备的txt文件内容"""
a = []   # 用于统计小写字母的索引值
b = 0    # 初始化b的数值

for i in str1:  # 遍历出所有小写字母的下标,添加入 a 列表,用于为下面索引做准备条件
    if i.islower():
        a.append(str1.index(i,b,len(str1)))
    b += 1

c = 1     # 初始化代表第第二个 小写字母的下标
b = 0     # 初始化b 用于当作开始或上一个小写字母的下标

count_left = 0  # 用于计算小写字母左边的大写字母数量
count_right = 0 # 用于计算小写字母右边边的大写字母数量

while c+1 < len(a):  # 只需要c的索引大于 a 的列表长度即可退出循环

    d = str1[b:a[c]]   # 记录小写字母左边的所有字母
    f = str1[(a[c]+1):a[c+1]]  # 记录小写字母右边的所有字母

    for i in d:   # 遍历左边的大写字母出现的次数
        if i.isupper():
            count_left += 1
    for i in f:   # 遍历右边的大写字母出现的次数
        if i.isupper():
              count_right += 1

    if count_left == count_right == 3: # 如果等于 3 即是符合题意 打印字母
        print(str1[a[c]],end='')

    count_right,count_left = 0,0  # 重新初始化记数参数,为下一次循环计数做准备

    b = a[c] # b为赋值为下一个小写字母的索引值

    c += 1 # c为b的下一个小写字母的索引

这是问题

这是问题

这是代码

这是代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 18:58:26 | 显示全部楼层    本楼为最佳答案   
正好今天也有鱼油问,就重新写了一次,嘿嘿 你看下我写的这个代码会不会更好理解些
str1 = """小甲鱼准备的txt文件内容"""
a = []   # 用于统计小写字母的索引值
b = 0    # 初始化b的数值

for i in str1:  # 遍历出所有小写字母的下标,添加入 a 列表,用于为下面索引做准备条件
    if i.islower():
        a.append(str1.index(i,b,len(str1)))
    b += 1

c = 1     # 初始化代表第第二个 小写字母的下标
b = 0     # 初始化b 用于当作开始或上一个小写字母的下标

count_left = 0  # 用于计算小写字母左边的大写字母数量
count_right = 0 # 用于计算小写字母右边边的大写字母数量

while c+1 < len(a):  # 只需要c的索引大于 a 的列表长度即可退出循环

    d = str1[b:a[c]]   # 记录小写字母左边的所有字母
    f = str1[(a[c]+1):a[c+1]]  # 记录小写字母右边的所有字母

    for i in d:   # 遍历左边的大写字母出现的次数
        if i.isupper():
            count_left += 1
    for i in f:   # 遍历右边的大写字母出现的次数
        if i.isupper():
              count_right += 1

    if count_left == count_right == 3: # 如果等于 3 即是符合题意 打印字母
        print(str1[a[c]],end='')

    count_right,count_left = 0,0  # 重新初始化记数参数,为下一次循环计数做准备

    b = a[c] # b为赋值为下一个小写字母的索引值

    c += 1 # c为b的下一个小写字母的索引
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 19:04:30 | 显示全部楼层

为什么12行是 for i in range (length) 不能直接是for i in f2呢?

for i in range (length) 这里是遍历索引值,但这for i in f2 是遍历文本每行的内容
因为后面要用到索引值,所以遍历range (length) 而不遍历 f2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 19:06:11 | 显示全部楼层
emmm 我发现你问的题目和标题完全无关啊。。。。什么情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 20:57:48 | 显示全部楼层
如果Twilight6帮助到你,记得给Twilight6设置最佳哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 05:47:24 | 显示全部楼层
Twilight6 发表于 2020-5-20 10:58
正好今天也有鱼油问,就重新写了一次,嘿嘿 你看下我写的这个代码会不会更好理解些

怎么办, 小姐姐, 我还是看不太懂。。。唔唔唔。。。 姐姐的头像让我更加有了晕车的感觉。。。呜呜呜呜 求指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 05:48:52 | 显示全部楼层
Twilight6 发表于 2020-5-20 11:06
emmm 我发现你问的题目和标题完全无关啊。。。。什么情况

我也不知道呢, 那个课后练习的帖子是这个标题。。。。小姐姐, 你的代码 我看不懂。 呜呜呜呜。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 07:30:58 | 显示全部楼层
hwang.me 发表于 2020-5-21 05:48
我也不知道呢, 那个课后练习的帖子是这个标题。。。。小姐姐, 你的代码 我看不懂。 呜呜呜呜。{:5_104: ...

哪里看不懂呢?我可以给你解释~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 09:39:07 | 显示全部楼层
Twilight6 发表于 2020-5-21 07:30
哪里看不懂呢?我可以给你解释~

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

使用道具 举报

发表于 2020-5-21 09:49:35 | 显示全部楼层

不 。。。我居然没发现他写的是小姐姐。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 09:50:44 | 显示全部楼层
Twilight6 发表于 2020-5-21 09:49
不 。。。我居然没发现他写的是小姐姐。。。

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

使用道具 举报

 楼主| 发表于 2020-5-21 18:19:55 | 显示全部楼层
Twilight6 发表于 2020-5-21 01:49
不 。。。我居然没发现他写的是小姐姐。。。

对不起 我没注意你是男孩子, 感觉你的头像很少女,所以酒喊了小姐姐。。 你是不是时差党?我看你在瑞典, 我在英国这边。。。 我先看看代码 总结一下问题 然后再一起问你。。谢谢你哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 18:21:45 | 显示全部楼层
hwang.me 发表于 2020-5-21 18:19
对不起 我没注意你是男孩子, 感觉你的头像很少女,所以酒喊了小姐姐。。 你是不是时差党?我看你在瑞典 ...

哈哈  你记得设置下最佳就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 20:47:06 | 显示全部楼层
Twilight6 发表于 2020-5-21 10:21
哈哈  你记得设置下最佳就好

我把我的问题都放在了每行代码后边的括号中了


str1 = """小甲鱼准备的txt文件内容"""
a = []   # 用于统计小写字母的索引值
b = 0    # 初始化b的数值

for i in str1:  
# 遍历出所有小写字母的下标,添加入 a 列表,用于为下面索引做准备条件 (为什么只是小写字母?)
    if i.islower():
        a.append(str1.index(i,b,len(str1)))                  (index的括号里边的三个参数是什么意思啊?)
    b += 1                                                            (b在这里的作用是什么?)

c = 1     # 初始化代表第第二个 小写字母的下标       (这里吃cb的作用是什么?b为什么又要初始化一次)
b = 0     # 初始化b 用于当作开始或上一个小写字母的下标

count_left = 0  # 用于计算小写字母左边的大写字母数量
count_right = 0 # 用于计算小写字母右边边的大写字母数量

while c+1 < len(a):  
# 只需要c的索引大于 a 的列表长度即可退出循            (这里是字符串切片吗?b到a的字段,那方括号里的c是什么意思啊?)

    d = str1[b:a[c]]   # 记录小写字母左边的所有字母                           
    f = str1[(a[c]+1):a[c+1]]  # 记录小写字母右边的所有字母

    for i in d:   # 遍历左边的大写字母出现的次数
        if i.isupper():
            count_left += 1
    for i in f:   # 遍历右边的大写字母出现的次数
        if i.isupper():
              count_right += 1

    if count_left == count_right == 3: # 如果等于 3 即是符合题意 打印字母
        print(str1[a[c]],end='')

    count_right,count_left = 0,0  # 重新初始化记数参数,为下一次循环计数做准备

    b = a[c] # b为赋值为下一个小写字母的索引值

    c += 1 # c为b的下一个小写字母的索引                                       (哭了。。。)




为什么 回复不能是图片???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 04:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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