python0基础入门20讲的最后一题
题目是a) 每位密码为单个小写字母 b) 每位密码的左右两边均有且只有三个大写字母 小甲鱼的代码出来的是ilovefishca = 0
b = 3
c = 7
while len(str1) > c:
d = str1
e = str1
f = str1
if d.isupper() and f.isupper() and e.islower():
print(e)
a += 1
b += 1
c += 1
我的代码为什么跟他不一样呢。。我固定了长度索引值一直是0123456 1234567这样的 如果中间的是小写旁边是大写就写出来 但是出来的跟小甲鱼的不一样 人已经有点晕了 这思路就是错的,咋能固定长度037呢 wp231957 发表于 2020-5-20 13:06
这思路就是错的,咋能固定长度037呢
不是前面3个是大写 后面3个是大写 中间那个数字是小写的情况下输出小写字符吗... 琉璃琉璃 发表于 2020-5-20 13:12
不是前面3个是大写 后面3个是大写 中间那个数字是小写的情况下输出小写字符吗...
不是的,
是从上一个小写字母到下一个小写字母之间
和这一个小写字母到下一个小写字母之间
只能有且仅有三个大写字母 wp231957 发表于 2020-5-20 13:06
这思路就是错的,咋能固定长度037呢
而且是密码a左右两边均有且只有3个。。那不就是固定长度为7吗.... Twilight6 发表于 2020-5-20 13:13
不是的,
是从上一个小写字母到下一个小写字母之间
我已经做这个题做晕了 琉璃琉璃 发表于 2020-5-20 13:12
不是前面3个是大写 后面3个是大写 中间那个数字是小写的情况下输出小写字符吗...
你说这是理想化期望
实际上会有很多骚扰字符的 用你的切片方法可以这样做:
a = []
b = 0
c = 1
for i in str1:
if i.islower():
a.append(str1.index(i,b,len(str1)))
b += 1
b = 0
count_left = 0
count_right = 0
while b != a[-1] and c+1 < len(a):
d = str1]
f = str1[(a+1):a]
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:
print(str1],end='')
count_right,count_left = 0,0
b = a
c += 1 Twilight6 发表于 2020-5-20 13:46
用你的切片方法可以这样做:
谢谢 琉璃琉璃 发表于 2020-5-20 13:58
谢谢
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] # 记录小写字母左边的所有字母
f = str1[(a+1):a]# 记录小写字母右边的所有字母
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],end='')
count_right,count_left = 0,0# 重新初始化记数参数,为下一次循环计数做准备
b = a # b为赋值为下一个小写字母的索引值
c += 1 # c为b的下一个小写字母的索引
重新写了注释,如果帮助到你记得给个最佳哦~{:10_287:}
页:
[1]