|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是小甲鱼作业中的一题
if len(stack) == 0: 这个不懂
s = input("请输入测试字符串:")
# 创建一个特殊列表
stack = []
for c in s:
# 如果是左括号,那么添加到特殊列表中
if c == '(' or c == '[' or c == '{':
stack.append(c)
# 如果是右括号的情况
else:
# 如果碰到右括号,但特殊列表中没有左括号,那么肯定是非法的
if len(stack) == 0:
print("非法T_T")
break
# 逐个给出 c 对应的右括号 d
if c == ')':
d = '('
elif c == ']':
d = '['
elif c == '}':
d = '{'
# 对比 d 和从特殊列表尾部弹出的元素
if d != stack.pop():
print("非法T_T")
break
else:
# 如果循环走完,特殊列表不为空,那么肯定是左括号比右括号多的情况
# 那肯定有同学会问:右括号比左括号多的情况在哪里判断?
# 小甲鱼答:在上面 d != stack.pop() 的判断中已经可以排除了~
if len(stack) == 0:
print("合法^o^")
else:
print("非法T_T")
本帖最后由 sfqxx 于 2023-5-24 20:21 编辑
这段代码是用来检查一个字符串中的括号是否匹配的。在该代码中,将所有的左括号放入一个特殊的列表中,然后遍历字符串中的每一个字符:
如果当前字符是左括号,则将其添加到特殊列表中。
如果当前字符是右括号,则从特殊列表的尾部取出一个元素并与之匹配:
如果特殊列表为空(即没有左括号),则说明字符串非法,直接跳出循环;
如果取出的元素与当前右括号对应的左括号不同,那么也说明字符串非法,跳出循环;
如果取出的元素与当前右括号对应的左括号相同,则继续遍历字符串。
如果遍历完整个字符串,特殊列表不为空,那么说明字符串中左括号比右括号多,输出 "非法T_T";
否则,输出 "合法^o^"。
而在这段代码中,
- if len(stack) == 0:
- print("非法T_T")
- break
复制代码
是判断特殊列表(即栈)是否为空的语句。如果特殊列表为空,那么当前字符是右括号,但是却没有对应的左括号,因此字符串非法,需要直接跳出循环。如果不加 break 语句,程序还会继续运行,直到遍历完整个字符串才会输出 "非法T_T"。
有用请设置最佳答案
|
|