当用户输入“结束”

时间:2016-04-25 03:28:09

标签: python python-3.x

创建一个不需要参数的函数。该功能要求用户输入一系列大于或等于零的数字,一次一个。用户键入end表示没有更多数字。该函数计算输入的所有值的总和。

我应该只使用while循环和if语句来做到这一点。

我遇到的主要问题是我不知道如何制作它以便“结束”实际上停止循环,而不是添加到值。

def SumFunction():
"""Sum of all values entered"""

number = 0
while number >= 0 and number is not "end":
    number = number + (float(input("Enter next number: ")))
return number

4 个答案:

答案 0 :(得分:0)

这个程序就是我想要的:

def SumFunction():
    sum = 0
    while(True):
        x = input('Enter: ')
        while x.lower()=='end':
            return sum
        while float(x) >= 0:
            sum += float(x)
            break
        else:
            print ("Wrong Number!")

输出:

>>> SumFunction()
Enter: 1
Enter: 2
Enter: -1
Wrong Number!
Enter: end
3.0
>>> 

您可以在循环中使用break来消除它。您还可以使用return方法退出函数。当你退出一个功能时,你也走出了循环!

当且仅当循环正常退出时(即没有中断),循环的else块运行。

答案 1 :(得分:0)

将循环分成更多不连续的步骤:

<limits>

首先获取用户输入并检查它是否为def SumFunction(): """Sum of all values entered""" number = 0 user_input = 1 while user_input >= 0: user_input = input("Enter next number: ") if user_input == 'end': break user_input = float(user_input) number += max(user_input, 0) return number 。如果是,程序将退出循环并返回运行总计'end'。如果不是,程序会将用户输入转换为数字并将其添加到number。如果数字为0或负数,程序将不会向number添加任何内容,循环将停止。最后,返回结果number

答案 2 :(得分:0)

考虑你的循环正在检查的内容:

  

“这样做,而数字大于或等于0且不是'结束'。

哪个值满足两个条件?如果我输入'end',那么它是否满足两个标准;因为你的循环只会在两个条件都为真的情况下中断。

所以你真的想要 or 而不是 and

一旦解决了这个问题,你就会遇到另一个问题:

>>> def sum_function():
...     number = 0
...     while number >= 0 or number is not 'end':
...         number = number + float(input('Enter a number: '))
...     return number
... 
>>> sum_function()
Enter a number: 1
Enter a number: 3
Enter a number: end
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in sum_function
ValueError: could not convert string to float: end

这里的问题是你输入之后立即将所有东西都转换为浮动;所以只要有人输入'end',您的程序就会崩溃,因为它无法将'end'转换为浮点数。

尝试自己解决这个问题: - )

答案 3 :(得分:0)

你可以使用try catch,如果你正在寻找一个他们可能输入结尾的数字Value Error,那么你可以在except块中进行适当的检查。