鱼C论坛

 找回密码
 立即注册
查看: 528|回复: 8

[已解决]python 20讲课后作业

[复制链接]
发表于 2020-4-2 11:35:49 | 显示全部楼层 |阅读模式

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

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

x
lenth = len(str1)
counta = 0
countb = 0
for i in range(lenth-4):
    if str1[i] == '\n':
        continue
    if str1[i].islower():
        for each in str1[i-3:i]:
            if each.isupper():
                counta += 1
        for some in str1[i+1:i+4]:
            if some.isupper():
                countb += 1   
        if counta == 3 and countb == 3:
            if (str1[i-4].islower()) and (str1[i+4].islower()):
                print(str1[i],end="")

这个代码问题出在哪里?为什么运行之后没有东西出来?
最佳答案
2020-4-2 13:31:08
判断思路对了, counta、countb初始化位置错了,现在的位置,只有第一次循环有正确值,后面会一直累加,当然就不会有正确答案了,换到循环里就OK了。
  1. lenth = len(str1)
  2. for i in range(lenth-4):
  3.     counta = 0        #放这里才能每次循环有正确的值
  4.     countb = 0
  5.     if str1[i] == '\n':
  6.         continue
  7.     if str1[i].islower():
  8.         for each in str1[i-3:i]:
  9.             if each.isupper():
  10.                 counta += 1
  11.         for some in str1[i+1:i+4]:
  12.             if some.isupper():
  13.                 countb += 1   
  14.         if counta == 3 and countb == 3:
  15.             if (str1[i-4].islower()) and (str1[i+4].islower()):
  16.                 print(str1[i],end="")
复制代码

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

使用道具 举报

发表于 2020-4-2 11:38:27 | 显示全部楼层
str1是啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-2 11:44:41 | 显示全部楼层
就是这个文档

string2.zip

6.17 KB, 下载次数: 1

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

使用道具 举报

 楼主| 发表于 2020-4-2 11:49:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 11:52:11 | 显示全部楼层

你这个代码要干嘛啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-2 12:05:35 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-2 11:52
你这个代码要干嘛啊?

    a) 每位密码为单个小写字母Powered by bbs.fishc.com
    b) 每位密码的左右两边均有且只有三个大写字母j~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 12:58:15 | 显示全部楼层
  1. str1 = 'AAAaBBBddfasSSS3GGGok'
  2. lenth = len(str1)
  3. counta = 0
  4. countb = 0
  5. for i in range(lenth-4):
  6.     if str1[i] == '\n':
  7.         continue
  8.     if str1[i].islower():
  9.         for each in str1[i-3:i]:
  10.             if each.isupper():
  11.                 counta += 1
  12.         for some in str1[i+1:i+4]:
  13.             if some.isupper():
  14.                 countb += 1
  15.         if counta == 3 and countb == 3:
  16.             if (str1[i-4].islower()) and (str1[i+4].islower()):
  17.                 print(str1[i],end="")
复制代码


你这个代码只能检测开始第一部分里面是否有符合要的, 你替换字符测试几次看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 13:31:08 | 显示全部楼层    本楼为最佳答案   
判断思路对了, counta、countb初始化位置错了,现在的位置,只有第一次循环有正确值,后面会一直累加,当然就不会有正确答案了,换到循环里就OK了。
  1. lenth = len(str1)
  2. for i in range(lenth-4):
  3.     counta = 0        #放这里才能每次循环有正确的值
  4.     countb = 0
  5.     if str1[i] == '\n':
  6.         continue
  7.     if str1[i].islower():
  8.         for each in str1[i-3:i]:
  9.             if each.isupper():
  10.                 counta += 1
  11.         for some in str1[i+1:i+4]:
  12.             if some.isupper():
  13.                 countb += 1   
  14.         if counta == 3 and countb == 3:
  15.             if (str1[i-4].islower()) and (str1[i+4].islower()):
  16.                 print(str1[i],end="")
复制代码

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

使用道具 举报

发表于 2020-4-2 13:48:59 | 显示全部楼层
虽然以上的代码可以运行,但是效率不高,一个是没必要判断'\n',因为str(1).islower()就会排除掉'\n',所以删除这个判断程序正常运行,二是累加计算大写的方法,你的代码无论如何,都会把前后6个字符检测一遍,没有必要,只要一个不符,就可以判断不符了,修改代码如下:
  1. lenth = len(str1)
  2. for i in range(lenth-4):
  3.     allupper=True
  4.     if str1[i].islower():
  5.         for each in str1[i-3:i]+str1[i+1:i+4]:
  6.             if not each.isupper():
  7.                 allupper=False
  8.                 break
  9.         if allupper:
  10.             if (str1[i-4].islower()) and (str1[i+4].islower()):
  11.                 print(str1[i],end="")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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