Хранение координат во вложенном списке с использованием цикла - PullRequest
0 голосов
/ 22 мая 2019

У меня есть координаты робота, я принимаю число роботов за ввод и сохранение координат в списке, называемом местоположениями. Я хочу, чтобы местоположения хранили координаты всех роботов.

Используя цикл, я добавляю пустой список внутри локаций и сохраняю координаты в подсписке.

locations = []

m = input("Number of robots: ")

for i in range(m)
    locations.append([])

    x = x + 1
    y = y + 1
    z = z + 1
    locations[i].append(x)
    locations[i].append(y)
    locations[i].append(z) 
print(locations)

Я ожидаю, что результатом будут местоположения [(1,1,1),(2,2,2)....], но я не могу получить вывод.

Ответы [ 7 ]

0 голосов
/ 22 мая 2019

Попробуйте:

locations = []

m = int(input("Number of robots: "))
x, y, z = 0, 0, 0
for i in range(m):
    x, y, z = x + 1, y + 1, z + 1
    locations.append([x, y, z])
print(locations)

В вашем коде есть несколько ошибок:

  • пропущенное двоеточие после for in in range
  • пропущенное преобразованиеввода в целое число.

Еще лучше, вы можете использовать простое понимание списка :

locations = [[i, i, i] for i in range(int(input("Number of robots: ")))]
0 голосов
/ 22 мая 2019

Я знаю, что вы уже получили много ответов, но просто хотели просмотреть исходный код и посмотреть, что происходит:

locations = []

m = input("Number of robots: ")

# You're missing a colon here
# Also, since m was user input, it's actually of type string
# You could use the 'int' function around it to make it an integer
for i in range(int(m)):

    locations.append([])

    # x, y and z are not defined, though I'm assuming you've done this elsewhere
    x = x + 1
    y = y + 1
    z = z + 1
    locations[i].append(x)
    locations[i].append(y)
    locations[i].append(z)

print(locations)

С этими изменениями я получил вывод:[[1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4]]

Как уже отмечали другие, нет необходимости добавлятьпустой список, вы можете удалить пустую строку добавления списка и заменить другие строки кода добавления чем-то простым:

locations.append((x,y,z))

В результате вы получите следующий вывод, который, как я думаю, был вашим первоначальным намерением:[(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]

0 голосов
/ 22 мая 2019

Для проверки ввода вы можете использовать isdecimal().

m = -1
while m < 0:
    inp = input("Number of robots: ")
    if inp.isdecimal():
        m = int(inp)
    else:
        print("Invalid input.")

Для создания нового списка с кортежами я могу рекомендовать использовать списочное понимание с повторением последовательности .

locations = [(i,) * 3 for i in range(1, m + 1)]
print(locations)

Вывод:

Number of robots: word
Invalid input.
Number of robots: 5
[(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5)]
0 голосов
/ 22 мая 2019

Попробуйте это

locations = []
x = y = z = 0

m = input("Number of robots: ")

for i in range(m):
  x = x + 1
  y = y + 1
  z = z + 1

  locations.append((x, y, z))

print(locations)
0 голосов
/ 22 мая 2019

Это должно работать:

locations = []

m = input("Number of robots: ")

for i in range(int(m)):
    x += 1
    y += 1
    z += 1
    locations.append([x, y, z])

print(locations)
0 голосов
/ 22 мая 2019

Попробуйте,

locations = []
m = input("Number of robots: ")
for i in range(1, m+1): # This starts from 1 and print till m(m+1 is to consider "m")
    locations.append((i,i,i)) # This will create your desired output.
print(locations)
0 голосов
/ 22 мая 2019

Зачем сначала добавлять пустой список, а затем помещать в него содержимое?

locations = []
x = y = z = 0

m = input("Number of robots: ")

for i in range(m):
  x = x + 1
  y = y + 1
  z = z + 1

  locations.append([x, y, z])

print(locations)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...