m0_65427375 2023-12-28 23:00 采纳率: 100%
浏览 17
已结题

PTA:Tuple(Python)

在pta上的,各位有没有会解这个的啊,这个用python,本人能力很菜

img


输入格式(注意空格):

( 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
  • 写回答

5条回答 默认 最新

  • 梦幻精灵_cq 2023-12-29 12:03
    关注
    • 代码运行效果截屏图片

      img


        本题目关键点在于,将另类的“元组”输入字符串,搞成它在python中的样子!我是想得黔驴技穷的时候,才构造好“算法”的。
        代码的调试,也花了我不少时光。😊😊截屏图片后面是用题目中的两个样例对我“造”的“str to tuple”函数的试炼效果。😉😉

    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]}")
    
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 修改了问题 12月29日
  • 赞助了问题酬金15元 12月29日
  • 展开全部

悬赏问题

  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。
  • ¥15 把VMware项目复制到另一台电脑
  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错