开发者

Python全栈之单项循环

开发者 https://www.devze.com 2022-12-05 13:59 出处:网络 作者: 熬夜泡枸杞
目录1. 多项_巢状分支2. 循环结构2.1 循环结构2.2 单项循环的练习3. 字符串的切片4. 小练习问题:答案:总结1. 多项_巢状分支
目录
  • 1. 多项_巢状分支
  • 2. 循环结构
    • 2.1 循环结构
    • 2.2 单项循环的练习
  • 3. 字符串的切片
    • 4. 小练习
      • 问题:
      • 答案:
    • 总结

      1. 多项_巢状分支

      多项分支 (多选一)

      """
      if 条件表达式1:
      	code1 
      elif 条件表达式2:
      	code2
      elif 条件表达式3:
      	code3
      else:
      	`code4
      如果条件表达式1成立,执行对应的分支code1,反之判断条件表达式2是否成立
      如果条件表达式2成立,执行对应的分支code2,反之判断条件表达式3是否成立
      如果条件表达式3成立,执行对应的分支code3,如果不成立,直接走else分支,到此程序执行www.cppcns.com完毕
      elif 可以是0个 或者 多个
      else 可以是0个 或者 一个
      """
      youqian = False
      youfang = False
      youche = False
      if youqian == True:
      	print("说明这个人很有实力")
      elif youfang == True:
      	print("能交给朋友么")
      elif youche == True:
      	print("开了雅迪艾玛调动车,我们碰一碰吧")	
      else:
      	print("你还是去做美团骑手吧")
      print("<=======================>")
      # ### 巢状分支
      """单项分支,双向分支,多项分支的互相嵌套组合"""
      youqian = True
      youfang = True
      youche = True
      youyanzhi = True
      youtili = False
      if youqian == True:
      	if youfang == True:
      		if youche == True:
      			if youyanzhi == True:
      				if youtili == True:
      					print("我要嫁给你~")
      				else:
      					print("你去吃点大腰子再来~")
      			else:	
      				print("你去一下泰国+韩国,整整容")
      else:
      	print("你是个好人呐~")
      	
      print("<=======================>")
      #出题 height
      #女生找对象
      	# 男生在1米~1.5米之间 小强 你在哪里?
      	# 男生在1.5~1.7米之间 没有安全感~
      	# 男生 1.7~ 1.8米之间 帅哥 留个电话
      	# 男生 1.8~2米之间 帅哥 你建议多一个女朋友吗
      # python特有(注意:因为input接受的数都是字符串,又因为我们会输入小数,所以这里只能用float)
      """
      height = float(in编程客栈put("请输入您的身高:"))
      if 1 <= height < 1.5:
      	print("小强 你在哪里?")
      elif 1.5 <= height < 1.7:
      	print("没有安全感~")
      elif 1.7 <= height < 1.8:
      	print("帅哥 留个电话")
      elif 1.8 <= height < 2:
      	print("你建议多一个女朋友吗")
      else:
      	print("抱歉,没有合适的选项")
      """
      # 通用写法
      height = float(input("请输入您的身高:"))
      if 1 <= height and height < 1.5:
      	print("小强 你在哪里?")
      elif 1.5 <= height and height < 1.7:
      	print("没有安全感~")
      elif 1.7 <= height and height < 1.8:
      	print("帅哥 留个电话")
      elif 1.8 <= height and height < 2:
      	print("你建议多一个女朋友吗")
      else:
      	print("抱歉,没有合适的选项")
      """
      tab 向右缩进
      shift + tab 向左缩进
      """
      

      2. 循环结构

      2.1 循环结构

      """特点:减少冗余代码,提升执行效率"""
      """
      语法:
      while 条件表达式:
      	code1
      (1) 初始化一个变量
      (2) 写上循环的条件
      (3) 自增自减的值
      """
      # ### 打印1 ~ 100
      # (1) 初始化一个变量
      i = 1
      # (2) 写上循环的条件
      while i <= 100:
      	# (4) 写上循环的逻辑
      	print(i)
      	# (3) 自增自减的值
      	i += 1 # i = i + 1
      """
      代码解析:
      第一次循环
      i = 1  i<=100 判断为真,执行循环体 print(1)
      i += 1 i => 2 
      第二次循环
      代码回到17行,重新进行条件判定 
      i = 2  i<=100 判断为真,执行循环体 print(2)
      i += 1 i => 3
      第三次循环
      代码回到17行,重新进行条件判定 
      i = 3  i<=100 判断为真,执行循环体 print(3)
      i += 1 i => 4
      ....
      以此类推 
      直到i = 101  i <= 100 判断为假,不执行循环体,到此循环结束...
      1 ~ 100
      """
      # ### 1 ~ 100的累加和
      # (1) 初始化一个变量
      i = 1
      total = 0
      # (2) 写上循环的条件
      while i <= 100 :
      	# (4) 写上自定义的逻辑
      	total += i
      	# (3) 自增自减的值
      	i += 1
      print(total)
      """
      代码解析:
      第一次循环
      i = 1 i <= 100 判定为真True 执行循环体 total += i => total = total + i => 0 + 1
      i += 1  => i = 2
      第二次循环
      i = 2 i <= 100 判定为真True 执行循环体 total += i => total = total + i => 0 + 1 + 2
      i += 1  => i = 3
      第三次循环
      i = 3 i <= 100 判定为真True 执行循环体 total += i => total = total + i => 0 + 1 + 2 + 3 
      i += 1  => i = 4
      ...
      依次类推
      当i = 101 101 <= 100 判定为假False 不执行循环体,到此,循环结束..
      total += i => total + i => 0 + 1 + 2 + 3 + 4 + .... + 100 => 5050
      """
      
      # 死循环
      """
      while True:
      	print(1)
      """
      
      # ### 用死循环的方法实现 1 ~ 100累加和
      i = 1
      total = 0
      sign = True
      while sign:
      	total += i
      	i+=1
      	# 判断i是否加到了101 , 不参与循环
      	if i == 101:
      		# 终止循环
      		sign = False
      print(total) #1 ~ 100 = 5050
      

      2.2 单项循环的练习

      # (1)打印 一行十个小星星* help(print)
      # help 查看某个方法的文档
      help(print)
      """
      # print("*",end='')
      # print("*",end='')
      # print("*",end='')
      # print("*",end='')
      # print("*",end='')
      # print("*",end='')
      # www.cppcns.comprint("*",end='')
      # print("*",end='')
      # print("*",end='')
      # print("*",end='')
      """
      i = 0
      while i<10:	
      	# end='' 打印时,尾部默认不加换行
      	print("*",end='')	
      	i += 1
      # 默认换行
      # print()
      # (2)通过打印一个变量的形式,展现一行十个小星星
      print("<======>")
      i = 0
      strvar = ""
      while i < 10:
      	# 写上循环的逻辑
      	strvar += "*" # strvar = strvar + "*"
      	i +=1
      print(strvar)
      """
      strvar += "*" => strvar = "*"
      strvar += "*" => strvar = "*" + "*"  = "**"
      strvar += "*" => strvar = "**" + "*" = "***"
      ...
      strvar += "*" => strvar = "********" + "*" = "*********"
      """
      # (3)一行十个换色的星星 ★☆★☆★☆★☆★☆
      """
      # 方法一
      i = 0
      while i < 5:
      	print("★☆",end="")
      	i+=1
      """
      # 方法二
      i = 0
      while i < 10:
      	if i % 2 == 0 :
      		print("★",end="")
      	else:
      		print("☆",end="")
      	i+=1
      print("<=============>")
      # 方法三
      i = 0
      strvar = ""
      while i < 10:
      	if i % 2 == 0 :
      		strvar += "★"
      	else:
      		strvar += "☆"
      	i+=1
      print(strvar)
      """
      ***公式: 任意数 和 n 进行取余,余数的范围: 0 ~ (n-1)***
      0 % 2 = 0
      1 % 2 = 1
      2 % 2 = 0
      3 % 2 = 1
      被除数 % 2 => 0 或者 1
      0 % 5 = 0 
      1 % 5 = 1
      2 % 5 = 2
      3 % 5 = 3
      4 % 5 = 4
      5 % 5 = 0 
      6 % 5 = 1
      7 % 5 = 2
      被除数 % 5 => 0 或者 1,2,3,4
      """
      # (4)用一个循环,打印十行十列小星星
      """
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      ★★★★★★★★★★
      """
      # 方法一
      i = 0 
      while i < 100:
      	# 逻辑写在这里
      	print("*" , end="")
      	# 打印换行 (在9 19 29 .. 99 )
      	if i % 10 == 9:
      		print()
      	i += 1 
      
      """
      0123456789
      **********
      10111213141516171819
      **********
      20212223242526272829
      **********
      ...
      90919293949596979899
      **********
      9 19 29 39 49 59 69 79 89 99
      9 % 10  = 9
      19 % 10 = 9
      29 % 10 = 9
      ...
      99 % 10 = 9
      """
      
      print("<======>")
      # 方法二
      i = 1
      while i <= 100:
      	# 逻辑写在这里
      	print("*" , end="")
      	# 打印换行 (在9 19 29 .. 99 )
      	if i %http://www.cppcns.com 10 == 0:
      		print()
      	i += 1 
      """
      12345678910
      **********
      11121314151617181920
      **********
      21222324252627282930
      **********
      ...
      919293949596979899100
      **********
      10 20 30 ... 100
      """
      # (5) 一个循环实现十行十列,格列换色的小星星
      """
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      ★☆★☆★☆★☆★☆
      """
      i = 0 
      while i < 100:
      	# (1)打印星星
      	if i % 2 == 0 :
      		print("★",end="")
      	else:
      		print("☆",end="")
      	# (2)打印换行 (在9 19 29 .. 99 )
      	if i % 10 == 9:
      		print()
      	i += 1http://www.cppcns.com 
      # (6)一个循环实现十行十列,隔行换色的小星星
      """
      ★★★★★★★★★★
      ☆☆☆☆☆☆☆☆☆☆
      ★★★★★★★★★★
      ☆☆☆☆☆☆☆☆☆☆
      ★★★★★★★★★★
      ☆☆☆☆☆☆☆☆☆☆
      ★★★★★★★★★★
      ☆☆☆☆☆☆☆☆☆☆
      ★★★★★★★★★★
      ☆☆☆☆☆☆☆☆☆☆
      *** 公式:任意数和n进行地板除,会出现n个相同的数
      0 // 10 = 0
      1 // 10 = 0
      2 // 10 = 0
      ..
      9 // 10 = 0
      0 ~ 9 // 10 => 0 (10个相同的0)
      10 // 10 = 1
      11 // 10 = 1
      12 // 10 = 1
      ...
      19 // 10 = 1
      10 ~ 19 // 10 => 1 (10个相同的1)
      .... 以此类推
      20 ~ 29 // 10 => 2 (10个相同的2)
      30 ~ 39 // 10 => 3 (10个相同的3)
      40 ~ 49 // 10 => 4 (10个相同的4)
      ...
      90 ~ 99 // 10 => 9 (10个相同的9)
      0~ 100 会出现10个相同的0,1,2 , 3 ... 9 
      0 // 3 0
      1 // 3 0
      2 // 3 0
      3 // 3 1
      4 // 3 1
      5 // 3 1 
      """
      """"""
      # 方法一
      i = 0 
      while i < 100:
      	# (1)打印星星
      	if i // 10 % 2 == 0:
      		print("★",end="")
      	else:
      		print("☆",end="")
      	# (2)打印换行 (在9 19 29 .. 99 )
      	if i % 10 == 9:
      		print()
      	i += 1 
      # 方法二
      print("<=================>")
      i = 10
      while i < 110:
      	# 打印星星 
      	num = int(str(i)[-2])
      	if num % 2 == 0 :
      		print("★",end="")
      	else:
      		print("☆",end="")
      	# 打印换行
      	if i % 10 == 9:
      		print()
      	i+=1
      """
      10 ~ 100 101 102 103 110...
      10 ~ 19 => 1
      20 ~ 29 => 2
      30 ~ 39 => 3
      90 ~ 99 => 9
      100 ~ 109 => 0
      """
      

      3. 字符串的切片

      字符串相关操作

      # (1)字符串的拼接 +
      str1 = "赵沈阳,"
      str2 = "so strong"
      res = str1 + str2
      res = "赵沈阳," + "so strong"
      print(res)
      # res = res + ",旁边的同学很喜欢他~"
      res += ",旁边的同学很喜欢他~"
      print(res)
      # (2)字符串的重复 *
      strvar = "重要的事情说三遍~"
      res = strvar * 3
      print(res)
      # (3)字符串跨行拼接 \
      str1 = "kskfjskjfklsjfklasdjklfjaskldjfaskljfklasjdfklasjdklfjaskldfjaskldjflasjfsf" \
      "1122334"
      print(str1)
      # (4)字符串的索引
      #          0 1 2 3 4 5
      strvar = "赵世超真帅呀"
      #         -6-5-4-3-2-1
      print(strvar[1])
      # (5)字符串的切片: (截取)
      """
      语法 => 字符串[::]  完整格式:[开始索引:结束索引:间隔值]
      	(1)[开始索引:]  从开始索引截取到字符串的最后
      	(2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
      	(3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
      	(4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
      	(5)[:]或[::]  截取所有字符串
      """
      strvar = "王文是这个宇宙当中,最完美,无暇,善良,漂亮,英俊,帅气,潇洒,风流倜傥的神秘男孩"
      # (1)[开始索引:]  从开始索引截取到字符串的最后
      res = strvar[3:]
      print(res)
      # (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
      """4这个最大值本身获取不到,要获取到4之前的那一个数据 : 取头舍尾"""
      res = strvar[:5]
      print(res)
      # (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
      res = strvar[10:16]
      print(res)
      # (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
      # 从左向右截取
      res = strvar[::3]
      # 0 3 6 9 12 15 ... 
      print(res)
      # 从右向左截取
      res = strvar[::-1]
      # -1 -2 -3 -4 -5 -6 .... 
      print(res)
      res = strvar[-3:-10:-2]
      # -3 -5 -7 -9   秘的倜风
      print(res)
      print("<====>")
      """从左到右截,间隔值为正值,反过来,间隔值是负值,才能保证截取到数据"""
      """
      res = strvar[-3:-10:10] # 错误的逻辑
      print(res)
      res = strvar[1:10]
      print(res)
      """
      

      4. 小练习

      问题:

      1.猜大小的游戏:
      设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。
      2.输出 1-100 内的所有奇数
      3.输出 1-100 内的所有偶数
      4.用户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)
      5.写代码,有如下字符串利用切片实现每一个功能
      strvar = "132a4b5c"
      1)对字符串进行切片形成新的字符串 "132"
      2)对字符串进行切片形成新的字符串 "a4b"
      3)对字符串进行切片形成新的字符串 "1245"
      4)对字符串进行切片形成新的字符串 "3ab"
      5)对字符串进行切片形成新的字符串 "c"
      6)对字符串进行切片形成新的字符串 "ba3"
      6.国际棋盘效果
      

      答案:

      # 1.猜大小的游戏:
      # 设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。
      """
      num = 66
      str_num = input("请输入理想的数字")
      num_new = int(str_num)
      if num_new > num:
      	print("猜测的结果大了")
      elif num_new == num:
      	print("显示猜测结果正确")
      elif num_new < 66:
      	print("则显示猜测的结果小了")
      """
      
      # 2.输出 1-100 内的所有奇数
      """
      i = 1
      while i <= 100:
      	if i % 2 == 1:
      		print(i)
      	i +=1
      """
      # 3.输出 1-100 内的所有偶数
      """
      i = 1
      while i <= 100:
      	if i % 2 == 0:
      		print(i)
      	i +=1
      """
      # 4.用户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)
      """
      times = 1
      while times <= 3:
      	pwd = input("请输入您的密码:")
      	if pwd == "111":
      		print("恭喜你登录成功~")
      		break
      	# 剩余次数 = 总次数 - 已经使用的次数
      	print("你剩余的输入次数是%d" % (3 - times))	
      	times +=1
      """
      """
      sign = True
      times = 1
      while sign:
      	pwd = input("请输入您的密码:")
      	if pwd == "111":
      		print("恭喜你登录成功~")
      		sign = False
      	else:
      		# 剩余次数 = 总次数 - 已经使用的次数
      		print("你剩余的输入次数是%d" % (3 - times))
      	# 如果次数已经是3次了,强制终止循环;
      	if times == 3:
      		print("你已经没有机会了... ")
      		sign = False	
      	times +=1
      """
      # 5.写代码,有如下字符串利用切片实现每一个功能
      strvar = "132a4b5c"
      # 1)对字符串进行切片形成新的字符串 "132"
      print(strvar[0:3])
      # 2)对字符串进行切片形成新的字符串 "a4b"
      print(strvar[3:6])
      # 3)对字符串进行切片形成新的字符串 "1245"
      print(strvar[::2])
      # 4)对字符串进行切片形成新的字符串 "3ab"
      print(strvar[1:6:2])
      # 5)对字符串进行切片形成新的字符串 "c"
      print(strvar[-1:])
      # 6)对字符串进行切片形成新的字符串 "ba3"
      print(strvar[-3::-2]) # -3 -5 -7 
      # 6.国际棋盘效果
      # 方法一
      j = 0
      while j < 8:	
      	# □■□■□■□■
      	if j % 2 == 0:
      		print("□■□■□■□■",end="")			
      	# ■□■□■□■□
      	else:
      		print("■□■□■□■□",end="")
      	print()
      	j +=1
      """
      # □■□■□■□■
      i = 0		
      while i < 8:
      	if i % 2 == 0:
      		print("□",end="")
      	else:
      		print("■",end="")
      	i +=1 
      # ■□■□■□■□
      i = 0		
      while i < 8:
      	if i % 2 == 0:
      		print("■",end="")				
      	else:
      		print("□",end="")
      	i +=1 
      """
      print("<=====>")
      j = 0
      while j < 8:	
      	# □■□■□■□■
      	if j % 2 == 0:
      		i = 0		
      		while i < 8:
      			if i % 2 == 0:
      				print("□",end="")
      			else:
      				print("■",end="")
      			i +=1 		
      	# ■□■□■□■□
      	else:
      		i = 0		
      		while i < 8:
      			if i % 2 == 0:
      				print("■",end="")				
      			else:
      				print("□",end="")
      			i +=1 
      	print()
      	j +=1
      
      # 方法二
      """
      □■□■□■□■
      ■□■□■□■□
      □■□■□■□■
      ■□■□■□■□
      □■□■□■□■
      ■□■□■□■□
      □■□■□■□■
      ■□■□■□■□
      """
      print("<=====>")
      i = 0
      while i < 64:
      	# 判断当前是奇数行还是偶数行
      	if i // 8 % 2 == 0:
      		# □■□■□■□■
      		if i % 2 == 0:
      			print("□",end="")
      		else:
      			print("■",end="")
      	else:
      		# ■□■□■□■□
      		if i % 2 == 0:
      			print("■",end="")			
      		else:
      			print("□",end="")
      	# 第八个方块换行
      	if i % 8 == 7:
      		print()		
      	i +=1
      print("<=====>")
      # 方法三
      i = 0
      while i < 4:
      	strvar = ""
      	j = 0
      	# 打印黑白相间的小方块
      	while j < 8:
      		if j % 2 == 0:
      			strvar += "□"
      		else:
      			strvar += "■"
      		j +=1
      	# 正向打印
      	print(strvar)
      	# 逆向打印
      	print(strvar[::-1])
      	i +=1
      

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号