Как я могу улучшить эту небольшую программу на python?

#python #python-3.x

#python #python-3.x

Вопрос:

 def multiply():
    nums = []
    total = 1
    multiplyCount = int(input("How many numbers do you want to multiply ? : "))
    for x in range(multiplyCount):
        newNum = int(input("Enter a number: "))
        nums.append(newNum)
    for x in range(len(nums)):
        total *= nums[x]
    print(total)

multiply()
  

Вот мой код. Я хочу, чтобы она не запрашивала multiplyCount, а вместо этого продолжала добавлять числа в multiplyCount, пока пользователь не решит, что этого достаточно. Как я могу это сделать?

Ответ №1:

Вы могли бы использовать что-то вроде этого:

 total = 1
while True:
    choice = input('Enter a number to be multiplied, or stop to terminate: ')
    if choice.lower() == 'stop':
        break
    try:
        total *= int(choice)
        print('Current total is {}'.format(total))
    except ValueError:
        print('Only enter numbers or stop')
  

Ответ №2:

Вы могли бы, например, сделать это с помощью while цикла, вот так:

 def multiply():
    nums = []
    total = 1
    while True:
        newNum = input("Enter quit or a number: ")
        if newNum.lower() == "quit":
            break
        else:
            nums.append(int(newNum))
    for x in range(len(nums)):
        total *= nums[x]
    print(total)

multiply()
  

Есть много дополнительных способов дальнейшего улучшения этого, но я оставлю это вам 🙂

Комментарии:

1. Привет, спасибо за ответ! Но я не понял, что такое newNum. lower() выполняет здесь. Можете ли вы это объяснить?

2. @Fingol это преобразует строку ввода пользователя во все строчные буквы. Чтобы пользователь мог ввести ‘Quit’ или ‘QUIT’ или ‘quiT’ и т.д., Чтобы завершить цикл.

Ответ №3:

(1) Лучший способ — использовать контрольное значение, пользователь должен ввести конкретное значение, если он хочет остановиться. В следующем коде контрольное значение, которое нужно ввести для завершения, равно ‘Q’. Очевидно, что ее можно модифицировать по выбору программиста, но в этом случае не рекомендуется выбирать целое / логическое значение (чтобы позволить пользователю умножать любое значение).

(2) Кроме того, вместо вашего списка можно использовать переменную. (x *= y означает x = x * y)

(3) Переменная res инициализируется значением 1, потому что это целое число нейтрально при умножении.

 def multiply():
    res, number = 1, 1
    while number != 'Q':
        res *= int(number)
        number = input("Enter a number (Q for leave): ")
    print(res)