for looper in [1, 2, 3, 4]: print("hello")
1) 每次循環開始,會依次把列表中的數按順序賦值給looper,第一次looper爲1,第二次爲2,第三次爲3,第四次爲4函數
2) 每賦一次值,就會把下面指令塊的全部工做執行一遍,這個指令塊也叫循環體oop
3) 每次執行完後,變量looper會賦上列表中下一個值,直到賦完爲止spa
1)range(1, 5)表示的爲列表[1, 2, 3, 4],右邊的5表示邊界,不是具體的值code
2)range一般咱們寫成range(0, 4), 表示列表[0,1, 2, 3],這也是計算機一般表示數的方法,從0這個具體的數開始,到邊界4結束(不包括邊界4)一共有4個數orm
3) range簡化版,range(4)即表示range(0, 4)blog
print("{},{}".format(1, 2))
控制佔多少個字符的:2表示佔用2個字符的位置字符串
好比input
print("{:1},{:2},{:3}".format(1, 2, 3))
分別表示佔用1個字符,2個字符,3個字符for循環
********form
* *
* *
********
方法:
打印出4行:
for i in range(4): print("*")
效果以下圖:
* * *
*
打印出一行中的8列:
text = "" for j in range(8): text += "*" print(text)
效果以下圖:
********
將打印行與打印列的合併起來:
for i in range(4): text = "" for j in range(8): text += "*" print(text)
打印出來的效果以下圖:
********
********
********
********
觀察步驟3與最終實現的差距,發如今for i in range中第0行和第3行是打印所有的*,第一行和第2行中for j in range的第0列和第7列打印,修改以下:
for i in range(4): text = "" for j in range(8): if i == 0 or i== 3: text += "*" else: if j == 0 or j==7: text += "*" print(text)
效果以下:
******** ** ** ********
觀察步驟4發現,之因此把第7列的打到了第1列,是由於中間有空格沒有考慮,即若是沒有打印*號時,需打印空格,修改以下:
for i in range(4): text = "" for j in range(8): if i == 0 or i== 3: text += "*" else: if j == 0 or j==7: text += "*" else: text += " " print(text)
成功,效果以下:
******** * * * * ********
拓展,將常數4行8列變成變量:而後最後一行與最後一列的判斷須要用行和列減1來替換,代碼以下:
row = 4 col = 8 for i in range(row): text = "" for j in range(col): if i == 0 or i== row-1: text += "*" else: if j == 0 or j==col-1: text += "*" else: text += " " print(text)
拓展,將變量經過輸入完成
row = int(input("請輸入長方形的行數:")) col = int(input("請輸入長方形的列數:")) for i in range(row): text = "" for j in range(col): if i == 0 or i== row-1: text += "*" else: if j == 0 or j==col-1: text += "*" else: text += " " print(text)
最終效果圖:
請輸入長方形的行數:8 請輸入長方形的列數:16 **************** * * * * * * * * * * * * ****************
*
***
*****
*******
最後一行是7個*,有4行,所以可仿照前面打印出4行7列的圖形出來
for i in range(4): text = "" for j in range(7): text += "*" print(text)
效果以下:
******* ******* ******* *******
考慮要求的圖形:在咱們的for i in range(4)中
第0行爲1個*,1 + 0 * 2 = 1
第1行爲3個*,1 + 1 * 2 = 3
第2行爲5個*,1 + 2 * 2 = 5
第3行爲7個*,1 + 3 * 2 = 7
觀察發現*的個數與行存在必定的關係,看起來像是這樣
第0行,1 + 0 * 2 = 1
第1行,1 + 1 * 2 = 3
第2行,1 + 2 * 2 = 5
第3行,1 + 3 * 2 = 7
即每行的*數=1 + 行數 * 2:(針對range(4)行數是從0開始)
修改代碼,將 for j in range(7)即每次打印7個*改爲每次打印 1 + 行數 *2
具體代碼以下:
for i in range(4): text = "" for j in range(1 + i*2): text += "*" print(text)
打印效果:
* *** ***** *******
步驟三:將打印的行數換成變量,並由用戶輸入
row = int(input("請輸入打印直角三角形的高度:")) for i in range(row): text = "" for j in range(1 + i*2): text += "*" print(text)
效果以下:
請輸入打印直角三角形的高度:8 * *** ***** ******* ********* *********** ************* ***************
1*1 1*2 1*3
2*1 2*2 2*3
3*1 3*2 3*3
解法:
text = "" for j in range(1, 3+1): text += "{}*{}".format(1,j) print(text)
效果:
1*11*21*3
修正一下:
text = "" for j in range(1, 3+1): text += "{}*{} ".format(1,j) print(text)
再看效果
1*1 1*2 1*3
for i in range(1, 3+1): text = "" for j in range(1, 3+1): text += "{}*{} ".format(1,j) print(text)
效果:
1*1 1*2 1*3 1*1 1*2 1*3 1*1 1*2 1*3
for i in range(1, 3+1): text = "" for j in range(1, 3+1): text += "{}*{} ".format(i,j) print(text)
效果:
1*1 1*2 1*3 2*1 2*2 2*3 3*1 3*2 3*3
1*1
2*1 2*2
3*1 3*2 3*3
觀察,第一行text加一次,第二行text加兩次,第三行text加三次,看起來加的次數和行數i是相等的
for i in range(1, 3+1): text = "" for j in range(1, i+1): text += "{}*{} ".format(i,j) print(text)
效果:
1*1 2*1 2*2 3*1 3*2 3*3
for i in range(1, 3+1): text = "" for j in range(1, i+1): text += "{}*{}={} ".format(i,j,i*j) print(text)
begin = 3 end = 9 for i in range(begin, end+1): text = "" for j in range(begin, i+1): text += "{}*{}={} ".format(i,j,i*j) print(text)
效果:
3*3=9 4*3=12 4*4=16 5*3=15 5*4=20 5*5=25 6*3=18 6*4=24 6*5=30 6*6=36 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
begin = int(input("請輸入乘法表第一個數:")) end = int(input("請輸入乘法表第二個數:")) for i in range(begin, end+1): text = "" for j in range(begin, i+1): text += "{}*{}={} ".format(i,j,i*j) print(text)
效果:基本符合要求,能夠根據用戶輸入打印出任意的乘法表,不過發現部分數據沒有對齊,修改一下,使得先知足九九乘法表是對齊的
請輸入乘法表第一個數:2
請輸入乘法表第二個數:5
2*2=4
3*2=6 3*3=9
4*2=8 4*3=12 4*4=16
5*2=10 5*3=15 5*4=20 5*5=25
前面代碼修改成:
begin = int(input("請輸入乘法表第一個數:")) end = int(input("請輸入乘法表第二個數:")) for i in range(begin, end+1): text = "" for j in range(begin, i+1): text += "{}*{}={:2} ".format(i,j,i*j) print(text)
效果以下:
請輸入乘法表第一個數:2 請輸入乘法表第二個數:5 2*2= 4 3*2= 6 3*3= 9 4*2= 8 4*3=12 4*4=16 5*2=10 5*3=15 5*4=20 5*5=25