Python入门-分支循环结构
编写代码的过程中,除了基本的变量,数据类型,在实际开发中,大量代码是根据判断条件,进而选择不同的的向前运行方式。
这些向前的运行方式基本分为两种:分支结构,循环结构
1.分支结构
if单分支结构
# if单分支结构,代码格式如下: if <条件>: <语句块> # 使用多个if判断,只要满足条件会一直执行下去 name = "tom" age = 22 if age >18: print("你已经长大了") if name == "tom": print("你是tom") """ 你已经长大了 你是tom """ # 使用if做多条件判断,尽量只做是否的判断,减少逻辑错误 age = 22 if age < 18: print("你还是个孩子") if age > 18: print("你已经长大了") """ 你已经长大了 """
if-else双分支结构
#多分支可以实现更多判断, 对比if单分支判断,双分支逻辑更为清晰。只需要判断一个条件,根据这个条件来决定执行的语句块,成立执行语句块1,不成立执行语句块2。
# 代码格式如下 if <条件>: <语句块1> else: <语句块2> age = 22 if age <18: print("你还是未成年人") else: print("你已经长大了") """ 你已经长大了 """
if-elif-else多分支结构
# 多分支结构是,根据不同条件来选择语句块运行的一种分支结构 #代码格式如下: if <条件1>: <语句块1> elif <条件2>: <语句块2> ...... else: <语句块n> #多分支结构需要判断多个条件,根据判断当前条件是否成立,决定是否执行当前语句块 """ 1.当满足当前条件时,执行当前条件后结束代码 2.当前条件不满足时,进行下一条判断,如果下一条条件依然不满足,依次往下执行判断 3.当所有条件都不成立时,执行else的语句块。 """ # 成绩分数判断代码演示 num = 77 if num == 100: print("恭喜你获得满分") elif 80 <= num <100: print("这是优秀成绩") elif 60 <= num <80: print("恭喜你及格了,继续努力") else: print("成绩没及格哦,要加油") # 简单的猜数字游戏 input_num = int(input("1-10得范围,请输入你猜的数字:")) #第一:判断是否输入的是数字 if input_num.isdigit(): res_num = int(input_num) # 把输入的字符串转换为数字 #eval_num = eval(input("请输入数字:")) 此方法也可以转换为整型 # 第二:判断数字是否在输入范围内 if res_num <10: #第三:当数字在范围内,进行逻辑判断 if res_num > 5: print("数字大了") elif res_num < 5: print("数字小了") else: print("恭喜你,猜对了") else: print("你输入的数字太大了,只能1-10范围内") else: print("你输入的不是数字呀")
小提示: 当判断结构过于复杂时,可以先写简单的外层判断,外层写完了再继续内部判断
小提示: 在分支结构中,优先把可能遇到的判断情况,写在代码前面,可以节省性能。
2.循环结构
循环结构用于,在特定条件下,重复执行一些程序块。
从上面的分支结构,我们已经看到了如何用缩进来表示程序块的隶属关系,循环结构也会用到类似的写法。
while循环
# 代码演示:100以内数字求和 num = 1 sum_num = 0 while num <= 100: sum_num += num # 累加求和 num += 1 # 修改循环结束条件 print(sum_num) # 注意:防止结束条件错误,导致死循环
while-else循环
num = 1 sum_num = 0 while num <= 100: sum_num += num num += 1 else: print(sum_num) print("代码结束了。")
# while循环的使用-斐波那契数列 a = 0 b = 1 while a < 1000: # 循环结束条件 print(a, end = ",") a, b = b, a + b # 利用变量的赋值操作,进行累加 #结果:0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987
for循环
# for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次。 #代码结构: for 元素 in 序列: statement # 代码演示 for i in [1,2,3]: print(i) """ 1 2 3 """ # 为了解决循环次数的问题,常使用range()函数, range(开始,结束),结束位置取不到,只能取到【结束-1】的值。 for i in range(10): print(i) """ 0 1 2 3 4 5 6 7 8 9 """ # 100以内的数字相加求和 s = 0 for i in range(101): # 因为取不到101,只能取到100 s += i print("计算结果为:",s) # 计算结果为: 5050
3.循环控制语句
循环过程中,语句如果临时需要中断,跳过等操作,就需要循环控制语句
break停止循环
# 找到5,就停止循环, for循环演示 for i in range(10): print(i, end = ",") if i == 5: break """ 0,1,2,3,4,5, """ # 找到5,就停止循环,while循环演示 a = 1 while a < 10: print(a, end = "-") if a == 5: break a += 1 """ 1-2-3-4-5- """
continue跳过本次循环
# 找到5,就跳过本次循环, for循环演示 for i in range(10): if i == 5: continue print(i, end = ",") """ 结果中没有5,其他都有:0,1,2,3,4,6,7,8,9, """ # 找到5,就跳过本次循环,while循环演示 a = 0 while a < 10: a += 1 if a == 5: continue print(a, end ="-") """ 结果中没有5,其他都有:1-2-3-4-6-7-8-9-10- """
pass占位
#对于代码块而言,pass相当于是一个占位符,为了让当前的代码正常执行,可以使用pass语句,为了保证程序结构的完整性 if True: pass while True: pass
4.嵌套循环
项目一:打印九九乘法表
# 找规律:乘法表规律为:列X行=结果,一共9行,行列相等。 for i in range(1, 10): # 定义九行 for j in range(1, i+1): # 定义列数 print("{}*{}={}".format(j, i, j*i), 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 """ # 输出三角形的代码演示 # 规律:随着行数的增加,空格减少,星号增加 line = 7 for i in range(0, line): for x in range(line -i): # 空格减少 print("", end = " ") for y in range(0, i + 1): # 星号增加 print("*", end = " ") print() """ * * * * * * * * * * * * * * * * * * * * * * * * * * * * """
项目二:模拟猜数字游戏
#嵌套循环演示:模拟猜数字的游戏 """ 计算机随机出一个1~100之间的随机数由人来猜 计算机根据人猜的数字分别给出 大一点/小一点/猜中了 的提示 """ import random #获取随机数 num1 = random.choice(range(1,101)) #80 #定义一个变量,用于记录猜的次数 counter = 0 while True: counter += 1 # 引导用户输入数字 num2 = int(input("请输入1~100之间的数字")) #50 if 1<= num2 <=100: if num1 > num2: print("大一点") elif num1 < num2: print("小一点") else: print("猜中了") #结束游戏【跳出循环】 break else: print("输入的范围有误,正确的范围应该为1~100") print("你总共猜了%d次" % (counter)) if counter > 7: print("你的智商余额不足,请充值")