Попытка зациклить добавление списка вне функции - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь завершить цикл ниже, где входные данные берутся у пользователя, а затем отправляются через функцию «shipPlacement» вверху.Однако, когда я запускаю свой код, цикл запускается для первого члена в "shipSizeList", а затем после завершения функции пользователю не предлагается другой ввод для "inputPos".Как мне сделать так, чтобы все позиции кораблей разного размера были добавлены в listOfShipsPos?

listOfShipsPos = []

# adds to the grid where all of the ships are
def shipPlacement(position,size,direction):
    listOfShipsPos.append(position)
    direction.upper()
    i = 1
    # for the length of ship (size), repeats adding positions in the
    # desired direction (up(U), down(D), left(L) or right(R))
    while i < size:
        if direction == "U":
            listOfShipsPos.append(ship - 8)
        if direction == "D":
            listOfShipsPos.append(ship + 8)
        if direction == "L":
            listOfShipsPos.append(ship - 1)
        if direction == "R":
            listOfShipsPos.append(ship + 1)
        i =+ 1


# ask user to input their ship positions
shipSizeList = [2, 3, 3, 4, 5]
for shipSize in shipSizeList:
    inputSize = shipSize
    inputPos = int(input("Position for " + str(shipSize) + " sized ship? (1 to 64)"))
    inputDir = str(input("direction for " + str(shipSize) + " long ship? "))
    shipPlacement(position=inputPos, size=inputSize, direction=inputDir)

1 Ответ

0 голосов
/ 16 декабря 2018

Функция shipPlacement фактически никогда не завершается, потому что цикл никогда не завершается.Причиной является утверждение i =+ 1.Это должно быть i += 1.Кроме того, я думаю, что вы должны переназначить переменную direction, это полный код

listOfShipsPos = []

# adds to the grid where all of the ships are
def shipPlacement(position,size,direction):

    listOfShipsPos.append(position)
    direction = direction.upper()
    i = 1
    # for the length of ship (size), repeats adding positions in the
    # desired direction (up(U), down(D), left(L) or right(R))
    while i < size:

        if direction == "U":
            listOfShipsPos.append(ship - 8)
        if direction == "D":
            listOfShipsPos.append(ship + 8)
        if direction == "L":
            listOfShipsPos.append(ship - 1)
        if direction == "R":
            listOfShipsPos.append(ship + 1)
        i += 1


# ask user to input their ship positions
shipSizeList = [2, 3, 3, 4, 5]
for shipSize in shipSizeList:
    inputSize = shipSize
    inputPos = int(input("Position for " + str(shipSize) + " sized ship? (1 to 64)"))
    inputDir = str(input("direction for " + str(shipSize) + " long ship? "))
    shipPlacement(position=inputPos, size=inputSize, direction=inputDir)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...