天天看點

Python 程式設計——for 循環語句、while 循環語句

一、for 循環語句

1.for 循環語句結構

for 循環使用的文法:

for 變量 in range(10):

        循環需要執行的代碼

else:

        全部循環結束後要執行的代碼

2.python内置函數 range()

range(stop):0~stop-1

range(start,stop):start~stop-1

range(start,stop,step):start~stop-1,step為步長

>>> range(3)
[0, 1, 2]
>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2)
[1, 3, 5, 7, 9]
>>> range(2,11,2)
[2, 4, 6, 8, 10]
           

示例:

求1~100的數字之和

num = 0
for sum in range(1,101):
    num = num + sum
print(num)
           

需求1:求1~100之間的所有偶數之和

num = 0
for sum in range(2,101,2):
    num = num + sum
print(num)
           

需求2:求1~100之間的所有的奇數之和

num = 0
for sum in range(1,100,2):
    num = num + sum
print(num)
           

需求3:使用者輸入一個數字,求該數的階乘:3!=321

num = int(input('請輸入一個數字:'))
res = 1
for i in range(1,num+1):
    res *= i
print('%s的階乘是%d' %(num,res))
           

操作練習:

使用者登陸程式

1.輸入使用者名和密碼

2.判斷使用者名和密碼是否正确(‘name==root’,'passwd=‘westos’)

3.為了防止暴力破解,登陸次數僅有三次,如果超過三次機會,報錯

for i in range(3):
    username = input('請輸入使用者名:')
    passwd = input('請輸入密碼:')
    if username == 'root' and passwd == 'westos':
        print('成功登陸程式')
        break
    else:
        print('登陸失敗,您還剩餘%d次機會' %(2-i))
else:
    print('登入機會用完,請等待後重試')
           

3.break 、continue、exit 的差別

break

:跳出整個循環,不會再循環後面的内容

continue

:跳出本次循環,continue後面的代碼不再執行,但是循環依然繼續

eixt()

:結束程式的下運作

for i in range(10):
    if i == 5:
        break
    print(i)
print('hello python world')

開始執行腳本
0
1
2
3
4
hello python world
           
for i in range(10):
    if i == 5:
        continue
    print(i)
print('hello python world')

開始執行腳本
0
1
2
3
4
6
7
8
9
hello python world
           
for i in range(10):
    if i == 5:
        exit()
    print(i)
print('hello python world')

開始執行腳本
0
1
2
3
4
           

練習題:

題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?

提示:組成無重複的幾位數,就嵌套幾次

sum = 0
for a in range(1,5):
    for b in range(1,5):
        for c in range(1,5):
            if a != b and a != c and b != c:
                sum += 1
                print(a,b,c)
print('共有%d種可能'%(sum))
           

題目:實作指令行提示符

要求:

1.指令行樣式[[email protected] ~]#

2.能實作原本linux中實作指令的功能

3.實作exit退出功能

4.實作原本linux輸入回車功能

import os

for i in range(1000):
    cmd = input('[[email protected] ~]# ')
    if cmd:
        if cmd == 'exit':
            print('退出')
            break
        else:
            print('run %s' %(cmd))
            os.system(cmd)
    else:
        continue
           

題目:

輸入兩個數值:

求兩個數的最大公約數和最小公倍數.

提示:最小公倍數=(num1*num2)/最大公約數;最大公約數=num1 % i ==0 , num2 %i ==0 ,i為最大公約數

方法一:

num1 = int(input('請輸入第一個數:'))
num2 = int(input('請輸入第二個數:'))
if num1 < num2:
    min = num1
elif num1 >num2:
    min = num2
for i in range(1,min+1):                         最大公約數的範圍在1~min之間
    if num1 % i == 0 and num2 % i == 0:
        gys = i
        print('%s和%s的最大公約數是%d' %(num1,num2,gys))
gbs = (num1 * num2) / gys
print('%s和%s的最小公倍數是%d' %(num1,num2,gbs))
           

方法二:

num1 = int(input('請輸入第一個數:'))
num2 = int(input('請輸入第二個數:'))
min_num = min(num1,num2)
for i in range(1,min_num+1):
    if num1 % i == 0 and num2 % i == 0:
        gys = i
        print('%s和%s的最大公約數是%d' %(num1,num2,gys))
gbs = (num1 * num2) / gys
print('%s和%s的最小公倍數是%d' %(num1,num2,gbs))
           

二、while 循環語句

1.while 循環語句結構

while 條件滿足:

        滿足條件執行的語句

else:

        不滿足條件執行的語句

示例:

sum = 0
i = 1
while i <= 10:
    sum += i
    i += 1
print(sum)
           

用while做

使用者登陸程式

1.輸入使用者名和密碼

2.判斷使用者名和密碼是否正确(‘name==root’,'passwd=‘westos’)

3.為了防止暴力破解,登陸次數僅有三次,如果超過三次機會,報錯

i = 0
while i < 3:
    username = input('請輸入使用者名:')
    passwd = input('請輸入密碼:')
    if username == 'root' and passwd == 'westos':
        print('成功登陸程式')
        break
    else:
        print('登陸失敗,您還剩餘%d次機會' %(2-i))
        i += 1
else:
    print('登入機會用完,請等待後重試')
           
2.while死循環:while True

即定義條件永真,即死循環

while True:
    print('hello world')
           
while 2 > 1:
	print('hello python world')
           

測試後快速退出,避免卡死

練習題:

猜數字遊戲

if , while, break

1. 系統随機生成一個1~100的數字;

** 如何随機生成整型數, 導入子產品random, 執行random.randint(1,100);

2. 使用者總共有5次猜數字的機會;

3. 如果使用者猜測的數字大于系統給出的數字,列印“too big”;

4. 如果使用者猜測的數字小于系統給出的數字,列印"too small";

5. 如果使用者猜測的數字等于系統給出的數字,列印"恭喜中獎100萬",并且退出循環;

import random
num1 = random.randint(1,100)
i = 0
while i < 5:
    num2 = int(input('請輸入您猜想的數字:'))
    if num1 == num2:
        print('恭喜中獎100萬')
        break
    elif num1 > num2:
        print('too small')
        print('您還剩餘%d次機會' %(4-i))
    else:
        print('too big')
        print('您還剩餘%d次機會' %(4-i))
    i += 1