Python

Python 知识量:10 - 41 - 150

4.4 循环的应用><

计算阶乘- 4.4.1 -

阶乘用于计算将n个物体排列时有多少种方式,类似于这样的数字:1×2×3×…×n。例如:排列字母ABC时,有1×2×3=6种不同的方式。

1、下面是一个使用for循环计算阶乘的示例:

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

如果输入6,运行结果为:

>>> 
======================= RESTART: D:\PythonTestFile\for.py ======================
Please input an integer >=0:6
6 factorial is 720

2、如果使用while循环来实现,则代码如下所示:

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

如果输入6,运行结果是相同的:

>>> 
====================== RESTART: D:\PythonTestFile\while.py =====================
Please input an integer >=0:6
6 factorial is 720

计算输入数字的和- 4.4.2 -

可以利用循环来计算用户输入数字的和,具体做法是:首先获取用户要输入的数字个数,然后根据个数循环接收输入数字并累计,最后打印结果。

1、使用for循环实现的示例如下:

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

根据输入,运行结果可能为:

>>> 
======================= RESTART: D:\PythonTestFile\for.py ======================
How many numbers to sum? 5
Enter number 1: 11
Enter number 2: 36
Enter number 3: 25
Enter number 4: 46
Enter number 5: 18
The sum is 136

2、使用while循环实现的示例如下:

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

根据输入,运行结果可能为:

>>> 
====================== RESTART: D:\PythonTestFile\while.py =====================
How many numbers to sum? 5
Enter number 1: 24
Enter number 2: 36
Enter number 3: 8
Enter number 4: 15
Enter number 5: 43
The sum is 126

未知个数的数字的和- 4.4.3 -

如果事先不知道用户会输入多少个数字,如何来计算输入数字的总和呢?可以约定当用户输入的不是数字,而是某个单词时(例如:done),输入即结束。

要完成以上计算,需要使用while循环,for循环在这种情况下就无能为力了。以下是示例:

# done.py
total=0
i=1;
get=input('Enter number '+str(i)+' or "done": ')
while get!='done':
    total=total+int(get)
    i=i+1
    get=input('Enter number '+str(i)+' or "done": ')
print('The sum is '+str(total))

运行结果为:

>>> 
====================== RESTART: D:\PythonTestFile\done.py ======================
Enter number 1 or "done": 26
Enter number 2 or "done": 35
Enter number 3 or "done": 10
Enter number 4 or "done": 59
Enter number 5 or "done": 64
Enter number 6 or "done": 8
Enter number 7 or "done": done
The sum is 202

以上代码中,首先让用户输入第一个数字,然后在while循环头中判断输入的是否是“done”,如果不是“done”,则默认是数字,进入循环。累加之后,再进行一次输入,如此循环往复,直到用户输入“done”为止。

以上程序中,分别在while循环的内外各设置了一个输入语句,外面的用于第1次输入,里面的用于循环输入。变量i不再用于循环计数,而是用于标记数字个数。