while循环的基础语法
程序当中的while循环的基本格式:
while 条件:
条件成立时要做的事情1。
条件成立时要做的事情2。
条件成立时要做的事情3。
……
样例:(比如我们要输出10次hello world)
i=0
while i<10:
print("hello world")
i+=1
输出结果:
只截取部分,输出的是十次hello world。
但值得注意的是在Python当中,不存在着++i或者i++这种写法,切勿将其和其他的语言搞混。
其中值得注意的点:
- while的条件需要是布尔类型,不论是直接的布尔类型,还是说是比较运算符得到的布尔类型,当值为True的时候,就是运行该循环,当值为False的时候就是结束该循环。
- 需要设置循环终止条件,例如i+=1,和i<10,确保循环可以停止。(除非你真实的需要无限循环)
- 空格缩进和if一样都需要设置。
最后的样例大家分析一下,看看得能不能理解并自行写出下面的这个小代码块:
import random
num = random.randint(1,10)
sum=1
guess_number=int(input("请输入您猜测的数字:"))
while guess_number!=num :
if guess_number<num :
print(f"您第{sum}次猜测错误了!猜测的值小于真实的值")
elif guess_number>num :
print(f"您第{sum}次猜测错误了!猜测的值大于真实的值")
sum+=1
guess_number = int(input("请输入您猜测的数字:"))
print(f"恭喜你,你第{sum}次就猜对了,正确的值为{num}")
输出结果:
while循环的嵌套应用
程序当中的while嵌套循环的基本格式:
while 条件:
条件成立时要做的事情1。
条件成立时要做的事情2。
条件成立时要做的事情3。
……
while 条件:
条件成立时要做的事情1。
条件成立时要做的事情2。
条件成立时要做的事情3。
……
样例:(我们要连续3天,每天打印3次hello world)
day = 1
while day<=3 :
num = 1
while num<=3 :
print(f"这是第{day}天的第{num}次hello world")
num+=1
day+=1
输出结果:
注意事项:
- 同判断语句一样,while的循环嵌套,要注意空格缩进。这是基于空格缩进来进行决定层次关系的。
- 注意条件的设置,避免出现无限循环(除非就是想出现无限循环)
关于一些杂项小知识
- 有时候我们并不希望print帮助我们换行,我们可以在print(字面值,end=" 尾部加的内容" ),来进行调控比如下面:
print("hello")
print("world")
print("hello",end=" ")
print("world")
运算结果:
2. 我们有时候在输出的时候希望对齐,可以使用\t,横向制表符。
样例:
print("hello world")
print("good job")
print("hello\tworld")
print("good\tjob")
输出结果:
如图在使用\t之前,结果是没有进行对齐的,但是\t可以帮助我们进行对齐操作。
最后便是写一个经典的9 9乘法表,这边给出笔者写的,有兴趣的读者也可以自己尝试一下:
i=1
while i<10 :
j=1
while j<=i :
print(f"{i}*{j}={i*j}",end='\t')
j+=1
print("")
i+=1
输出结果:
for循环的基础语法
对于while和for循环的差别分析:
- while的循环条件是自定义的,自行控制循环的条件。
- for循环则是采用一种穷举的方式,是对一批内容进行逐个处理。
基础语法
程序当中的for循环的基本格式:
for 临时变量 in 待处理的数据集(序列):
条件成立时要做的事情1。
条件成立时要做的事情2。
条件成立时要做的事情3。
……
样例:(比如我们要输出hello)
str="hello"
for i in str:
print(i)
输出结果:
整个过程就比较像C++当中的范围for循环,有学过的可以相关一起理解一下。
可以看出for循环是将字符串内的内容依次取出,所以for循环又称作遍历循环。
注意事项:
- 与while不同for循环是没办法定义循环条件的,只能从被处理的数据集当中,以此取出数据进行操作。
- 所以理论来说for循环是无法构造无限循环的。
- 还是经典的空格缩进,也需要注意。
这里还是给一段代码,是统计一串字符串当中含有多少个a的,大家也可以写写,或者理解一下:
str="asdwaddsawdkajdawdawdadw"
sum=0
for i in str:
if i=='a' :
sum+=1
print(sum)
输出结果:
range语句
待处理的数据集实际上就是序列类型,序列类型实际上就是其内容可以一个一个取出来的类型。
序列类型包括:字符串,列表,元组等。
而这里采用一个range语句,来构建一个序列。
range的用法大概有三种:
第一种:
range(整型数字)
实际上是获取一个从0开始到整型数字结束的数字序列,不包括整型数字本身,比如range(5),实际上就是[0,1,2,3,4]这五个数据的序列。
第二种:
range(number1,number2)
实际上是获取一个从number1开始到number2结束的数字序列,不包括number2本身,比如range(5,10),实际上就是[5,6,7,8,9]这五个数据的序列。
第三种:
range(number1,number2,step)
实际上是获取一个从number1开始到number2结束的步长为step数字序列(默认step为1),得到的数字不包括number2本身,比如range(5,10,2),实际上就是[5,7,9]这五个数据的序列。
给个例子:(打印3次hello world)
for x in range(3) :
print("hello world")
输出结果:
变量作用域
for循环中的临时变量,其作用域限定在for循环内部。
但这种限定是变成规范的限定,并不是强制限定。但不建议在外部使用,如果想要使用,在外部声明这个变量就可以了。
for循环的嵌套应用
程序当中的for循环的基本格式:
for 临时变量 in 待处理的数据集(序列):
条件成立时要做的事情1。
条件成立时要做的事情2。
条件成立时要做的事情3。
……
for 临时变量 in 待处理的数据集(序列):
条件成立时要做的事情1。
条件成立时要做的事情2。
条件成立时要做的事情3。
……
样例:(我们要连续3天,每天打印3次hello world)
for i in range(1,4) :
for j in range(1,4) :
print(f"这是第{i}天的第{j}次hello world")
输出结果:
相同的while和for循环也可以相互嵌套,这里就布不举例子了。
这里也给出for循环的9 9乘法表:
for i in range(1,10) :
for j in range(1,i+1) :
print(f"{i}*{j}={i*j}",end="\t")
print()
循环中断break和continue
continue:中断本次循环,进入下一次循环。可以加在循环的任意一个地方。
样例展示:
for i in range(1,4) :
print("语句1")
continue
print("语句2")
输出结果:
可以看出语句二直接被跳出了,根本不执行了,但是还是会进入下一个循环。而对于嵌套循环的话,continue只能影响属于自己的当层循环。
break:直接结束循环。可以加在循环的任意一个地方。
例如:
for i in range(1,4) :
print("语句1")
break
print("语句2")
输出结果:
可以看出语句二直接被停止循环了,而对于嵌套循环的话,break也只能影响属于自己的当层循环。
结语
最后写一段代码,大家也可以综合的了解一下。
一共5个苹果,10个小朋友,每人可以拿1个苹果。不过会进行抽奖机制,如果这个人抽号抽到了1代表这个小朋友可以拿苹果,但是抽到了2就不能,如果苹果没了,就直接结束,问最后剩下多少个苹果,多少个人没进行抽奖。
import random
sum=5
num=1
for num in range(1,11) :
index=random.randint(1,2)
if index==2 :
sum-=1
print(f"第{num}个小朋友抽到了苹果")
if sum==0 :
break;
print(f"还剩下{sum}个苹果,{10-num}个人没有进行抽奖")