Проблема с бесконечным циклом
Почему в выводе получается бесконечный цикл? По идее при вводе 4-го X цикл должен был завершится, но этого не происходит.. Может я что то упустил в коде?
def profile (name, **db):
"""Пример регистрации на сайте"""
print(f"{name}:")
while True:
y = input("О чём данные?: ")
x = input("Введите данные: ")
db[y] = x
if x:
y1 = input("О чём данные?: ")
x1 = input("Введите данные: ")
db[y1] = x1
elif x1:
y2 = input("О чём данные?: ")
x2 = input("Введите данные: ")
db[y2] = x2
elif x2:
y3 = input("О чём данные?: ")
x3 = input("Введите данные: ")
db[y3] = x3
elif x3:
y4 = input("О чём данные?: ")
x4 = input("Введите данные: ")
db[y4] = x4
elif x4:
print("-Введенно достаточно данных-")
break
for key,value in db.items():
print(f"\t{key} - {value}")
profile("Josh")
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Вы, кажется, предполагаете что после if True: может выполнится elif True:. Нет, в цепочке if/elif/elif/.../elif/else всегда срабатывает только один вариант. Что приводит к такому порядку ввода:
while
y, x, y1, x1
while
y, x, y2, x2
while
y, x, y3, x3
while
y, x, y4, x4
while
y, x
print
break
Чтобы поправить замените везде elif на if. А ещё лучше переработайте на ввод одной пары x, y в цикле до тех пор пока размер db не станет равен пяти.
while len(db) < 5:
y = input("О чём данные?: ")
x = input("Введите данные: ")
db[y] = x
print("-Введенно достаточно данных-")