Проверьте ввод для вложенного списка в python - PullRequest
0 голосов
/ 22 января 2020

newb ie для python здесь.

Я пытаюсь проверить, если пользовательский ввод пуст для хранения вложенного списка (координата xy). Если пользователь ничего не вводил, коды должны отображать сообщение, например, «Нет ввода», и l oop возвращает запрос пользователю на ввод.

Я искал всюду по проверке пустого вложенного списка или проверке пустого ввода, но я просто не могу собрать знания вместе. Пример кода приведен ниже:

add = "y"
xy = []

#-------------------------------------
def count_list(l):
    count = 0
    for e in l:
        if isinstance(e, list):
            count = count + 1 + count_list(e)
    return count
#--------------------------------------

while (add == "y"):

    xy.append([(input("Input x value: ")), (input("Input y value: "))])

    add = input("Additional (x, y)? [y/n] ")

qty = (count_list(xy))

print ("(x, y) coordinate(s) inserted:- " + str(xy))

print ("No. of coordinate(s) inserted:- " + str(qty))

Выход

enter image description here


Разломал мне мозг для этого. Обратите внимание, что второй вложенный список пуст. Я пытаюсь выяснить, как остановить код для продолжения, но вместо этого предлагает пользователю сообщение "нет ввода". Позиция пустого вложенного списка не должна добавляться в список.

Также не знаю, почему моя функция count_list также включает подсчет в пустом вложенном списке. Т_Т

1 Ответ

1 голос
/ 22 января 2020

Что вы можете сделать, чтобы избежать подсчета пустого ввода, это continue, когда вы видите, что вход пуст.

while (add == "y"):
    x_val = input("Input x value: ")
    y_val = input("Input y value: ")
    # not x_val checks if the string is an empty string
    if not x_val or not y_val:
        print("Error: No input. Try again.")
        continue

    xy.append([(x_val), (y_val)])

    add = input("Additional (x, y)? [y/n] ")

Выход:

Input x value: 1
Input y value: 2
Additional (x, y)? [y/n] y
Input x value:
Input y value:
Error: No input. Try again.
Input x value: 5
Input y value: 6
Additional (x, y)? [y/n] n
(x, y) coordinate(s) inserted:- [['1', '2'], ['5', '6']]
No. of coordinate(s) inserted:- 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...