python while 循环语句
发布时间:2020-12-20 11:01:32 所属栏目:Python 来源:网络整理
导读:1.while 循环结构 特征:减少代码冗余,提升代码效率语法:while 条件表达式: code1 code2 ... 1.初始化一个变量2.写上循环的条件表达式3.自增自减的变量值 案例1:打印1~100 i = 1while i=100: # 要执行的逻辑 ... print(i) i += 1"""初始化一个变量 i第一次循
1.while 循环结构 特征:减少代码冗余,提升代码效率 语法: while 条件表达式: code1 code2 ... 1.初始化一个变量 2.写上循环的条件表达式 3.自增自减的变量值 案例1:打印1~100 i = 1 while i<=100: # 要执行的逻辑 ... print(i) i += 1 """ 初始化一个变量 i 第一次循环: i <= 100 条件成立,执行循环 直接打印 print(i) => 1 i += 1 => i = 2 第二次循环: 回到17行,重新回到判断,看一看是否满足条件 2 <= 100 条件成立,执行循环 直接打印 print(i) => 2 i += 1 => i = 3 第三次循环: 回到17行,看一看是否满足条件 3 <= 100 条件成立,执行循环 直接打印 print(i) => 3 i += 1 => i = 4 ... ... 依次类推进行循环 ... 到什么时候结束? 当打印100 结束之后 i += 1 => i = 101 回到循环的判断条件中 发现101 <= 100 不满足条件,不成立,不执行循环体代码块 到此为止,循环直接结束. """ 案例2 : 打印1~100的累加和?1+2+3+4+ .....+100 ? #方法一 total 负责做累加和 total = 0 i = 1 while i<=100: total += i i+=1 print(total) """ # 代码解析: 第一次循环: 1 <= 100 条件为真,执行循环 total += i => total = total + i => total = 0 + 1 i+=1 => i=2 第二次循环: 回到条件表达式中进行判断 2<=100 条件为真,执行循环 total += i => total = total + i => total = 0 + 1 + 2 i+=1 => i=3 第三次循环: 回到条件表达式中进行判断 3<=100 条件为真,执行循环 total += i => total = total + i => total = 0 + 1 + 2 + 3 i+=1 => i=4 ... ... 依次循环 什么时候结束? total = 0 + 1 + 2 + 3 + ... + 100 i+=1 => i = 101 回到条件表达式中进行判断 101 <= 100 条件不成立,不执行循环体; 直接终止循环; print(total) 5050 """ # 方法二 # 1+2+3+4+ .....+100 ? 用while True 的方式实现; total = 0 i = 1 sign = True while sign: total += i i+=1 # 手动加上终止的条件 if i == 101: sign = False print(total) # 这种情况下就不执行循环了;用这样的方式终止循环; while False: print(111) 2.死循环 while True: print(123) (1)单循环练习:1.打印一行十个小星星 i = 1 while i <= 10: print("★",end="") i += 1 2.用一个变量打印出一行十个小星星 i = 0 strvar = "" while i<10: # 循环10次,拼接10个星星,每循环一次拼接一个星星 strvar += "★" i+=1 print(strvar) 3.打印一行十个小星星 奇数个打印★ 偶数个打印☆ i = 1 while i <= 10: if i % 2 == 0: print("☆",end='') else: print("★",end="") i += 1 #方法二 print("-----分割线-------") count = 1 str_var = "" while count <= 10: if count % 2 == 0: str_var += "☆" else: str_var += "★" count += 1 print(str_var) 4.一个循环,打印十行十列小星星 #循环100和星星 i = 1 while i <= 100: #1.打印小星星 print("★",end='') #2.打印换行 if i % 10 == 0: print() i += 1 5.一个循环 打印十行十列隔列变色小星星 #方法一 i = 0 while i < 100: if i % 2 == 0: print("☆",end="") else: print("★",end='') if i % 10 == 9: print() i += 1 #方法二 _str_var = "" count = 1 while count <= 100: if count % 2 == 0: _str_var += "☆" else: _str_var += "★" if count % 10 == 0: _str_var +="n" count += 1 print(_str_var) 6.一个循环 打印十行十列隔行变色小星星 i = 0 while i < 100: #打印星星 if i // 10 %2 == 0: print("☆",end="") if i % 10 == 9: print() i += 1 (2)pass break continue1.pass 过 (当不能直接在代码块中写上具体代码时,先用pass占位;) num = 10 if num == 10: pass i = 0 while i<10: pass i+=1 2.break 终止当前循环,只能用在循环当中 # 打印1~10,遇到5就终止循环 # 单循环 (终止当前循环) i = 1 while i<=10: if i == 5: break print(i) i+=1 多循环 (终止当前循环) i = 0 while i<3: j = 0 while j<3: if j ==2: break print(i,j) j+=1 i+=1 # 不能再循环外使用break """ if 5==5: print(111) break """ 3.continue 跳过当前循环,从下一次开始,只能用在循环当中 打印1 ~ 10 不包括5 i = 1 while i<=10: if i == 5: # 手动加1,防止跳过下面代码,忽略自增形成死循环; i+=1 continue print(i) i+=1 打印1~100 所有不含有4的数字; """ // 地板除可以取一个数的高位 % 取余 可以取一个数的低位 任意数 // n 会产生n个相同的数字 任意数 % n 取值范围是0~(n-1) """ # 方法一 i = 1 while i<=100: if i % 10 == 4 or i // 10 == 4: # 手动自增1,防止死循环 i+=1 continue print(i) i+=1 # 方法二 in i = 1 while i<=100: strvar = str(i) if '4' in strvar: i+=1 continue print(i) i+=1 (3) 双层循环练习1.十行十列小星星 #j动1次,i动10次,外层循环动的慢.内层循环动的快 j = 0 while j<10: #打印星星 i = 0 while i < 10: print("*",end='') i += 1 # 打印换行 print() j += 1 2 双层 十行十列隔列换色小星星 j = 0 while j<10: #打印一行十个星星 i = 0 while i < 10: if i % 2 == 0: print("☆",end='') else: print("★",end='') i += 1 #打印一个换行 print() j += 1 3双层 十行十列隔行换色小星星 """ 当j = 0 时,在内存循环,循环了10次 ☆ 当j = 1 时,在内层循环,循环了10次 ★ """ print("------分割线------") j = 0 while j < 10: #打印一行十个小星星 i = 0 while i < 10: if j % 2 == 0: print("★",end='') else: print("☆",end='') i += 1 #打印一个换行 print() j += 1 4.打印99乘法表 """ 外层的i控制行 里层的j控制列 当前j跟当前行数有关系,不能大于当前行 所以j <= i """ #方法一(正序 1~9) i = 1 while i <= 9: j = 1 while j <= i: #字符串的格式化 让最后的乘积占用2位,据右边显示; print("%s*%s =%2s"%(i,j,i*j),end=" ") j += 1 print() i += 1 """ '字符串'%(值1,值2,值3,......) %s 字符串占位符 res = "%s * %s = ?"% (5,6) print(res) """ # 方法二(倒序 9 ~1) i = 9 while i >= 1: #字符串的格式化 让最后的乘积占用2位,据右边显示; j = 1 while j <= i: #字符串的格式化 让最后的乘积占用2位,据右边显示; print("%d*%d=%2d"% (i,end=' ') j += 1 #打印换行 print() i -= 1 # 方法三 i = 1 while i <= 9: #(1)先打印空格 k = 9 - i while k > 0: # """打印空格""" print(" ",end="") k -= 1 #print(" "*(9-i),end="") #(2)打印表达式 j = 1 while j <= i: print("%d*%d=%2d"% (i,end="") j += 1 #(3)打印换行 print() i +=1 print("-----分割线-----") #方法四 i = 9 while i > 0: k = 9 - i while k > 0: print(" ",end='') k -= 1 # print(" "*(9-i),end='') # (2) 打印表达式 j = 1 while j <= i: #字符串的格式化 让最后的乘积占用2位,据右边显示; print("%d*%d = %2d"% (i,end=' ') j += 1 #打印换行 print() i -= 1 5 求吉利数字100 ~ 999 666 888 111 222 333 444 ... 123 789 567 987 321 543 210 """ // 地板除可以获取一个数的高位 % 取余 可以获取一个数的低位 98 98 % 10 => 8 98 98 // 10 => 9 678 个位 = 678 % 10 => 8 十位 = 678 // 10 %10 => 7 百位 = 678 // 100 => 6 """ #方法一 i = 100 while i <= 999: gewei = i % 10 shiwei = i // 10 % 10 baiwei = i // 100 #gewei = shiwei = baiwei 三者相同 if shiwei == gewei and shiwei ==baiwei: print(i) #678 if shiwei == gewei -1 and shiwei == baiwei + 1: print(i) #876 if shiwei == gewei + 1 and shiwei == baiwei - 1: print(i) i += 1 #方法二 字符串形式写 print("-----分割线-------") i = 100 while i<= 999: num = str(i) #"987" geiwei = int(num[-1]) #7 shiwei = int(num[1]) #8 baiwei = int(num[0]) #9 if shiwei == gewei and shiwei == baiwei: print(i) if shiwei == gewei - 1 and shiwei == baiwei + 1: print(i) if shiwei == gewei + 1 and shiwei == baiwei - 1: print(i) i += 1 经典题: 百钱买百鸡""" 公鸡,母鸡,小鸡,公鸡1块钱一只,母鸡3块钱一只,小鸡是5毛钱一只,问100块钱买100只鸡,有多少种买法 穷举法: 一个一个拿出来试 x [1,2] y [3,4] z [5,6] 满足 x+y+z = 10 1 + 3 + 5 = 9 1 + 3 + 6 = 10 ok 1 + 4 + 5 = 10 ok 1 + 4 + 6 = 11 2 + 3 + 5 = 10 ok 2 + 3 + 6 = 11 2 + 4 + 5 = 11 2 + 4 + 6 = 12 """ #公鸡x只,母鸡y只,小鸡z只 #x+y+z = 100 #一百只鸡 #x+3+y*1+0.5*z = 100 #两个条件同时满足 x = 0 total = 0 while x<=100: y = 0 while y<= 33: z = 0 while z <= 100: if(x+y+z == 100) and (x+3*y+0.5*z == 100): total += 1 z += 1 y += 1 x += 1 print(total) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |