维ABCD 发表于 3 天前

求大佬

letter='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM'
symbol='!@#$%^&*()_+|}{:>?<*.,;\][=-'
first=0
second=0
third=0
temp=input('请输入密码:')
has_num=False
for apple in temp:
    if apple in num:
      has_num=True
if has_num:
    first+=1
has_letter=False
for apple in temp:
    if apple in letter:
if has_letter:
    first+=1
has_symbol=False
for apple in temp:
    if apple in symbol:
if has_symbol:
    first+=1
length=len(temp)
if length<=8:
    second=1
elif 16>=length>8:
    second=2
elif length>=16:
    second=3
if temp.istitle():
    third=1
while 1:
    if first==1 and second==1:
      print('低')
    elif first==2 and second==2:
      print('中')
    elif first==3 and second==3 and third==1:
      print('高')
    break

为什么报错啊,而且输完密码后不继续进行了

FishC 发表于 3 天前

你好!看起来你提供了两个字符串:letter 和 symbol。letter 包含字母字符,symbol 包含特殊字符。你可能想用它们来生成随机密码或进行字符串操作。这里是一个简单的Python示例,演示如何生成一个随机密码:


import random

letter = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM'
symbol = '!@#$%^&*()_+|}{:>?'# 注意:symbol 字符串可能不完整,但基于你提供的使用

all_chars = letter + symbol
password_length = 12# 设置密码长度
password = ''.join(random.choice(all_chars) for _ in range(password_length))
print(password)


这会输出一个包含字母和符号的随机字符串。如果你有更多问题,比如修复 symbol 字符串或其它用途,请提供更多细节!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

尉尉的可乐 发表于 3 天前

本帖最后由 尉尉的可乐 于 2025-9-4 19:50 编辑

你的代码存在变量未定义、循环逻辑不完整、判定条件缺失三个核心问题,导致报错且无法正常运行。以下是具体问题、修复方案及完整代码:

一、直接报错的2个原因

        1.变量num未定义:判断“是否包含数字”时用了if apple in num,但未定义数字集合num,Python找不到该变量会报错。

        2.has_letter和has_symbol循环逻辑不完整:检查字母/符号的for循环内,未写has_letter = True和has_symbol = True,即使检测到目标字符,标志位也不会激活,后续判定永远为False。

二、“输完密码不继续”的原因
现有判定只覆盖“低(1+1)、中(2+2)、高(3+3+1)”三种情况,若密码是其他组合(如first=3+second=2),while循环内无匹配if,会空转不输出结果。

三、完整修复代码


#补充定义数字集合num,修复未定义问题

num = '0123456789'
letter = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM'
symbol = '!@#$%^&()_+|}{:>?<.,;][=-'

first = 0# 记录密码包含的字符类型数量(数字/字母/符号)
second = 0# 记录密码长度等级
third = 0# 记录是否为首字母大写(istitle()判定)
temp = input('请输入密码:')

#检查是否包含数字(修复num未定义,补充激活标志位)

has_num = False
for apple in temp:
if apple in num:
has_num = True
if has_num:
first += 1

#检查是否包含字母(补充激活标志位)

has_letter = False
for apple in temp:
if apple in letter:
has_letter = True# 关键:之前缺失这行
if has_letter:
first += 1

#检查是否包含符号(补充激活标志位)

has_symbol = False
for apple in temp:
if apple in symbol:
has_symbol = True# 关键:之前缺失这行
if has_symbol:
first += 1

#判定密码长度等级(优化逻辑顺序,更直观)

length = len(temp)
if length <= 8:
second = 1
elif 8 < length <= 16:
second = 2
else:# 等价于length >16
second = 3

#判定是否为首字母大写(istitle():所有单词首字母大写,其他小写)

if temp.istitle():
third = 1

#修复判定条件缺失:覆盖所有可能情况,删除无用while循环

if first == 3 and second == 3 and third == 1:
print('高')
elif (first == 2 and second == 2) or (first == 3 and second == 2):# 补充中等级其他可能
print('中')
elif first >= 1 and second == 1:# 补充低等级其他可能
print('低')
else:
print('中')# 兜底:未匹配情况默认“中”(可按需调整)

冲浪的口香糖 发表于 昨天 10:46

num没有定义

Mta123456 发表于 7 小时前

if apple in num:这一行代码中num未定义
页: [1]
查看完整版本: 求大佬