liuzg123 发表于 2020-6-1 22:39:39

为什么输出的是个空列表?

#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-ps==3 and ps-ps==3:
      password.append(str1(ps))

print(password)

Twilight6 发表于 2020-6-1 22:50:00

#根据小写字母下表前后差值是否为3,确定密码序号,然后把密码找出来
你这个条件就已经错了,小甲鱼的题意是上一个小写字母到本身的小写字母之间 和 到后一个小写有且仅有 3 个大写字母

liuzg123 发表于 2020-6-1 23:24:42

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

我觉得没错呀,小写字母找出来后,其余均为大写字母。只要小写字母与前后两个小写字母序号相差为3,可以确定这个小写字母是密码,

Twilight6 发表于 2020-6-1 23:41:16

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

ps 列表内容:

而你字符串 :
str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'
你看下 b 的位置参数减去 a 的位置参数值是多少

Twilight6 发表于 2020-6-1 23:42:33

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

而且 你代码的 islower 函数 忘记加括号了正确代码:if str1.islower():

xiaosi4081 发表于 2020-6-2 07:08:37

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-ps==3 and ps-ps==3:
      password.append(str1(ps))

print(password)

bujust_h 发表于 2020-6-2 09:30:59

我觉得是你的题目意思理解错了。条件1 密码是小写字母,    条件2小写字母的前面3位和后3位 必须都是大写字母,   两个条件都成立 这个小写字母才是密码   否则这个小写字母不是密码。

bujust_h 发表于 2020-6-2 09:42:06

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

条件2 更新,小写字母的 有且仅有前3位和后三位是大写字母   (多了或者少了都不行)

bujust_h 发表于 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.isupper():
            if str1.isupper():
                pw.append(str1)
      else:
            continue
print(pw)
print(small)

284665 发表于 2020-6-2 10:12:52

因为密码可以是连续的几个小写字母,左右两侧各只有三个大写字母

liuzg123 发表于 2020-6-2 12:43:34

Twilight6 发表于 2020-6-1 23:41
ps 列表内容:

而你字符串 :


应当是4,而不是3,修改后,找出来k,但找不出来a,事实上a是密码,但a前面没有小写字母位,所以我只能把第一个字母拿出来独立判断。

liuzg123 发表于 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-ps==4 and ps-ps==4:
      password.append(str1])

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

print(ps)
print(password)

liuzg123 发表于 2020-6-2 12:49:47

284665 发表于 2020-6-2 10:12
因为密码可以是连续的几个小写字母,左右两侧各只有三个大写字母

连续不是问题,前后想减是0

liuzg123 发表于 2020-6-2 12:52:28

bujust_h 发表于 2020-6-2 09:58
不知道我这是否能符合题目意思。。

str1='ACFaCTLbIQlcAIVgMTqHFKkSWAswqbDDHtpgcWaXSSglUYKE'


测试过,返回都是空列表

liuzg123 发表于 2020-6-2 12:55:30

Twilight6 发表于 2020-6-1 23:42
而且 你代码的 islower 函数 忘记加括号了正确代码:

我刚开始学,()[]始终困扰着我,希望老师指导

Twilight6 发表于 2020-6-2 13:12:38

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

嗯嗯

bujust_h 发表于 2020-6-2 13:18:15

liuzg123 发表于 2020-6-2 12:52
测试过,返回都是空列表

我返回是【a,g 】 只有2个字母满足要求

liuzg123 发表于 2020-6-2 16:15:42

bujust_h 发表于 2020-6-2 13:18
我返回是【a,g 】 只有2个字母满足要求

我返回的也是a,g.原始字符串我改了。所以只有两个字母.
页: [1]
查看完整版本: 为什么输出的是个空列表?