鱼C论坛

 找回密码
 立即注册
楼主: 鱼C-小师妹

[技术交流] 08 - 请帮我测试字符串

[复制链接]
发表于 2021-11-20 17:56:56 | 显示全部楼层
啊呀呀,疯狂报错我麻了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-20 18:21:48 | 显示全部楼层
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
//这里流程图写的是f之后if判断,这里为什么不加else,我加了之后错误   
        if c == ')':
            d = '('
        elif c == ']':
            d = '['
        elif c == '}':
            d = '{'
//这我也觉得根据流程图也要加else的   
        if d != stack.pop():
            print("非法T_T")
            break
else:
    if len(stack) == 0:
        print("合法^o^")
    else:
        print("非法T_T")
我有几个问题啊,大佬帮我解释一下,有的问题在代码里面写出来了
1.我输入(())时输出的是()
2.我输入({[]})他直接报错
3.流程图和代码的问题,明明是if后false才接的,为什么没有else三个if都是同一个缩进(详情见上面代码文字)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-20 18:51:05 | 显示全部楼层
春风亭朝小树 发表于 2021-11-20 18:21
s = input("请输入测试字符串:")

stack = []


楼主,这些问题相对来说没那么难,如果你是使用Pycharm编程的话,建议看一下版主的帖子
https://fishc.com.cn/forum.php?m ... p;highlight=pycharm
大部分的集成ide都有断点和单步执行的功能,同时能显示当前内存中的变量以及他们的值,通过观察程序执行的过程,你的第1和第2个问题应该可以迎刃而解
第3个问题的关键点在于理解程序的逻辑,也就是说正常情况下你从字符串中取到这个字符要干什么。我试着简单说一下。
因为字符串中只有三类括号共六种,取到一个字符,
1.如果是左侧括号,就直接入栈,继续判断下一个字符。
2.如果是右侧括号,就和出栈的符号做对比:匹配,继续判断下一个字符;不匹配则字符串不符合要要求。
3.最后所有的字符都判断完,还没有不符合要求的情况出现,字符串就符合要求。
然后我们需要考虑一下两种特殊情况
a.栈里没东西,就直接获取到了右侧符号(不处理pop时会报错)。
b.字符串处理完毕,栈还未清空(程序不报错,但是说明还有左侧括号未被匹配,括号不成对)

把以上逻辑理清之后,再回过头看程序,问题3应该也解决了,如果还不清楚,还是那句话:
运行程序,单步执行,观察每一步中各个变量值的变化,相信很快你就能明白。编程还是需要大量的动手的,哪怕错,只要每次错的不一样,说明你就进步了~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-20 20:45:26 | 显示全部楼层
lightninng 发表于 2021-11-20 18:51
楼主,这些问题相对来说没那么难,如果你是使用Pycharm编程的话,建议看一下版主的帖子
https://fishc ...

感谢大佬,我去试试一行行的来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 15:15:52 | 显示全部楼层
好难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-1 17:03:05 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-28 15:11:35 | 显示全部楼层
强强强强强强强强
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-4 21:49:24 | 显示全部楼层
修改字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-10 21:15:31 | 显示全部楼层
这个题的思路对于我这种萌新真的好难想,我一直纠结在怎么解决分辨不出来[{]}这种类似的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-21 20:08:19 | 显示全部楼层
66666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-6 18:29:48 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-6 23:55:35 | 显示全部楼层
这个源码 字符串里不能加除了[]{}()的东西吧 比如字母数字什么的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-7 21:22:06 | 显示全部楼层
有点难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-13 21:26:49 | 显示全部楼层
看看源码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-17 17:40:48 | 显示全部楼层
这个有点复杂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-20 11:59:09 From FishC Mobile | 显示全部楼层
代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-4 22:19:35 | 显示全部楼层
这个题好绕啊,有点没吃透
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-14 19:10:09 From FishC Mobile | 显示全部楼层
08 - 请帮我测试字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-4 20:09:34 | 显示全部楼层
# 题干:
# 字符串仅包含 '()'、'[]'、'{}' 这三对括号的组合
# 左右括号必须成对编写,比如 "()" 是合法的,"(" 则是非法的
# 左右括号必须以正确的顺序闭合,比如 "{()}" 是合法的,"{(})" 则是非法的

char = '''()[]{}'''
strings = input('请输入测试字符串:')
stack1 = []
stack2 = []
for each in strings:
    if each not in char:
        print('非法-_-')
        break
    if (each=='(') or (each=='[') or (each=='{'):
        stack1.append(each)
    else:
        if len(stack1) == 0:
            print('非法-_-')
            break
        if each == ')':
            each = '('
        if each == ']':
            each = '['
        if each == '}':
            each = '{'
        stack2.insert(0, each)
        if stack1.pop() == stack2[0]:
            stack2.remove(stack2[0])
else:
    if stack1 == stack2:
        print('合法o_o')
    else:
        print('非法-_-')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-3 23:24:51 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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