20讲第二题,也不知道写的对不对,请大神帮我看看
def xjy_20():with open("F:\work\PYQT\date\string2.txt","r",encoding="utf-8") as f:
x = f.read()
count_1 = 0# 密码前大写字母个数
count_2 = 0# 密码后大写字母个数
list = (" ") # 密码
def upper(): # 判断小写字母出现后的元素是不是3个连续的大写字母并且第四个不是大写字母
nonlocal count_2, list
m = 0
while ord(x) in range(65, 91):
print(x)
m += 1
count_2 += 1
if count_2 == 3 and ord(x) not in range(65, 91):
list += (x)# 将密码添加到密码字符串
return list
else:count_2 = 0
for n in range(len(x)-5): #将文件列表顺序迭代
z = ord(x) # 将文件列表内元素转换为ASCII码
if z in range(65,91):#判断元素是不是大写字母
count_1 += 1 #记录大写字母个数
if count_1 == 3:#判断大写字母是否连续出现3次
if ord(x) in range(97,123): # 判断大写字母出现3次后的元素是不是小写字母
upper()
else:count_1 = 0 #重置密码前大写字母出现的个数
print(list)
xjy_20() 抱歉你写的我没太看明白,字符串转ASC码是个新思路。
我简单的把你的x变量改了下,结果输入的结果不对。
你可以试下。
def xjy_20():
x = 'ABCdEFGHiJKLmNOP'
count_1 = 0# 密码前大写字母个数
count_2 = 0# 密码后大写字母个数
list = (" ") # 密码
def upper(): # 判断小写字母出现后的元素是不是3个连续的大写字母并且第四个不是大写字母
nonlocal count_2, list
m = 0
while ord(x) in range(65, 91):
print(x)
m += 1
count_2 += 1
if count_2 == 3 and ord(x) not in range(65, 91):
list += (x)# 将密码添加到密码字符串
return list
else:count_2 = 0
for n in range(len(x)-5): #将文件列表顺序迭代
z = ord(x) # 将文件列表内元素转换为ASCII码
if z in range(65,91):#判断元素是不是大写字母
count_1 += 1 #记录大写字母个数
if count_1 == 3:#判断大写字母是否连续出现3次
if ord(x) in range(97,123): # 判断大写字母出现3次后的元素是不是小写字母
upper()
else:count_1 = 0 #重置密码前大写字母出现的个数
print(list)
xjy_20()
heidern0612 发表于 2018-11-30 18:29
抱歉你写的我没太看明白,字符串转ASC码是个新思路。
我简单的把你的x变量改了下,结果输入的结果不对。 ...
我修改了一下,打了几个补丁。。。。
def xjy_20():
with open("F:\work\PYQT\date\string2.txt", "r", encoding="utf-8") as f:
x = f.read()
x += '11111'
list = (" ")# 密码
count_1 = 0# 统计小写字母前大写字母个数
count_2 = 0# 统计小写字母后大写字母个数
for n in range(len(x)-5): #将文件列表顺序迭代
z = ord(x) # 将文件列表内元素转换为ASCII码
if z in range(65,91):#判断元素是不是大写字母
count_1 += 1 #记录大写字母个数
if count_1 == 3:#判断大写字母是否连续出现3次
if ord(x) in range(97,123): # 判断大写字母出现3次后的元素是不是小写字母
m = 0
while ord(x) in range(65, 91): # 判断小写字母出现后的元素是不是3个连续的大写字母并且第四个不是大写字母
m += 1
count_2 += 1
# print(count_2)
# print(x)
if count_2 == 3 and ord(x) not in range(65, 91):# 判断小写字母出现后的元素是不是3个连续的大写字母并且第四个不是大写字母
list += (x)# 将符合条件的小写字母添加到密码字符串
#break
else:
count_2 = 0
m = 0
else:count_1 = 0 #重置密码前大写字母出现的个数
print(list)
xjy_20()
页:
[1]