创建一个不需要参数的函数。该功能要求用户输入一系列大于或等于零的数字,一次一个。用户键入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
答案 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块中进行适当的检查。