鱼C论坛

 找回密码
 立即注册
查看: 730|回复: 17

[已解决]为什么输出的是个空列表?

[复制链接]
发表于 2020-6-1 22:39:39 | 显示全部楼层 |阅读模式

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

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

x
#5  作业题,找密码,条件:密码是小写字母,且其左右两侧都有且只有三个大写字母
str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
length=len(str1)
password=[]
ps=[]
#找出小写字母的序号
for i in range(length):
    if str1[i].islower:
        ps.append(i)

#根据小写字母下表前后差值是否为3,确定密码序号,然后把密码找出来
length1=len(ps)
for each in range(1,length1-1):
    if ps[each]-ps[each-1]==3 and ps[each+1]-ps[each]==3:
        password.append(str1(ps[each]))

print(password)
最佳答案
2020-6-1 23:41:16
liuzg123 发表于 2020-6-1 23:24
我觉得没错呀,小写字母找出来后,其余均为大写字母。只要小写字母与前后两个小写字母序号相差为3,可以 ...

ps 列表内容:
  1. [3, 7, 10, 11, 15, 18, 22, 26, 27, 28, 29, 33, 34, 35, 36, 38, 42, 43]
复制代码

而你字符串 :
  1. str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
复制代码

你看下 b 的位置参数减去 a 的位置参数值是多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-1 22:50:00 | 显示全部楼层
#根据小写字母下表前后差值是否为3,确定密码序号,然后把密码找出来

你这个条件就已经错了,小甲鱼的题意是上一个小写字母到本身的小写字母之间 和 到后一个小写有且仅有 3 个大写字母
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-1 23:24:42 | 显示全部楼层
Twilight6 发表于 2020-6-1 22:50
你这个条件就已经错了,小甲鱼的题意是上一个小写字母到本身的小写字母之间 和 到后一个小写有且仅有 3  ...

我觉得没错呀,小写字母找出来后,其余均为大写字母。只要小写字母与前后两个小写字母序号相差为3,可以确定这个小写字母是密码,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 23:41:16 | 显示全部楼层    本楼为最佳答案   
liuzg123 发表于 2020-6-1 23:24
我觉得没错呀,小写字母找出来后,其余均为大写字母。只要小写字母与前后两个小写字母序号相差为3,可以 ...

ps 列表内容:
  1. [3, 7, 10, 11, 15, 18, 22, 26, 27, 28, 29, 33, 34, 35, 36, 38, 42, 43]
复制代码

而你字符串 :
  1. str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
复制代码

你看下 b 的位置参数减去 a 的位置参数值是多少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 23:42:33 | 显示全部楼层
liuzg123 发表于 2020-6-1 23:24
我觉得没错呀,小写字母找出来后,其余均为大写字母。只要小写字母与前后两个小写字母序号相差为3,可以 ...

而且 你代码的 islower 函数 忘记加括号了  正确代码:
  1. if str1[i].islower():
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 07:08:37 | 显示全部楼层
  1. str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
  2. length=len(str1)
  3. password=[]
  4. ps=[]
  5. #找出小写字母的序号
  6. for i in range(length):
  7.     if str1[i].islower():
  8.         ps.append(i)

  9. #根据小写字母下表前后差值是否为3,确定密码序号,然后把密码找出来
  10. length1=len(ps)
  11. for each in range(1,length1-1):
  12.     if ps[each]-ps[each-1]==3 and ps[each+1]-ps[each]==3:
  13.         password.append(str1(ps[each]))

  14. print(password)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 09:30:59 | 显示全部楼层
我觉得是你的题目意思理解错了  。  条件1 密码是小写字母,    条件2  小写字母的前面3位和后3位 必须都是大写字母,     两个条件都成立 这个小写字母才是密码   否则这个小写字母不是密码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 09:42:06 | 显示全部楼层
bujust_h 发表于 2020-6-2 09:30
我觉得是你的题目意思理解错了  。  条件1 密码是小写字母,    条件2  小写字母的前面3位和后3位 必须都是 ...

条件2 更新,  小写字母的 有且仅有前3位和后三位是大写字母   (多了或者少了都不行)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 09:58:12 | 显示全部楼层
bujust_h 发表于 2020-6-2 09:42
条件2 更新,  小写字母的 有且仅有前3位和后三位是大写字母   (多了或者少了都不行)

不知道我这是否能符合题目意思  。。

str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
n = len(str1)
small = []
pw = []
for i in range(n):
    if str1.islower():
        small.append(str1)
        if str1[i-3:i].isupper():
            if str1[i+1:i+4].isupper():
                pw.append(str1)
        else:
            continue
print(pw)
print(small)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 10:12:52 | 显示全部楼层
因为密码可以是连续的几个小写字母,左右两侧各只有三个大写字母
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 12:43:34 | 显示全部楼层
Twilight6 发表于 2020-6-1 23:41
ps 列表内容:

而你字符串 :

应当是4,而不是3,修改后,找出来k,但找不出来a,事实上a是密码,但a前面没有小写字母位,所以我只能把第一个字母拿出来独立判断。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 12:48:45 | 显示全部楼层
liuzg123 发表于 2020-6-2 12:43
应当是4,而不是3,修改后,找出来k,但找不出来a,事实上a是密码,但a前面没有小写字母位,所以我只能把第 ...

修改后代码  #5  作业题,找密码,条件:密码是小写字母,且其左右两侧都有且只有三个大写字母
str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
length=len(str1)
password=[]
ps=[]
#找出小写字母的序号
for i in range(length):
    if str1.islower():
        ps.append(i)

#根据小写字母下表前后差值是否为3,确定密码序号,然后把密码找出来
length1=len(ps)
for each in range(1,length1-1):
    if ps[each]-ps[each-1]==4 and ps[each+1]-ps[each]==4:
        password.append(str1[ps[each]])

if ps[0]==3 and ps[1]==7:
    password.insert(0,str1[3])

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

使用道具 举报

 楼主| 发表于 2020-6-2 12:49:47 | 显示全部楼层
284665 发表于 2020-6-2 10:12
因为密码可以是连续的几个小写字母,左右两侧各只有三个大写字母

连续不是问题,前后想减是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 12:52:28 | 显示全部楼层
bujust_h 发表于 2020-6-2 09:58
不知道我这是否能符合题目意思  。。

str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'

测试过,返回都是空列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 12:55:30 | 显示全部楼层
Twilight6 发表于 2020-6-1 23:42
而且 你代码的 islower 函数 忘记加括号了  正确代码:

我刚开始学,()[]始终困扰着我,希望老师指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 13:12:38 | 显示全部楼层
liuzg123 发表于 2020-6-2 12:43
应当是4,而不是3,修改后,找出来k,但找不出来a,事实上a是密码,但a前面没有小写字母位,所以我只能把第 ...

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

使用道具 举报

发表于 2020-6-2 13:18:15 | 显示全部楼层
liuzg123 发表于 2020-6-2 12:52
测试过,返回都是空列表

我返回是【a,g 】 只有2个字母满足要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 16:15:42 | 显示全部楼层
bujust_h 发表于 2020-6-2 13:18
我返回是【a,g 】 只有2个字母满足要求


我返回的也是a,g.原始字符串我改了。所以只有两个字母.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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