一句废话都没有的Pycharm(四):循环及流程控制
介绍
- 1. range函数
- 2. 循环
- 2.1 while循环
- 2.2 for_in循环
- 2.3 嵌套循环
- 3. 流程控制语句
- 3.1 break
- 3.2 continue
- 3.3 多重循环中的break和continue
- 4. else语句
1.内置函数 range
骨骼图:
代码:
#range函数
#第一种创建方式,默认从0开始,步长为1
r=range(10)
print(r)
print(list(r))
#第二种创建方式,默认步长为1
r=range(2,10)
print(r)
print(list(r))
#第三种创建方式
r=range(2,10,3)
print(r)
print(list(r))
#in,not in 用于判断一个数是否在range代表的序列中
print(2 in r)#True
print(8 not in r)#True
结果演示:
2.循环(反复做同一件事)
骨骼图:
2.1 while循环
语法结构
while 条件表达式
循环体
步骤:
while求阶乘的代码演示:
#while循环求阶乘
a=int(input('Please input a number:'))
factorial=1;
while a>=1:
factorial*=a
a-=1
print(factorial)
print(10*9*8*7*6*5*4*3*2*1)#验证
结果展示:
练习:while求0-100之间的奇数和。
#while循环1-100之间的奇数和
a=1
sum=0
while a<=100:
if a%2==1:
sum+=a
a+=1
print('1-100之间的奇数和为:',sum)
结果:
2.2 for_in循环
用于遍历输出,见代码。
语法结构
for 定义的变量 in 可迭代对象
循环体
代码演示:
#for_in
#遍历字符串
for s in 'Max': #将M赋值给s打印输出,重复
print(s)
#遍历序列
for s in range(3):
print(s)
#不需要自变量时,用_代表,in后面为循环次数
for _ in range(3):
print('I like Math')
#用for_in来求1-100之间的奇数和
sum=0
s=0
for s in range(1,100,2):
sum+=s
print('1-100之间的奇数和为:',sum
结果:
练习:输出100到999之间的水仙花数(Armstrong number)。
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
代码演示:
#输出100到999之间的水仙花数
for s in range(100,1000):
s1 = s%10#个位
s2 = s//10%10#百位
s3 = s//100#千位
if s1**3+s2**3+s3**3 == s:
print('水仙花数为:', s)
结果:
2.3嵌套循环
循环结构中又嵌套了另外的完整的循环结构,内层循环是外层循环的循环体。
例子:九九乘法表
代码:
#嵌套循环,例:九九乘法表
for i in range(1,10):#9行
print(i)
for j in range(1,i+1):#列
print(i,'*',j,'=',i*j,end='\t')#不换行
print()#换行
结果:
3. 流程控制语句
3.1 break
用于结束循环体结构,非正常结束循环。
代码演示:
#break
#输入密码,三次机会
#在for_in中
for _ in range(3):
s=input('Pleasr input the password:')
if s=='123':
print('password is right')
break
else:
print('password is wrong')
#在while中
a=0
while a<=3:
s = input('Pleasr input the password:')
if s=='123':
print('password is right')
break
else:
print('password is wrong')
a+=1
结果:
3.2 continue
用于结束当前循环,进入下一循环
代码演示:
#continue
#输出1到50之间是13的倍数的数,要求使用continue
for s in range(10,50):
if s%13!=0:
continue
else:
print(s)
结果展示:
3.3 多重循环中的continue和break
用于控制其所在层的循环。
代码(演示一下其在双层循环的表现):
# 多重循环中的break
for i in range(1,10):
for j in range(1,100):
if j%2==0:
break
print(j)
'''结果出现9个1的解释:
i=1,j=1,1%2!=0,输出1,i=1,j=2,2%2==0,break跳出本层循环——>
i=2,j=1,1%2!=0,输出1,i=2,j=2,2%2==0,break跳出本层循环——>
i=3,j=1,1%2!=0,输出1,i=3,j=2,2%2==0,break跳出本层循环——>
...
i=9,j=1,1%2!=0,输出1,i=9,j=2,2%2==0,break跳出本层循环——>
所以结果输出9个1。
'''
结果:
结果出现9个1的原因是:
i=1,j=1,1%2!=0,输出1,i=1,j=2,2%20,break跳出本层循环;
i=2,j=1,1%2!=0,输出1,i=2,j=2,2%20,break跳出本层循环;
i=3,j=1,1%2!=0,输出1,i=3,j=2,2%20,break跳出本层循环;
…
i=9,j=1,1%2!=0,输出1,i=9,j=2,2%20,break跳出本层循环
所以结果输出9个1。
4. else语句
else可以和if搭配使用,在if条件不成立的情况执行;除此之外,else还可以和while、for搭配使用,在没有碰到break的情况下执行。
代码演示:
#else
#输入密码,三次机会
#在for_in中
for _ in range(3):
s=input('Pleasr input the password:')
if s=='123':
print('password is right')
break
else:
print('password is wrong')
else:
print('The number of attempts today has reached the limit ')
#在while中
a=0
while a<=3:
s = input('Pleasr input the password:')
if s=='123':
print('password is right')
break
else:
print('password is wrong')
a+=1
else:
print('The number of attempts today has reached the limit ')
结果展示: