Burnov

导航

04 流程控制(02)

5、比较for循环和while循环

  计算乘阶:1x2x3x4x...xn,也就是n!;

# forfact.py
n = int(input('Enter an integer >= 0: '))
fact = 1
for i in range(2,n + 1):
    fact = fact * i
print(str(n) + ' factorial is ' + str(fact))

  使用while循环实现如下:

# whilefact.py
n = int(input('Enter an integer >= 0: '))
fact = 1 
i = 2
while i <= n:
    fact = fact * i
    i = i + 1
print(str(n) + ' factorial is ' + str(fact))

  因为Python对于整数没有限制,所以Python可以用来计算非常大的数据;

 

  计算用户输入的数字总和:

# forsum.py
n = int(input('How many numbers to sum? '))
total = 0
for i in range(n):
    s = input('Enter number ' + str(i + 1) + ': ')
    total = total + int(s)
print('The sum is ' + str(total))

  使用while循环编写这个代码:

# whilesum.py
n = int(input('How many numbers to sum? '))
total = 0
i = 1
while i <= n:
    s = input('Enter number ' + str(i) + ' :')
    total = total + int(s)
    i = i + 1
print('The sum is ' + str(total))

 

  计算未知个数的总合:

# donesum.py
total = 0
s = input('Enter a number (or "done"): ')
while s != 'done':
    num = int(s)
    total = total + num
    s = input('Enter a number (or "done"): ')
print('The sum is ' + str(total))

  在这个程序下,如果我们一直输入数字,就会一直处于循环中;

    对于这个程序,我们需要注意以下四点:

      1、我们必须在两个地方调用input:循环前面及循环体内。之所以必须这样做,是因为训话你条件判断输入是数字还是‘done’。

      2、在循环体内,语句的排列顺序至关重要。如果循环条件为True,就说明s不是‘done’,所以假定它不是一个整数。因此,我们可以将它转换为整数,将与其综合相加,并让用户接着输入。

      3、仅当确定输入字符串s不是字符串‘done’后,我们才把它转换为整数。则输入‘done’时程序将崩溃。

        s = int(input('Enter a number (or "done"): '))

      4、不再需要计数器变量!。在前面计算总合的程序中,i用于记录用户输入了多少个数字。一般而言,程序包含的变量越少,越容易记忆、理解、调试和拓展。

 

6、跳出循环和语句块

  基于上面的程序,我们需要跳出循环,我们使用 break 语句;

# donesum_break.py
total = 0
while True:
    s = input('Enter a number (or "done"))
    if s == 'done':
        break  #jump out of the loop
    num = int(s)
    total = total + num
print('The sum is ' + str(total))

  【注意:一般使用break语句,是为了让程序更加容易理解】

  与 break 相对应的,continue 语句,continue 语句可以跳出当前循环,进入循环语句的下一次迭代;它不如 break 使用那么常见,但是一般建议避免使用 continue 语句;

 

7、循环中的循环

  嵌套循环在编程中非常常见。例如下面的九九乘法表:

# timetable.py
for row in range(1,10):
    for col in range(1,10):
        prod = row * col
        if prod < 10:
            print(' ', end = '')
        print(row * col, ' ', end = '')
    print()

posted on 2019-07-01 20:59  Burnov  阅读(178)  评论(0编辑  收藏  举报