首页 > 解决方案 > 以给定的间隔将数字添加到列表中python

问题描述

我正在尝试将“x”添加到间隔“a”和“b”之间的列表“arr”中。该列表更新了“m”次。(即)我们将“x”添加到间隔“a”和“b”之间的列表中“m”次。我已设法仅更新“arr”中的“x”值在“a”和“b”之间,而不是在间隔之间。请帮助!

def main():
arr=[]
n=int(input())
m=int(input())
for i in range(n):
    arr.append(0)
for i in range(m):
    a=int(input())
    b=int(input())
    x=int(input())
    for j,c in range(len(arr)):
            if j==a-1 :
                arr[a-1]=x+arr[a-1]
            if j==b-1:
                arr[b-1]=x+arr[b-1]


    print(arr)
if __name__ == '__main__':
main()

标签: arrayspython-3.x

解决方案


我不清楚这个问题,但我认为你说你想做的是:

  1. 创建数组
  2. 将数字“x”添加到数组的索引
  3. 重复步骤 2

我忽略了'm'。

  arr = []
  array_length = int(input('Length of initial array >'))
  arr = [0]*array_length # Create the array
  keep_running = True # Replacing the use of 'm' - less parameters for the user!
  while keep_running:

    x = int(input('Number to add >'))
    param_index_start = int(input('Start at index >')) #formerly 'a'
    # Lets check that the start index is valid
    if param_index_start > len(arr):
      print("Start index must be less than initial array length ({})".format(len(arr)))
      continue
    param_index_stop = int(input('Finish at index >')) #formerly 'b'

    arr_length = len(arr)
    # Lets make sure we are not trying to access indexes which do not exist
    stop_index = min(arr_length, param_index_stop)
    start_index = min(arr_length, param_index_start)
    print("Adding {} to indexes {} to {}".format(x, start_index, stop_index))
    # Do the addition
    for index in range(start_index, stop_index):
      arr[index] += x

    print("Current array: ", arr)
    # Allow the user an opportunity to exit
    continue = input("Continue adding? Y/N >")
    if continue == "N":
      keep_running = False

这是一些示例输出(压缩空间)

Length of initial array > 10
Number to add > 1
Start at index > 5
Finish at index > 10
Adding 1 to indexes 5 to 10
Current array:  [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
Continue adding? Y/N > Y

Number to add > 3
Start at index > 4
Finish at index > 7
Adding 3 to indexes 4 to 7
Current array:  [0, 0, 0, 0, 3, 4, 4, 1, 1, 1]
Continue adding? Y/N > Y

Number to add > 1
Start at index > 0
Finish at index > 20
Adding 1 to indexes 0 to 10
Current array:  [1, 1, 1, 1, 4, 5, 5, 2, 2, 2]
Continue adding? Y/N > N

[1, 1, 1, 1, 4, 5, 5, 2, 2, 2]

您可以在此处找到 repl 示例

我可能误解了你的问题。


推荐阅读