*2.8 循环语句*

循环语句主要是两种,for循环和while循环,他们的主要用法和区别:

for循环用于确定的次数,这样会比while循环更加简洁比如我要循环代码多少次,次数明确,适合用for。

while循环多用于不确定的次数,比如我们的案例游戏:猜拳游戏,我们不知道循环几次才能够分出胜负,所以用while循环比较合适。

*2.8.1 for循环 *

其他编程语言不具备的:输入一个name的变量,成都的拼音,用for循环,打印出x,结果为:

end=“\t”是排在一排,并且空一格。

我们写一个数组,用for循环遍历里面的元素,len(a)是求a数组的长度,我们知道计数从0开始的,长度就是3。Print里面a[i]就是列表里面的每一个元素。运行结果就是下面的:

其中for i in range里面的i表示的是range()函数里面的每一个元素。

如果我们这样写代码:


因为range()函数里面是获取a数组的长度,i代表range里面的每个元素,这个时候i=len(a),也就是说打印i就是获取a数组的长度,所以出现这个结果。而你a[i]就是获取数组里面的每一个元素,不是长度。所以代码print(i,a[i])表示的是打印a数组的长度,并且打印a数组里面的每一个元素。

同样,我们若想重复某个字符串,可以使用range():

for i in range(3):print('我很棒')

range()函数里面可以填入循环的次数,打印的结果就是三遍“我很棒”。

练习:这是个实例,请用for循环代替复杂的print(),打印出每个人想要的物品。

d={'小明':'醋','小红':'油','小白':'盐','小张':'米'}
print(d['小明'])
print(d['小红'])
print(d['小白'])
print(d['小张'])

答案:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(d[i])

为何打印d[i]就是里面的值?

前面的例子非常清楚,打印字典的话出来的结果:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(i)

运行结果如下:

小明
小红
小白
小张Process finished with exit code 0

用循环遍历字典里面的元素,得到的结果就是字典里面的键。

但是我们如果进行进一步搜索:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(i[1])

得到的结果就是:

明
红
白
张Process finished with exit code 0

输入偏移量,我们可以很清晰知道,这是选择的字典的键对应的字符串。

但是如果我们这样:你要查询字典里面值

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(d['小白'])

那就是字典名[键] 打印出来的就是对应键的值。

看到这里,我们知道for i in (字典名):print(字典名[i])输出的结果就是字典里面的键,而字典名[键] 打印出来的就是对应键的值,那么下面:

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}for i in d:print(d[i])

print(d[i])表示就是字典里面遍历所有的键对应的值。

2.8.2 while循环

写while循环,最重要的是逻辑和步骤。

一般一个while循环包含以下的内容:

1.先决条件

2.放行条件(重要)

3.办事流程(重要)

我们下面看一个例子:

a = 0                #先定义变量a,并赋值
while a < 5:         #设定一个放行条件:a要小于5,才能办事a = a + 1  # 满足条件时,就办事:将a+1print(a)   # 继续办事:将a+1的结果打印出来

其中定义a变量,属于先决条件。==先决条件是非必需要求,根据需要决定。==比如后面求1-100的和,这个时候最好定义先决条件。其中最重要的是第二条和第三条,也就是第二和第三行代码。放行条件可以理解为,在现实里面开车出入小区,是本小区的业主,则放行让你进来;不符合这个条件的,我们不会让你进来。在while循环里面,就是符合这个条件,进行循环本体,不符合条件,就停止循环。

办事流程可以理解为,我进入了循环体需要进行什么操作,==循环本身存在的意义就是避免重复性劳动,进行批量操作。==上面的代码明显是将大量a+1的值赋给a这个变量,如果我一个个用print()打印太麻烦了,所以我用循环来批量实现这个过程。

*2.8.2 While循环:*

下面是运行结果:

我们定义了i从0开始,并且范围(循环次数小于)5,打印的是第几次循环,用占位符%d

在后面要把占位的内容补回来。(python要用占位符是因为要格式化输出,见2.6.4)因为i取值为0,我们循环次数肯定是从第一次循环开始,如果不用%(i+1)的话,打印的结果就是当前是第0次循环,不符合我们的习惯。假设我们去掉后面的%(i+1),打印结果就是:

练习:你家的大门是密码门,密码是你的生日816。当输入密码错误的时候,会提示“请尝试输入密码:”。直到密码输入正确,就会提示“欢迎回家!”。

 # 变量password用来保存输入的密码
password = ''
while password != '816':password = input("请尝试输入密码:")
print("欢迎回家!")

如果你的代码是这样:

 # 变量password用来保存输入的密码
password = input("请尝试输入密码:")
while password != 816:print("请尝试输入密码:")
print("欢迎回家!")

将会进入死循环。

print()缩进的问题:

# 之前的例题
a = 0while a < 5:a = a + 1print(a)# 本题
a = 0while a < 5:a = a + 1
print(a)

第一个例子打印结果是1,2,3,4,5,因为print在while循环里面,第二个例子print在外面,打印的例子是5。为什么是5?因为循环的次数和过程与上个例子一样,只不过都没有打印出来,循环第四次的时候,a=4+1=5,这个时候a不小于5,所以下一次不执行循环,到while外面去,打印输出。

练习:1-100分别乘以5:

i = 1
while i<101 :print (i*5)i = i+1

布尔值的运算:

比如,while循环100次的任务,代码是这样写:

i = 1
while i < 101:print("打印这句话100遍")i += 1

我们学习了布尔值的运算,可以这么写代码:

i = 100
while i:print("打印这句话100遍")i = i-1

原理就是:

我们循环次数是100次,i就设置成100次。然后调用while循环,i在这里的值判断为True,就会执行下面的语句,打印一次“打印这句话100遍”,最后i=i-1,i=99,while 99判断值也是True,继续执行……直到i减少为0的时候,程序判断为False,while 0停止循环。这种方式相比上一种更为简单,计算次数减少(因为上一种还要进行判断,i<100,i<99……)

*2.8.3实例:求1-100的和*

n = 100     #n表示的是我们要算100个数的和sum = 0       #sum是总和,为0的意思就是用来记录总和,但是不能对和有影响,一开始为0,然后经过循环慢慢加直到加最后第100个数,得出结果counter = 1      #counter相当于计步器,就是步长,等差数列里面的公差,每次加一个(循环的步长)while counter <= n :       # 循环语句,当计数器小于等于100的时候,就是还没有完成循环任务。sum = sum+counter #这时候总和就等于从一开始sum的0一直加计数器counter += 1      # 每一次加完之后,让计数器+1print(“1-%d的和为:%d”%(n,sum))

另外,用for循环也可以写:

For循环range里面的括号里面有三个参数,range(1,100,1)分别表示从1-100的数字是个范围,不包括100.同时后面的1为步长。

sum = sum +i为何这么写?这条语句完成了自循环,我们可以拿纸笔去模拟,如果这个时候是别的变量,那么sum永远等于0,所以不是我们想要的结果。

复习遇到的问题:变量改名的问题

# 求1-100的和
sum = 0
for i in range(1,101):summary = sum + iprint(summary)

我们用summary = sum + i这个语句,最后的打印结果:

为何会出现这样的现象?我们拿纸笔去模拟一下,因为sum = sum + i这条语句,相当于sum自增,不断循环增加。而上面定义变量的语句,sum没有得到增加,一直是0。所以最后的结果不对。

正确的结果截图:

同样,我们规定一开始还没有执行循环操作时的sum为0,这个时候不同于while循环,可以规定小于多少次数,for循环里面的range函数就有这个范围的功能,1-101就是从1-100的范围,没有步长默认为1。Sum=sum+i的意思就是,i为range范围里面的所有元素,不需要写i += 1是因为步长已经默认,步长为1,没有写出来。

python里面的内置函数:sum函数

sum函数用法也很简单,sum(可迭代对象,通常是列表、元组和集合,默认值)

a = list(range(1,101))
#print(a)
b= sum(a,1)
print(b)

这样就实现了求1-100的和。首先定义变量a,然后范围取出来,将变量a变为列表类型,定义变量b用sum函数,打印b。

综合练习:换座位问题

按照要求打印表里面的数据:

students = ['小红', '小刚', '小明']
students = ['小刚', '小明', '小红']
students = ['小明', '小红', '小刚']

方法一:append()方法:

students = ['小明','小红','小刚']
for i in range(3):student1 = students[0]  # 获取第一个座位的学生 student1students = students[1:]  # 让 student1 暂时离开,后面的学生座位都进一位。students.append(student1)  # 将 student1 安排到最后一个座位print(students)

方法二:pop()方法:

print('提取只取不删:')
list1 = ['0','1','2','3']
print(list1[3])
print(list1)print('\n删除(del)只删不取:' )
list1 = ['0','1','2','3']
del list1[3]
print(list1)print('\n移除(pop)又取又删:')
list1 = ['0','1','2','3']
print(list1.pop())  # 默认删除最后一个元素,并返回该元素的值。
print(list1)
print(list1.pop(0))  # 也可指定删除某个元素,并返回该元素的值。
print(list1)students = ['小明','小红','小刚']
students = ['小明','小红','小刚']
for i in range(3):student1 = students.pop(0)  # 运用pop()函数,同时完成提取和删除。students.append(student1)  # 将移除的student1安排到最后一个座位。print(students)

Python基础循环语句详解(for、while)相关推荐

  1. smarty手册-smarty中foreach循环语句详解

    原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...

  2. Python基础——循环语句

    Python基础--循环语句 Python基础--循环语句 while循环 while循环与if....单分支结构的区别 while的四部循环法** for....in.....循环 break的使用 ...

  3. c语言输入循环语句,C语言中输入输出和循环语句详解.ppt

    C语言中输入输出和循环语句详解 C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3. ...

  4. python循环语句-详解Python中的循环语句的用法

    一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...

  5. python的for语句-详解Python中的循环语句的用法

    一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...

  6. python while循环if_详解python基础之while循环及if判断

    wlile循环 while True表示永远为真,不管是什么条件都会向下执行,下面是写的一个例子. #!/usr/bin/env python age = 24 #给age赋一个值 while Tru ...

  7. python基础知识~ 函数详解2

    python~函数详解2  1 生成器函数    定义 如果函数有yield这个关键字,就是生成器函数.生成器函数() 获取的是生成器,不执行函数   须知 yield和return一样,都可以返回数 ...

  8. python基础循环语句

    python循环语句适合刚入门新手 python循环语句:一,while循环的基础语法.二,while循环的嵌套应用.三,for循环的基础语法.四,for循环的嵌套应用.五,循环中断. 一,while ...

  9. Python条件判断语句详解:if、else、switch都有了

    导读:条件语句是指根据条件表达式的不同计算结果,使程序流转至不同的代码块.Python中的条件语句有--if语句.if- else-语句. 作者:黄传禄 张克强 赵越 来源:大数据DT(ID:hzda ...

最新文章

  1. PL/SQL高级编程
  2. json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 问题解决
  3. Day 04 第一印象可靠吗
  4. 华为复制加密门禁卡_MIUI12轻体验:关于模拟门禁卡,你想知道的都在这里
  5. 计算机视觉招聘_香港理工大学人工智能设计实验室科研招聘
  6. 服务器 .err文件,IIS 关闭HTTPERR(IIS日志)的方法
  7. python 文件读写(追加、覆盖)
  8. java 抽象封装多态_java面向对象(封装,继承,多态,抽象,接口的定义和实现)...
  9. “啁啾”看完这篇再不懂,放弃吧……
  10. 2008年6月6日今天终于调回公司本部啦,记录历史的一天。
  11. 使用Power Query从Web页面获取图像到Power BI报告中
  12. JS动态生成select下拉框的option并默认选中
  13. [工具推荐] IPv4 和 IPv6 网站测速工具
  14. 测试工具Monitor入门
  15. IBM Websphere MQ 基础3:Listener监听器
  16. vscode Android调试
  17. 解决笔记本装linux后触摸板无法用的问题
  18. 7天搭建物联网项目 STM32 + ESP8266 第 1 节 上传数据到云平台
  19. Bilibili支持了AV1编码,关于AV1编码你知道吗?
  20. VS Test: No connection could be made because the target machine actively refused it 127.0.0.1:6910

热门文章

  1. 达梦数据库表空间创建
  2. 如何将他人产品变为自己的产品?--包装方案
  3. 如何正确制作游戏的HD重制版
  4. mysql查询语句——模糊查询
  5. 模拟新浪微博登录发送微博
  6. 【电子秤方案】人体秤方案开发
  7. android编译出来的内核是dtb,内核编译出现错误,求大神教
  8. 青岛胶南中专计算机专业,胶南职业中专官网
  9. 微信小程序---地图导航(点击地址,可以进行导航)
  10. Hudi-集成 Hive