鱼C论坛

 找回密码
 立即注册
查看: 2085|回复: 10

求助【课后作业python:20,判断输入括号是否合法】

[复制链接]
发表于 2024-1-12 22:12:27 | 显示全部楼层
本帖最后由 sfqxx 于 2024-1-12 22:14 编辑

首先,我们来分析一下您的代码逻辑。代码的主要思路是使用栈(stack1)来处理括号的匹配问题。对于每一个遇到的左括号,您将其压入栈中。遇到右括号时,则检查栈顶元素是否与之匹配。如果匹配,则从栈中移除该左括号;如果不匹配或栈为空,则判断为非法。

您的代码中存在几个问题:

1. 变量 x 的使用:您使用变量 x 来访问栈顶元素。然而,这个变量在栈的大小变化时没有正确更新,导致可能会访问错误的元素或引发索引错误。

2. 判断逻辑错误:在遇到右括号时,您的代码应该先检查栈是否为空,然后再检查栈顶元素是否匹配。目前的代码没有进行这样的检查。

3. 输出逻辑:您的代码在每次匹配成功时就输出“合法”,这实际上只是表示某一对括号匹配成功,而不是整个字符串的括号都合法。

下面是根据您的代码思路进行修改的代码:

  1. stack1 = []
  2. temp = input("请输入括号:")
  3. list_1 = list(temp)
  4. valid = True

  5. for i in list_1:
  6.     if i in "([{":
  7.         stack1.append(i)
  8.     elif i == "]":
  9.         if not stack1 or stack1[-1] != "[":
  10.             valid = False
  11.             break
  12.         stack1.pop()
  13.     elif i == ")":
  14.         if not stack1 or stack1[-1] != "(":
  15.             valid = False
  16.             break
  17.         stack1.pop()
  18.     elif i == "}":
  19.         if not stack1 or stack1[-1] != "{":
  20.             valid = False
  21.             break
  22.         stack1.pop()

  23. if valid and not stack1:
  24.     print("合法!")
  25. else:
  26.     print("非法")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-24 11:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表