python课后作业20讲疑问
i=0list1=[]
str1='''ACFlCTLIQlAIVMTqHFkswqbDDHtpgcWaXSSglUYKE
lqNsYCyaQXBzrFUbkAUAWAKrDgDtAlGMBqWQhpEwquZqWZJpslUfMllCwWptqINjrOBTLuPzwvXNbLCx
oFRritKRpJgBOaGPZdkUzvYnvYmAlEsVmKRXqyQUOdCBqLYyboOYeAQNLnkuiDXCiNiksSSRpDMVQQgs
TmYThnppfKSmkpjjceGLaMOvYgsvNkGENKgGtUSzVPlLMeephDKrWGNpAxBqRiCnQIuKwDZurIRsznUp
xhstMWpHdZzqeEnttlAHiWbhbIJpwKBAGsFWthBiwBDKTFzIUamELZJFLbmqOmwBIYBJIofAUyxTLUEm
LcOXzjIHFcfUfEWccbWzhVuIZMdTVsOaNsLTpHjrvFaYTnJUrqaYnUmbobfOXXtkjKjFUEhVNlPWeaIY
uABNuEDKFWiUaqQiBHGsgEmDSKiJKLkkzFWlobXIyUlDzGcwDnEOwwWxgFpebsslmKItazIYctPROSJp
ImDHusQIkoFQSmuqwdcPNERvflfHtkGTrtbQXqZUsazoxmbVTPIuuxKvfALAaGnIuIZwczCcoIRMncBs
timFGHPJPaHMPTLjsBjIwbbzKyghaDTUStzJceaYAneywwpvdiUJifPHtXmAwZPChWsDmwonzeeQCEiB
xWsJLAtrdVEOBxEaYiSabHdUwlXlDOAKzZUwozJoBGvnFttDkXdYdjQSzzhTIPfYpWVFdiFIqSbyPZIi
VoXunBPbAJVMWluPcIfHmjPeHaTyClCvTOucEYEZXbVDiZMsfeuruDGMmQEsHutzvzVmWvCoPRguBiHh
taTeaguPmNuAxzYJLEcdoApfIFBaLUqettjTJNlHZYlJZRRoKXEvFnoUHdPjDuXuTAubGODkHAokpItw
SlEwhjrUSlfMawWlTMciWAzVcgPcqCHIaogokYAWGsvWZzBfJqzxIkCNvHDvBkOMCyeYXzVVuRJLQIOy
BMoVPgFLOagDxyPfWxTtZQNCLOrVVclPzMNYruNUyMOBKxBvinxuGMAAfndhPsROtkOJAAJQSxpmTzXm
CmEwZOhlItvETUneqvdKLghLyREjuJWRFjVVuNMiPuvvmRaEUmjCXDVuMRAvBuHUYGKPXthWISIbueRp
uvxpmqclmrXpAGFrxhJGxQwlrbkHEmcEUooCoPqGzbrCfIWmtUKmzzXvcqbhxKcAwXCNjbJDWDndKiLK
HwaFKyhXJQgHjIaTfIJrkhUpTHJZebRertDigQtDKxGerMRgHWFTrqqZlcBjAUfTZdFlZCAEZnhzgTIy
''' #删了一部分,不然占用太多空间
for t in str1:
i = i+1
list2=
if t.islower():
for s in list2:
if str1.isupper():
list1.append(t)
请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:Y5d|MAp
Y5d|MAp
a) 每位密码为单个小写字母Powered by bbs.fishc.com
b) 每位密码的左右两边均有且只有三个大写字母qH{]*ZR
这样写有什么问题吗,感觉思路上是对的
当然啦,你这句
if str1.isupper():
list1.append(t)
表示一旦是大写就符合
题目的要求是找出前后有且仅有三个大写字母的小写字母 本帖最后由 白two 于 2021-8-21 23:09 编辑
你这有大问题啊
首先两边有且只有 3 个大写字母,所以得判断第前后 4 位为小写(得分两种例外情况,开始和结束的时候,只需要判断前 4 位和后 3 位 或者 前 3 位和后 4 位)
其次下表越界问题,你的 i 从 0 开始,所以得判断 list2 的首位是否小于 0 或者最后一位是否大于字符长度
最后你的判定有问题,周围六位 for 循环的时候只要该元素是一个大写字母,就把 t 加进去,而并非周围六位全为大写才加入
可以考虑如下:
a = 0
for s in list2:
if str1.isupper():
a += 1
if a == 6:
list1.append(t)
总体更改如下:
str1='''ACFlCTLIQlAIVMTqHFkswqbDDHtpgcWaXSSglUYKE
lqNsYCyaQXBzrFUbkAUAWAKrDgDtAlGMBqWQhpEwquZqWZJpslUfMllCwWptqINjrOBTLuPzwvXNbLCx
oFRritKRpJgBOaGPZdkUzvYnvYmAlEsVmKRXqyQUOdCBqLYyboOYeAQNLnkuiDXCiNiksSSRpDMVQQgs
TmYThnppfKSmkpjjceGLaMOvYgsvNkGENKgGtUSzVPlLMeephDKrWGNpAxBqRiCnQIuKwDZurIRsznUp
xhstMWpHdZzqeEnttlAHiWbhbIJpwKBAGsFWthBiwBDKTFzIUamELZJFLbmqOmwBIYBJIofAUyxTLUEm
LcOXzjIHFcfUfEWccbWzhVuIZMdTVsOaNsLTpHjrvFaYTnJUrqaYnUmbobfOXXtkjKjFUEhVNlPWeaIY
uABNuEDKFWiUaqQiBHGsgEmDSKiJKLkkzFWlobXIyUlDzGcwDnEOwwWxgFpebsslmKItazIYctPROSJp
ImDHusQIkoFQSmuqwdcPNERvflfHtkGTrtbQXqZUsazoxmbVTPIuuxKvfALAaGnIuIZwczCcoIRMncBs
timFGHPJPaHMPTLjsBjIwbbzKyghaDTUStzJceaYAneywwpvdiUJifPHtXmAwZPChWsDmwonzeeQCEiB
xWsJLAtrdVEOBxEaYiSabHdUwlXlDOAKzZUwozJoBGvnFttDkXdYdjQSzzhTIPfYpWVFdiFIqSbyPZIi
VoXunBPbAJVMWluPcIfHmjPeHaTyClCvTOucEYEZXbVDiZMsfeuruDGMmQEsHutzvzVmWvCoPRguBiHh
taTeaguPmNuAxzYJLEcdoApfIFBaLUqettjTJNlHZYlJZRRoKXEvFnoUHdPjDuXuTAubGODkHAokpItw
SlEwhjrUSlfMawWlTMciWAzVcgPcqCHIaogokYAWGsvWZzBfJqzxIkCNvHDvBkOMCyeYXzVVuRJLQIOy
BMoVPgFLOagDxyPfWxTtZQNCLOrVVclPzMNYruNUyMOBKxBvinxuGMAAfndhPsROtkOJAAJQSxpmTzXm
CmEwZOhlItvETUneqvdKLghLyREjuJWRFjVVuNMiPuvvmRaEUmjCXDVuMRAvBuHUYGKPXthWISIbueRp
uvxpmqclmrXpAGFrxhJGxQwlrbkHEmcEUooCoPqGzbrCfIWmtUKmzzXvcqbhxKcAwXCNjbJDWDndKiLK
HwaFKyhXJQgHjIaTfIJrkhUpTHJZebRertDigQtDKxGerMRgHWFTrqqZlcBjAUfTZdFlZCAEZnhzgTIy
''' #删了一部分,不然占用太多空间
# str1 = '''ABSaDKSbRIHcRHGcdDIF'''
i=0
list1=[]
l = len(str1)
for t in str1:
list2=
if t.islower():
if list2 >= 0 and list2[-1]<l:
if str1].islower() and str1].islower():
a = 0
for s in range(1,7):
if str1].isupper():
a += 1
if a == 6:
list1.append(t)
elif list2 == -1:
if str1].islower():
a = 0
for s in range(1,7):
if str1].isupper():
a += 1
if a == 6:
list1.append(t)
elif list2[-1] == l:
if str1].islower():
a = 0
for s in range(1,7):
if str1].isupper():
a += 1
if a == 6:
list1.append(t)
i += 1
print(list1) 白two 发表于 2021-8-21 23:06
你这有大问题啊
首先两边有且只有 3 个大写字母,所以得判断第前后 4 位为小写(得分两种例外情况,开始 ...
第22行有什么用? 把字符串长度的值赋给一个变量,就不需要每次循环就执行一遍 len 方法了 白two 发表于 2021-8-23 12:26
把字符串长度的值赋给一个变量,就不需要每次循环就执行一遍 len 方法了
但是后面没有用过 l这个变量,又要赋值给他?后面没有用的话赋值给他有什么用呢,但是删了这行会报错 白two 发表于 2021-8-23 12:26
把字符串长度的值赋给一个变量,就不需要每次循环就执行一遍 len 方法了
我懂了,26行用到了,我以为那个是1
页:
[1]