在pta上的,各位有没有会解这个的啊,这个用python,本人能力很菜
输入格式(注意空格):
( 1 2 ( 3 4 ( 5 6 7 ) 8 ) 9 10 )
6
1 1
2 2 1
3 2 2 2
2 2 2
2 1 0
3 2 2 3
输出格式(注意空格):
2
4
7
( 5 6 7 )
ERROR
ERROR
在pta上的,各位有没有会解这个的啊,这个用python,本人能力很菜
( 1 2 ( 3 4 ( 5 6 7 ) 8 ) 9 10 )
6
1 1
2 2 1
3 2 2 2
2 2 2
2 1 0
3 2 2 3
输出格式(注意空格):
2
4
7
( 5 6 7 )
ERROR
ERROR
python代码
#!/sur/bin/nve python
# coding: utf-8
def reTuple(s):
''' 字符串还原元组 '''
lis = s.split()
result = [lis[0]]
for i in range(1, len(lis)):
if lis[i].isdigit() and (lis[i-1].isdigit() or lis[i-1] == ')') or (lis[i] == '(' and lis[i-1].isdigit()) or (lis[i] == '(' and lis[-1] == ')'):
result += [', '] + [lis[i]]
else:
result += [lis[i]]
result = ''.join(result)
return eval(result), f"{f' 字符串还原成元组 ':=^32}\n\n字符串:“{s}”\n元组:{result}\n\n{'='*40}\n"
def main(inStr):
lines = inStr.split('\n')
t = reTuple(lines[0])[0]
result = []
for i in lines[2:]:
#print(i) # 调试用语句。
index = ''.join([f"[{j}]" for j in i.split()[1:]])
#result += [index] # 调试用语句。
try:
result += [eval(f"t{index}")]
except:
result += ['ERROR']
#input(result) # 调试用语句。
outStr = '\n'.join(map(str, result))
print(f"\n输入:\n{inStr}\n\n输出:\n{outStr}")
if __name__ == '__main__':
inStr = '''( 1 2 ( 3 4 ( 5 6 7 ) 8 ) 9 10 )
6
1 1
2 2 1
3 2 2 2
2 2 2
2 1 0
3 2 2 3'''
main(inStr) # 调用main函数完成作业。
s = '( 1 2 ( 3 4 ( 5 6 ) ) 7 ( 8 9 ) ( ) 10 )'
s2 = '( 1 2 ( 3 4 ( 5 6 7 ) 8 ) 9 10 )'
print(f"\n\n样例一:\n{reTuple(s)[1]}\n\n样例二:\n{reTuple(s2)[1]}")