一、复习

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 = 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)

步骤7:

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

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
****************
* *
* *
* *
* *
* *
* *
****************

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 in range(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 = 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

拓展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

Python 初级 6 循环 (二)的更多相关文章

  1. Python 初级 6 循环

    一.一个简单的for循环 1 重复做相同的事 for looper in [1, 2, 3, 4, 5]: print("hello") 1 looper的值从1开始, 所以loo ...

  2. Python 初级 6 循环 (三)

    一.复习 1 计算循环(for循环) for looper in [1, 2, 3, 4, 5]: print("hello") 1) looper的值从第0个数1开始 2) 对应 ...

  3. 机器学习算法与Python实践之(二)支持向量机(SVM)初级

    机器学习算法与Python实践之(二)支持向量机(SVM)初级 机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/ ...

  4. python基础之循环结构以及列表

    python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...

  5. 第五篇:python基础之循环结构以及列表

    python基础之循环结构以及列表   python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...

  6. python机器学习实战(二)

    python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7159775.html 前言 这篇noteboo ...

  7. 第十章:Python の 网络编程基础(二)

    本課主題 Python中的作用域补充 socketserver 源码 线程的介绍和操作实战 进程的介绍和操作实战 协程的介绍和操作实战 本周作业 Python中的作用域补充 Python世界里沒有块级 ...

  8. Python基础学习(二)

    前一段时间学习了Python数据类型,语句和函数,目前书写python的新特性,继续练手!!!! 一.切片 之前我们从python的list 或者 tuple中取得元素都是这样写,显然不够灵活 lis ...

  9. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

随机推荐

  1. 网页代码编辑器Blocs for mac如何进行行的控制?

    行是Blocs应用程序中的关键结构元素之一,它们是列和Bloc容器,它们构成了构建站点布局的基础.在本篇文章中,我们介绍的是网页代码编辑器Blocs for mac如何进行行的控制? ] 网页代码编辑 ...

  2. git remote 命令的用法

    查看关联的远程仓库信息 # 查看关联的远程仓库的名称    git remote    # 查看关联的远程仓库的详细信息    git remote -v 添加远程仓库的关联 远程仓库的名称一般默认为 ...

  3. mac 使用 brew 安装 nginx 及各种命令

    一.安装 brew install nginx 或 sudo brew install nginx 二.启动 brew services start nginx 或 sudo brew service ...

  4. 玩转Fiddler抓包工具

    一.Fiddler简述 Fiddler是最强大最好用的Web调试工具之一, 它能记录所有客户端和服务器的http和https请求.允许你监视.设置断点.甚至修改输入输出数据.Fiddler包含了一个强 ...

  5. selenium+python自动化99-清空输入框clear()失效问题解决

    前言 在使用selenium做UI自动化的时候,发现有些弹出窗上的输入框,输入文本后,使用clear()方法无效. 这样会导致再次输入时,字符串不是清空后输入,而是跟着后面输入一长串,导致结果不准. ...

  6. CefSharp 与 js 相互调用及注意事项

    CefSharp 与 js 相互调用 一. CefSharp调用 js CefSharp.WinForms.ChromiumWebBrowser wb; ... 方式1. ExecuteScriptA ...

  7. vue中引入.svg图标,使用iconfont图标库

    阿里巴巴的iconfont是一个很好的图标库,海量的素材可以快速满足开发人员日常对图标的诉求,我们采用symbol引用,官方介绍 创建SvgIcon组件 <template> <sv ...

  8. apscheduler 执行报错No handlers could be found for logger "apscheduler.executors.default

    执行报错如下: No handlers could be found for logger "apscheduler.executors.default 解决: 加入日志,查看具体报错,载根 ...

  9. centos7部署etcd集群

    实验环境:centos7.4纯净版 192.168.216.130 node1 master 192.168.216.132 node2 slave 192.168.216.134 node3 sla ...

  10. Django REST framework版本控制

    参考链接:https://www.cnblogs.com/liwenzhou/p/10269268.html 1.路由: #版本控制 re_path('^(?P<version>[v1|v ...