马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
passward = ''
length = len(string2)
for i in range(length):
each = string2[i]
if each == '\n':
continue
if each.islower():
total1 = string2[i-3:i]
total2 = string2[i+1:i+4]
total3 = string2[i-4:i-3]
total4 = string2[i+4:i+5]
if total1.isupper() + total2.isupper() == 2:
if (total3.isupper() + total4.isupper() == 0):
passward = passward + each
total1 = ''
total2 = ''
total3 = ''
total4 = ''
print(passward)
这个是我20讲动动手的做法,大概思路是在前三个以及后三个字母全都是大写的前提下比较第四个字母大小写
首先左边三个大写字母赋予字符串total1,右边三个大写字母赋予字符串total2,左边第四个字母赋予total3,右边第四个字母赋予total4
在total1和total2全为大写字母的前提下,若total3,4全为小写字母 得到密码对应字母
可是结果为:uilovefisdhc
并非想要的
我在网上找到了相似的另一种做法:passward = ''
length = len(string2)
for i in range(length):
each = string2[i]
if each == '\n':
continue
if each.islower():
if string2[i + 1].isupper() + string2[i - 1].isupper() == 2:
if string2[i + 2].isupper() + string2[i - 2].isupper() == 2:
if string2[i + 3].isupper() + string2[i - 3].isupper() == 2:
if string2[i + 4].isupper() + string2[i - 4].isupper() == 0:
passward = passward + each
print(passward)
他的思路大概是将目标字母两侧相同距离的字母大小写进行判断,若左右两侧三个字母全为大写,但两侧第四个字母全为小写的情况下输出对应密码
这种做法的结果是正确的
求教大佬们我代码本身哪方面出了问题,麻烦你们了,谢谢!
本帖最后由 gonff 于 2020-11-21 22:57 编辑 >>> a = 'Fish'
>>> a.isupper()
False
>>> a = 'F HK'
>>> a.isupper()
True
>>> a = 'F\nHK'
>>> a.isupper()
True
>>> a = '\n'
>>> a.isupper()
False
看起来isupper()对于一长串字符时,不会去管非字母字符。对于单个字符则可以判断。
|