noobpython While循环

noobpython While循环,python,Python,我正在尝试制作一个程序,要求用户输入一个号码,然后询问他们是否想输入另一个号码。根据他们输入的数字,程序将求和并给出平均值 这是我到目前为止所拥有的,但我知道它不起作用。非常感谢您的帮助 a = int(input("Enter a number: ")) more = input("Please enter Y or N if you want to add more numbers: ") def funct(more): while more == "Y": b

我正在尝试制作一个程序,要求用户输入一个号码,然后询问他们是否想输入另一个号码。根据他们输入的数字,程序将求和并给出平均值

这是我到目前为止所拥有的,但我知道它不起作用。非常感谢您的帮助

a = int(input("Enter a number: "))
more = input("Please enter Y or N if you want to add more numbers: ")

def funct(more):
    while more == "Y":
        b = int(input("Enter another number: "))
        abSum = a + b
        abMean = a + b / 2
        if more == "Y":
            return b
        else:
            break

    print(abSum)
    print(abMean)

你不需要在某处调用这个函数吗

类似于(未经测试):


简化后,您的程序可能如下所示:

abSum = int(raw_input("Enter a number: "))

while raw_input("Please enter Y if you want to add more numbers or anything else to finish: ") == 'Y':
    b = int(raw_input("Enter another number: "))
    abSum = abSum + b
    abMean = abSum / 2

print(abSum)
print(abMean)
基本上,您循环直到用户输入并清空第二个提示中的行或任何其他内容,然后修复您的总和/平均值

对于您试图完成的任务,您不一定需要单独的功能。如果你想要一个函数,比如说一个家庭作业,那么你可以重写这个片段,将
b
的值传递给一个单独的函数,该函数将更新
abSum
abMean
,并在
while
循环中调用它


嗯,请原谅,我的例子实际上并没有计算平均值,你需要将输入值的数量计算到第三个变量中,然后除以这个数量。另一位回答者提出了一个解决方案,其中包含一个输入值列表,可以在您的案例中使用。

我将其清理干净,并将其转换为一个独立的脚本:

#!/usr/bin/env python

def ask_for_some_numbers():
    numbers = []
    more = 'y'
    while more.lower() == 'y':
        number = int(raw_input("Enter a number: "))
        numbers.append(number)
        more = raw_input("Please enter Y if you want to add more numbers: ")
    print (sum(numbers))
    print (sum(numbers)/len(numbers))
if __name__ == '__main__':
    ask_for_some_numbers()
以下是不同之处:

  • 我使用一个列表来存储数字(
    numbers=[]
    )-这样您就可以轻松地拥有任意数量的数字
  • 我调用该函数开始提示输入数字
  • 我使用
    raw\u input
    而不是
    input
    。建议对用户的输入使用原始输入,因为
    input
    将评估输入的内容(如果您有恶意用户,这可能会导致问题)
  • 我使用内置的
    sum
    方法对列表中的项目进行汇总
尝试以下方法:

a = int(input("Enter a number: "))
more = input("Please enter Y or N if you want to add more numbers: ")
summ=a          #intialize sum to a
count=1         # no. of integers entered, to calculate mean
while more.lower()=="y":
    b = int(input("Enter another number: "))
    count+=1          #increase count by 1
    summ+= b          #add b to sum
    abMean = summ/float(count)         #used float(count) to get actual value

    print("sum=",summ)
    print("mean=",abMean)    
    more = input("Please enter Y or N if you want to add more numbers: ") #ask for user input
print("sum=",summ)
print("mean=",abMean)  
输出:

Enter a number: 5
Please enter Y or N if you want to add more numbers: y
Enter another number: 5
sum= 10
mean= 5.0
Please enter Y or N if you want to add more numbers: y
Enter another number: 2
sum= 12
mean= 4.0
Please enter Y or N if you want to add more numbers: y
Enter another number: 15
sum= 27
mean= 6.75
Please enter Y or N if you want to add more numbers: y
Enter another number: 10
sum= 37
mean= 7.4
Please enter Y or N if you want to add more numbers: n
sum= 37
mean= 7.4

下面是一段简单的循环代码,它将询问数字,直到得到一个空白条目,然后打印输入的总和和平均值:

total = 0
count = 0

num = input("Enter a number: ")

while (num):
    total += int(num)
    count += 1
    num = input("Enter another number (or a blank line to quit): ")

print("Total =", total)
print("Average =", total/count)

您的代码中有一个函数定义,但您不能在任何地方调用该函数。你需要一个函数来处理你想做的事情,还是你不确定?没错,我完全忘了。在调用它时处理它,您对
abMean
的计算是不正确的。考虑输入2, 2, 2、10。您的代码将给出
6
,而
4
是正确答案。这并不提供问题的答案。若要评论或要求作者澄清,请在他们的帖子下方留下评论。无论如何……通过调用函数,他解决了问题……见上面的评论……这确实很有帮助,但我正在尝试这样做,这样它会不断询问您是否要添加更多数字,然后对您输入的数字进行求和。这可能是1或20个数字请参见编辑,并建议@girasquid的实际平均值计算解决方案。这非常有用,正是我想要的。感谢大家猜测,从
int(input())
print()
的使用来看,提问者正在使用Python3。我想这还不确定。
total = 0
count = 0

num = input("Enter a number: ")

while (num):
    total += int(num)
    count += 1
    num = input("Enter another number (or a blank line to quit): ")

print("Total =", total)
print("Average =", total/count)