【问题标题】:Pattern printing with arrays/tuples使用数组/元组进行图案打印
【发布时间】:2021-12-17 01:02:26
【问题描述】:

所以我正在尝试这样做

你将得到一个正整数 n > 0,你将构造一个由 n 行组成的模式: • 第 0 行包含 1 个数字——数字 1

• 每一行都比前一行长,并遵循随后的模式

所以如果变量n:int = 4,则输出为

[1]
[1,2]
[2,3,5]
[5,7,10,15]

当前数组中的数字被添加到前一个数组中紧接其上方的数字中,并附加到当前数组的末尾。此外,当开始一个新数组时,前一个数组的最后一个元素被视为当前数组的第一个元素。
如果我的问题不清楚,我深表歉意,但我希望在我提供的示例和解释之后,问题现在更清楚了。 这是我的代码:

def append(n: int):
    for x in range(1,n+1):
        return(x,x+1)
    print(append(n))

当我把 n = 4 时,它似乎不起作用,这是什么问题?

【问题讨论】:

  • 您的缩进已关闭;您能否编辑问题以确保您的代码块正确表示实际代码的缩进?也就是说,return 立即结束函数。并且(x, x+1) 永远不会使您显示的模式(就此而言,您对产生显示模式的规则不够清楚)。
  • 目前你的函数只是从循环的第一次迭代中立即返回元组(1, 2)。您是否打算获取上述列表的列表,或者您希望如何返回这些多个元素?其他输入(例如 1 到 5)的预期输出是什么样的?
  • 如果 n = 5,那么预期的输出将是 [1] [1,2] [2,3,5] [5,7,10,15] [7,12,19, 29,44]
  • 如果这是一个作业,那么您可能应该只包含实际作业文本,因为您对需求的描述含糊不清。
  • 输出是如何计算的?

标签: python arrays tuples


【解决方案1】:

这样就可以了:

def func(n):
    mylist = []
    for i in range(n):
        if i == 0:
            mylist.append([1])
        else:
            mylist.append(createnewlist(mylist[i-1]))
    return mylist
                        
def createnewlist(a):
    newlist = [] 
    for i in range(len(a)+1):
        if i == 0:
            newlist.append(a[len(a)-1])
        else:
            value = a[len(a)-1]
            for m in range(i):
                value += a[m]
            newlist.append(value)
    return newlist

print(func(6))

【讨论】:

  • 有更短的方法吗?如果有,你能编辑一下吗?谢谢你:)
  • 您可以将 createnewlist(a) 和 func(a) 组合成一个函数。这会有很大帮助。非常感谢你")
  • 当您在线与 ppl 互动时,请尽量不要刻薄。我问你是因为我不知道该怎么做,而且是因为“我不是你的奴隶”这件事。我所做的是请你帮助我,而不是命令你为我做这件事......请在决定评论粗鲁之前查看整个上下文。
  • 请冷静下来,我只是说你应该尝试自己做,如果你遇到困难,你可以问另一个问题,但这样的问题通常会被关闭,因为我实际上可能已经完成了你的作业并且如果你想让它以另一种方式编码,你应该自己做一些工作
【解决方案2】:

我认为您的代码不会返回您想要显示的模式。这是我为打印该模式而编写的一小段代码,但有两个循环正在运行,如果您可以优化,您可以这样做,或者直接使用代码。

n=4
arr=[1]
brr = [1]
print(brr)
for i in range(0,n-1):
  brr = arr[i:]
  for k in range(0,len(arr)):
    brr.append(arr[k]+brr[k])
  arr = brr
  print(brr)

【讨论】:

  • 你能用元组做吗?我不知道这是否可能,但如果可以使用元组,你能用元组编辑你的答案吗??
  • @DaveShah 实际上元组中的值一旦初始化就不能更改(据我所知)。如果您仍想使用元组,则每次初始化(存储)新值时都必须创建一个新元组。因此,对于 n = 4,您将需要 4 个元组,依此类推,基本上是 n 个元组,占用大量计算空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 2017-04-01
  • 2020-10-16
  • 2012-10-24
相关资源
最近更新 更多