一、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