while循环
格式:
while 表达式:
语句:
逻辑:当程序执行到while语句时,首先计算"表达式"的值
如果表达式的值为假,那么结束整个while"语句"
如果表达式的值为真,那么执行语句,执行完"语句",再去执行"表达式"的值
如果表达式的值还为真,那么继续执行语句,直到表达式的值为假,整个while语句才结束
#计算1+2+3+4+^……+100的值
sum = 0
num = 1
while num <= 100:
sum += num
num += 1
print("sum = %d"%(sum)) #print("sum = %d"%(sum)) 写法等于 print("sum = ",sum)
#(输出)sum = 5050
str = "luckly is a good boy"
a = 0
while a <len(str): #a < 19
print("str(%d) = %s" % (a,str[a]))
a += 1
#str[n] 查找字符 n为字符数 字符串的第一位为0位开始数到第n位
如果没有这一个语句,while循环在判断 x < N 时总是为True,就会无限循环下去,变成死循环,所以要特别留意while循环的退出条件。
whlie…else语句
其else语句只有在while正常结束时才会被执行,如果while循环被break语句结束,是不会执行else语句的。
var = 6
while var > 0:
var = var -1
if var == 3: # 变量为 3 时跳过输出
break
print ('当前变量值 :', var)
else:
print("Good bye!")
#(输出)当前变量值 : 5
#(输出)当前变量值 : 4
while…while嵌套
当第一个while执行一次,第二个while语句就要执行一轮,直到不满足第二个while的条件语句,
然后在执行第一个while循环,然后再第二个while语句执行一遍,直到不满足while的条件语句。直到第一个while语句也不满足while语句。
n=0
while n<9:
s= 0
n+=1
while s < n:
s += 1
print("{}*{}={}".format(s,n,s*n),end=" ")
print() #换行处理
#(输出) 1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
简单的图形打印
i = 0
while i < 6:
i +=1 #行数 空格 *号
#1 0 6
k = 0 #2 1 5
while k < i -1: #3 2 4
k += 1 #4 3 3
print(" ",end=" ") #5 4 2
#6 5 1
j = 0
while j < 7 - i:
j += 1
print("*",end=" ")
print()
#(输出)
* * * * * *
* * * * *
* * * *
* * *
* *
*
i = 0
while i < 5:
i += 1
j=0
while j < 5-i:
print(" ",end="")
j += 1
k =0
while k < 2*i-1:
print("*",end="")
k += 1
print()
#(输出)
*
***
*****
*******
*********
数字金字塔
n = 0
s = 0
while n < 4:
n += 1
i = 0
while i < 4-n:
print(" ",end=" ")
i += 1
j = 0
while j < n:
j += 1
k =0
while k < j :
s = k + 1+((n-1)*n)/2
k += 1
print(int(s),end=" ")
print()
#(输出)
1
2 3
4 5 6
7 8 9 10