def parse_rule(rule_str):
# 解析规则
r_range, r_char = rule_str.split()
r_min, r_max = map(int, r_range.split("-"))
return r_min, r_max, r_char
def is_valid_password(password, rule_str):
# 检查密码是否符合规则
r_min, r_max, r_char = parse_rule(rule_str)
char_count = password.count(r_char)
if char_count >= r_min and char_count <= r_max:
return True
return False
def count_valid_passwords(passwords):
# 统计符合规则的密码数量
valid_count = 0
for rule, password in passwords:
if is_valid_password(password, rule):
valid_count += 1
return valid_count
with open("input.txt", "r") as f:
passwords = [line.strip().split(": ") for line in f.readlines()]
print(count_valid_passwords(passwords))
在上述代码中,parse_rule
函数用于解析规则,is_valid_password
函数用于检查密码是否符合规则,count_valid_passwords
函数用于统计符合规则的密码数量。主程序读取输入文件,并将每个密码转化为规则和密码两个部分,然后调用 count_valid_passwords
函数统计符合规则的密码数量。