Здесь есть куча элементарных ошибок, поэтому давайте вместо этого рассмотрим фиксированную версию:
def get_input():
try:
value = input('Enter a number or done:')
return int(value)
except ValueError:
return False
def triangle(input, list):
triangle_number = (input*(input+1)//2)
list.append(triangle_number)
print(f"Your number of {input} has a triangle number of {str(triangle_number)}.")
def main():
triangle_list = []
while True:
value = get_input()
if value is False:
break
triangle(value, triangle_list)
print(triangle_list)
main()
Давайте начнем с main
, что концептуально действительно просто:
- мы создаем список,
- , затем заполняем его,
- , затем печатаем его.
Как мы его заполняем? Мы l oop нашего ввода агрегации:
- получить значение от пользователя. Это будет либо число, либо
False
- , если оно равно False, немедленно прекратите цикл.
- , если это не так, вызовите нашу функцию треугольника с текущим значением и списком предыдущие значения
Как получить значение от пользователя? Мы используем input()
, а затем пытаемся вернуть версию для этого ввода. Если это не помогло, мы знаем, что ввод был числом номер, но в противном случае мы просто возвращаем число: именно то, что нам нужно.
Что делает наша функция треугольника? Он принимает текущее значение и список предыдущих значений, вычисляет некоторое число, добавляет текущее значение в список предыдущих значений, печатает и завершает работу.
Также не версия Python 3 отформатированных строк: don не используйте конкатенацию строк, если вам нужна строка со значениями из переменных (или даже из значений из других кодовых вызовов). Используйте отформатированные строки, они великолепны.