python looper_Python 初级 6 循环 (二)

一、复习

1 for循环

for looper in [1, 2, 3, 4]:print("hello")

1) 每次循环开始,会依次把列表中的数按顺序赋值给looper,第一次looper为1,第二次为2,第三次为3,第四次为4

2) 每赋一次值,就会把下面指令块的所有工作执行一遍,这个指令块也叫循环体

3) 每次执行完后,变量looper会赋上列表中下一个值,直到赋完为止

2 break跳出

3 range()函数

1)range(1, 5)表示的为列表[1, 2, 3, 4],右边的5表示边界,不是具体的值

2)range通常我们写成range(0, 4), 表示列表[0,1, 2, 3],这也是计算机通常表示数的方法,从0这个具体的数开始,到边界4结束(不包括边界4)一共有4个数

3) range简化版,range(4)即表示range(0, 4)

4 字符串格式化:占位符

print("{},{}".format(1, 2))

控制占多少个字符的:2表示占用2个字符的位置

比如

print("{:1},{:2},{:3}".format(1, 2, 3))

分别表示占用1个字符,2个字符,3个字符

二、练习:

1、试着打印一个长方形:

********

*           *

*           *

********

方法:

步骤1:

打印出4行:

for i in range(4):print("*")

效果如下图:*

*

**

步骤2:打印出一行中的8列:

text = ""

for j in range(8):

text+= "*"

print(text)

效果如下图:

********

步骤3:

将打印行与打印列的合并起来:for i in range(4):

text= ""

for j in range(8):

text+= "*"

print(text)

打印出来的效果如下图:********************************

步骤4:观察步骤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)

效果如下:********

**

**

********

步骤5:观察步骤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)

成功,效果如下:********

* *

* *

********

步骤6:拓展,将常数4行8列变成变量:然后最后一行与最后一列的判断需要用行和列减1来替换,代码如下:

row = 4col= 8

for i inrange(row):

text= ""

for j inrange(col):if i == 0 or i== row-1:

text+= "*"

else:if j == 0 or j==col-1:

text+= "*"

else:

text+= " "

print(text)

步骤7:

拓展,将变量通过输入完成

row = int(input("请输入长方形的行数:"))

col= int(input("请输入长方形的列数:"))for i inrange(row):

text= ""

for j inrange(col):if i == 0 or i== row-1:

text+= "*"

else:if j == 0 or j==col-1:

text+= "*"

else:

text+= " "

print(text)最终效果图:请输入长方形的行数:8

请输入长方形的列数:16

****************

* *

* *

* *

* *

* *

* *

****************

2、试着打印一个直角三角形:

*

***

*****

*******

步骤一:

最后一行是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 inrange(row):

text= ""

for j in range(1 + i*2):

text+= "*"

print(text)

效果如下:请输入打印直角三角形的高度:8

*

***

*****

*******

*********

***********

*************

***************

3、试着打印一个乘法口诀表:假设三行三列

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

第三步,观察后我们发现,第一行从1开始,第二行从2开始,第三行从3开始,刚好对应变量i第一次为1,第二次为2,第三次为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*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

拓展2:增加结果:

for i in range(1, 3+1):

text= ""

for j in range(1, i+1):

text+= "{}*{}={}".format(i,j,i*j)print(text)

拓展3:增加控制:

begin = 3end= 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

拓展4:增加输入控制:

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

拓展5:增加结果宽度控制{:2}表示这个占位符占2个字符的位置

前面代码修改为:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值