如何改善python中的这个小程序?

时间:2019-03-06 19:17:48

标签: 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()

这是我的代码。我不想让它要求乘法计数,而是继续向乘法计数添加数字,直到用户认为足够为止。我该怎么办?

3 个答案:

答案 0 :(得分:3)

您可以使用类似这样的内容:

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')

答案 1 :(得分:1)

例如,您可以使用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()

还有很多其他方法可以对此进行进一步改进,但是我将留给您:)

答案 2 :(得分:0)

(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)