Python题求解(oT-T),想知道有没有什么比较简洁的代码

在金字塔模式中显示数字(编写一个嵌套for循环来显示下面的输出)

img

这个就用循环就可以了。

for i in range(8):
    for j in range(8 - i - 1):
        print('\t', end = '')
    for j in range(i + 1):
        print(2 ** j, '\t', end = '')
    for j in range(i - 1, -1, -1):
        print(2 ** j, '\t', end = '')
    print()

img

一行

for i in range(8):print(" "*5*(7-i)+"".join([str(1<<j).ljust(5) for j in range(i+1)]+[str(1<<j).ljust(5) for j in range(i-1,-1,-1)])+" "*5*(7-i))
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7611698
  • 除此之外, 这篇博客: python对列表中的元素(字典)进行排序中的 1. 按照字典元素中的t值的下标大小进行排序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

           由于t值是字符串类型,那么需要将下标截取出来,然后再对name进行排序

    
    a = [
        {
            "value": "用途",
            "name": "t4"
        },
        {
            "value": "期初累计摊额",
            "name": "t10"
        },
        {
            "value": "原值",
            "name": "t5"
        },
        {
            "value": "增加日期",
            "name": "t3"
        },
        {
            "value": "摊销期数",
            "name": "t7"
        },
        {
            "value": "净残值",
            "name": "t6"
        },
        {
            "value": "本月摊销额",
            "name": "t9"
        },
        {
            "value": "减值准备累计",
            "name": "t8"
        },
        {
            "value": "期末累计摊销额",
            "name": "t11"
        },
        {
            "value": "无形资产名称",
            "name": "t2"
        },
        {
            "value": "序号",
            "name": "t1"
        }
    ]
    
    # 对a按照t的下标大小进行排序
    a.sort(key=lambda s: int(s["name"][1:]))
    print(a)
    

      打印结果:

    [{'value': '序号', 'name': 't1'}, {'value': '无形资产名称', 'name': 't2'}, {'value': '增加日期', 'name': 't3'}, {'value': '用途', 'name': 't4'}, {'value': '原值', 'name': 't5'}, {'value': '净残值', 'name': 't6'}, {'value': '摊销期数', 'name': 't7'}, {'value': '减值准备累计', 'name': 't8'}, {'value': '本月摊销额', 'name': 't9'}, {'value': '期初累计摊额', 'name': 't10'}, {'value': '期末累计摊销额', 'name': 't11'}]
    

     

     

  • 以下回答来自chatgpt:

    为了更简洁地实现金字塔数字显示问题,可以使用以下代码:

    n = int(input("输入一个整数:"))
    
    for i in range(1,n+1):
        print(" " * (n-i), end="")
    
        for j in range(i, 2*i-1):
            print(j, end=" ")
        for j in range(2*i-1, i-1, -1):
            print(j, end=" ")
    
        print()
    

    首先,我们接收用户输入的整数n。然后,使用两个嵌套的for循环来打印出金字塔的每一行。外层循环控制行数,内层循环用于打印每一行的数字。我们使用空格来对齐每一行的数字,所以在每一行的开始,我们打印出n-i个空格。接下来,我们使用一个循环来打印每一行的数字,数字的范围是从i到2*i-1。我们先打印升序的数字,然后再打印降序的数字。在打印完所有数字后,我们使用print()函数换行。这样,我们就能得到金字塔数字显示的结果。

    希望这个方法能满足您的需求!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^