我正在处理读取字符串输入的代码,并计算括号(使用打开和关闭的任意字符)是否平衡。目的是提示用户输入括号的数量作为字符串,因此编译器将计算其数量和类型(例如,如果它是'('
或')'
)。
我得到了提示:
提示1 :在开头引入两个初始化为零的计数器。 然后在循环中探索字符串的符号。对于目前 如果符号为
left
,则符号将'('
计数器增加1, 否则,将“正确”增加1。计数器提示2 :如果括号出现在a中,则调用字符串数学 数学公式。例如,字符串
'()'
,'(())()'
,'(()())'
是平衡的,而字符串'))(())(('
和'())(()'
不是。
我的代码现在看起来像这样:
lefts =str(input("Please enter a left parenthesis: "))
rights =str(input("Please enter a right parenthesis: "))
#token parsing requires paying attention to the order of the parenthesis
def ptest(test): #testing with counters
lefts = 0
rights = 0
balance = 0 #additional counter that will help us determine the amount of strings and their relation to each other
for c in test:
if c == '(':
balance += 1
lefts += 1
elif c == ')':
balance -= 1
rights += 1
print ('testing "'+test+'"')
print ('lefts='+str(lefts)+' rights='+str(rights))
#if there will b a balance between the strings/parenthesis, they will possibly be balanced
if balance == 0: print 'same number of open/close, possibly balanced'
else: print 'different number of open/close, definitely not balanced'
ptest(test1)
ptest(test2)
我怎么能修改它才能起作用?
答案 0 :(得分:0)
但我认为你部分误解了这个任务。
可以有很多括号,但不能再有")"比"("(最后两种类型的数量必须相等) 我认为,输入不仅包括括号
所以你应该建立一个循环(就像你做的那样)和
我可以在您的代码中执行此操作,但我认为,您应该单独执行此操作。大多数这些事情你已经完成了,但似乎你没有完全理解,你做了什么,必须做什么。