【问题标题】:Using a while loop instead of a for loop in Python [closed]在Python中使用while循环而不是for循环[关闭]
【发布时间】:2018-07-30 23:08:47
【问题描述】:

我被要求为 Python 中的一个类编写一个基本程序,使用 for 循环从用户输入中打印 3 个数字的平均值。

我想出了以下几点:

num1 = raw_input("Please enter your first number: ")
num2 = raw_input("Please enter your second number: ")
num3 = raw_input("Please enter your third number: ")

my_list = [float(num1), float(num2), float(num3)]

total = 0

for i in my_list:
    total += i
    average = total / len(my_list)

print("They average of the 3 numbers is: " + str(average))

作为第二个问题,我被要求使用 while 循环而不是 for 循环重写此代码。谁能告诉我这是如何工作的?谢谢

【问题讨论】:

标签: python python-2.7 for-loop while-loop


【解决方案1】:

解决方法很简单:

i = 0
total = 0
while i < len(my_list):
    total += my_list[i]
    average = total / len(my_list)
    i += 1

【讨论】:

    【解决方案2】:

    你可以像这样简化你的练习并使用 while 循环:

      NUM = 3 
      count = 1 
      my_list = []
      while True:
          input_num = raw_input("Please enter number {}: ".format(count))
          my_list.append(float(input_num))
          if count == NUM:
              break
          count += 1
    
      average = sum(my_list) / NUM 
      print("They average of the {} numbers is: {}".format(NUM, average))
    

    【讨论】:

    • 谢谢,这是个好方法
    • 您至少可以用for i in xrange(1, NUM+1): (py2) 或for i in range(1, NUM+1): (py3) 替换while+counter 循环。这样,您不必自己创建、递增和检查+中断计数器(我将其重命名为 i)。根据经验,如果您在 Python 中执行 while+counter 循环,那么您做错了。仍有一些情况可能需要它,但它是边缘情况。
    【解决方案3】:

    谁能告诉我这是怎么工作的?请问这两种循环有什么区别:

    for 循环迭代一个序列

    while 循环测试条件的真实性

    因此,它们用于不同的目的。我个人会(做)在for之前教while

    可以使用while 循环,但您必须自己进行迭代:

    i = 0
    total = 0
    
    while i < len(my_list):
        total += my_list[i]
        i += 1
    
    average = total / len(my_list)
    

    注意average 的计算在循环之外。

    问:你为什么教旧的python 2.7?

    【讨论】:

    • 非常感谢。我正在学习的大学课程是通过 python 2.7 教授的
    【解决方案4】:

    试试这个代码!

    代码:

    num1 = input("Please enter your first number: ")
    num2 = input("Please enter your second number: ")
    num3 = input("Please enter your third number: ")
    
    my_list = [float(num1), float(num2), float(num3)]
    
    total = 0
    i=0
    while (i<len(my_list)):
        total += my_list[i]
        i=i+1
    average = total / len(my_list)
    
    print("They average of the 3 numbers is: " + str(average))
    

    输出:

    Please enter your first number:  2
    Please enter your second number:  3
    Please enter your third number:  4
    They average of the 3 numbers is: 3.0
    

    【讨论】:

      【解决方案5】:

      我们在 Python 中不使用相同的范例。看到所有这些使用 for/while 循环的“答案”,我感到非常难过。

      这会更 Pythonic(Python 方式):

      average = sum(my_list) / len(my_list)
      

      在 Python 中,我们很少(几乎从不)使用经典的 C 语言 for 循环(它实际上并没有在该语言中实现)。如果你碰巧做了一个,那很可能是你做错了什么。

      您可以查看此(以及其他 R. Hettinger 的)视频以了解原因。这个核心开发人员解释得很清楚。 https://www.youtube.com/watch?v=OSGv2VnC0go

      【讨论】:

        猜你喜欢
        • 2020-08-14
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 2014-03-22
        • 1970-01-01
        • 2020-12-10
        相关资源
        最近更新 更多