鱼C论坛

 找回密码
 立即注册
查看: 1085|回复: 7

代码问题求助

[复制链接]
发表于 2023-5-28 21:46:58 | 显示全部楼层 |阅读模式
1鱼币
如图,这是小甲鱼课后作业第20讲最后一题,监测输入的括号是否是对的。但是我的代码中,我输入“()”也是说不对,请问代码哪儿错了。。。。

图片10.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-28 22:22:07 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-5-30 21:11 编辑

完整代码:
  1. list = []
  2. my_str = input("请输入测试字符串:")
  3. list.extend(my_str)
  4. if len(list)%2!=0:
  5.     print("不合法T_T")
  6. else:
  7.     brackets = list('([{}])')
  8.     for i in range(len(list)//2):
  9.         if list[i]+list[-(i+1)]==(brackets[0]+brackets[-1]) or (brackets[1]+
  10. brackets[-2]) or (brackets[2]+brackets[-3]):
  11.         print("合法^o^")
  12.     else:
  13.         print("不合法T_T")
复制代码

你这代码烂透了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-28 22:25:30 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-29 16:13:46 | 显示全部楼层

my_str = input("请输入测试字符串:")
# 将字符串转换成列表
my_list = list(my_str)
# 新建一个字典用于存储括号匹配关系
brackets_dict = {'(':')', '[':']', '{':'}'}
stack = []
# 遍历列表中的每一个字符
for i in my_list:
    # 如果当前字符是左括号,则将其压入栈中
    if i in brackets_dict.keys():
        stack.append(i)
    # 如果当前字符是右括号,则取出栈顶元素进行匹配
    elif i in brackets_dict.values():
        # 如果当前栈已经为空,则说明不合法
        if len(stack) == 0:
            print("不合法T_T")
            break
        # 取出栈顶元素
        top = stack.pop()
        # 如果当前右括号和栈顶左括号不匹配,则说明不合法
        if brackets_dict[top] != i:
            print("不合法T_T")
            break
else:
    # 程序执行到这里,说明所有字符都匹配上了
    if len(stack) == 0:
        print("合法^o^")
    else:
        print("不合法T_T")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-29 16:14:23 | 显示全部楼层

  1. my_str = input("请输入测试字符串:")
  2. # 将字符串转换成列表
  3. my_list = list(my_str)
  4. # 新建一个字典用于存储括号匹配关系
  5. brackets_dict = {'(':')', '[':']', '{':'}'}
  6. stack = []
  7. # 遍历列表中的每一个字符
  8. for i in my_list:
  9.     # 如果当前字符是左括号,则将其压入栈中
  10.     if i in brackets_dict.keys():
  11.         stack.append(i)
  12.     # 如果当前字符是右括号,则取出栈顶元素进行匹配
  13.     elif i in brackets_dict.values():
  14.         # 如果当前栈已经为空,则说明不合法
  15.         if len(stack) == 0:
  16.             print("不合法T_T")
  17.             break
  18.         # 取出栈顶元素
  19.         top = stack.pop()
  20.         # 如果当前右括号和栈顶左括号不匹配,则说明不合法
  21.         if brackets_dict[top] != i:
  22.             print("不合法T_T")
  23.             break
  24. else:
  25.     # 程序执行到这里,说明所有字符都匹配上了
  26.     if len(stack) == 0:
  27.         print("合法^o^")
  28.     else:
  29.         print("不合法T_T")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-30 20:56:59 | 显示全部楼层
歌者文明清理员 发表于 2023-5-28 22:22
完整代码:

你这代码烂透了

经常犯一些低级错误怎么才能更好地克服这一点啊。。。。。无语。。
还有我在用您这个代码的时候,弹出TypeError: 'list' object is not callable这个错误是为什么啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-30 21:11:46 | 显示全部楼层
ansire 发表于 2023-5-30 20:56
经常犯一些低级错误怎么才能更好地克服这一点啊。。。。。无语。。
还有我在用您这个代码的时 ...

sorry,我代码敲错了,改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-30 21:29:56 | 显示全部楼层
歌者文明清理员 发表于 2023-5-28 22:22
完整代码:

你这代码烂透了


                               
登录/注册后可看大图

用了你的代码后,怎么每一行代码后都带了一个空白行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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