课后作业20,设计一个判断字符是否合理的程序,哪里出错了?(萌新,求带)
s = input("请输入测试字符串:")a = []
a[:] = s
b = []
for i in a[:]:
if i != "(" or ")" or "[" or "]" or "{" or "}":
print("不合法")
elif i == "(" or "[" or "{":
b.append(i)
elif i ==")" and b[-1]=="(":
b.pop()
elif i =="]" and b[-1]=="[":
b.pop()
elif i =="}" and b[-1]=="}":
b.pop()
if b ==[]:
print("合法!")
else:
print("不合法!")
elif i =="}" and b[-1]=="}":
这行的大括号是不是反了 本帖最后由 灰晨 于 2021-7-7 17:11 编辑
if i != "(" or ")" or "[" or "]" or "{" or "}":
这么写肯定只会执行这个if语句里的,下面你elif写出花来都没用,
因为不可能有一个i 同时为()[]{}
改一下
if i not in ['(',')','[',']','{','}']: s = input("请输入测试字符串:")
a = []
a[:] = s
b = []
for i in a[:]:
if i in {"(",")","[","]","{","}"}:
b.append(i)
if b ==[]:
print("合法!")
else:
print("不合法!")
这里可以用集合~~
欢迎追问,探讨 s = input("请输入测试字符串:")
b = []
for i in s:
if i in ['(',')','[',']','{','}']:
if i == "(" or "[" or "{":
b.append(i)
elif i ==")" and b[-1]=="(":
b.pop()
elif i =="]" and b[-1]=="[":
b.pop()
elif i =="}" and b[-1]=="{":
b.pop()
if b ==[]:
print("合法!")
else:
print("不合法!")
这个样子还是没办法检测呀
要求
1.字符串仅包含 '('、')'、'['、']'、'{'、'}' 这三对括号的组合
2.左右括号必须成对编写,比如 "()" 是合法的,"(" 则是非法的
3.左右括号必须以正确的顺序闭合,比如 "{()}" 是合法的,"{(})" 则是非法的 青出于蓝 发表于 2021-7-7 17:50
这里可以用集合~~
欢迎追问,探讨
s = input("请输入测试字符串:")
b = []
for i in s:
if i in ['(',')','[',']','{','}']:
if i == "(" or "[" or "{":
b.append(i)
elif i ==")" and b[-1]=="(":
b.pop()
elif i =="]" and b[-1]=="[":
b.pop()
elif i =="}" and b[-1]=="{":
b.pop()
if b ==[]:
print("合法!")
else:
print("不合法!")
这个样子还是没办法检测呀
要求
1.字符串仅包含 '('、')'、'['、']'、'{'、'}' 这三对括号的组合
2.左右括号必须成对编写,比如 "()" 是合法的,"(" 则是非法的
3.左右括号必须以正确的顺序闭合,比如 "{()}" 是合法的,"{(})" 则是非法的 灰晨 发表于 2021-7-7 17:09
if i != "(" or ")" or "[" or "]" or "{" or "}":
这么写肯定只会执行这个if语句里的,下面你elif写出花 ...
s = input("请输入测试字符串:")
b = []
for i in s:
if i in ['(',')','[',']','{','}']:
if i == "(" or "[" or "{":
b.append(i)
elif i ==")" and b[-1]=="(":
b.pop()
elif i =="]" and b[-1]=="[":
b.pop()
elif i =="}" and b[-1]=="{":
b.pop()
if b ==[]:
print("合法!")
else:
print("不合法!")
这个样子还是没办法检测呀
要求
1.字符串仅包含 '('、')'、'['、']'、'{'、'}' 这三对括号的组合
2.左右括号必须成对编写,比如 "()" 是合法的,"(" 则是非法的
3.左右括号必须以正确的顺序闭合,比如 "{()}" 是合法的,"{(})" 则是非法的 加油好好学 飞花落尽 发表于 2021-7-7 18:46
s = input("请输入测试字符串:")
b = []
for i in s:
我用的是not in 吧
照你一开始的代码,把if 语句改成 i not in ['(',')'.'[',']','{','}']:
先判断i在不在集合里,不在就打印不合法,
在就执行下面elif语句 本帖最后由 傻眼貓咪 于 2021-9-4 14:07 编辑
代碼:
def check(string: str) -> bool:
bracket = {"(": ")", "{": "}", "[": "]"}
temp = []
for s in string:
if s in list(bracket.values()):
if not temp: return False
elif s != bracket]: return False
else: temp.pop()
elif s in list(bracket.keys()):
temp.append(s)
return not temp
print(check(input("請輸入字符串:\n")))
輸入/輸出結果:
請輸入字符串:
((({{{[]}}}{}()[])))
True
請輸入字符串:
{(})
False
页:
[1]