程序逻辑
程序逻辑是编程语言中的重要组成部分,一般来说程序的结构包含有三种:
顺序结构、选择结构、循环结构。
分支结构
在Python中可以通过if、else、elif关键字实现分支处理
使用if分支语句
# coding:UTF-8 age = 20 ; if 18 < age <= 22: # 分支语句 print("我是个大学生,拥有无穷的拼搏与探索精神!") # 利用缩进定义分支结构 print("开始为自己的梦想不断努力拼搏!")
使用if…else分支语句
# coding:UTF-8 chePiao = 1 # ⽤1代表有⻋票,0代表没有⻋票 if chePiao == 1: print("有⻋票,可以上⽕⻋") print("终于可以⻅到Ta了,美滋滋~~~") else: print("没有⻋票,不能上⻋") print("亲爱的,那就下次⻅了,⼀票难求啊~~~~(>_<)~~~~")
使用if…else多条件判断
- 当xxx1满⾜时,执⾏事情1,然后整个if结束
- 当xxx1不满⾜时,那么判断xxx2,如果xxx2满⾜,则执⾏事情2,然后整个if结束
- 当xxx1不满⾜时,xxx2也不满⾜,如果xxx3满⾜,则执⾏事情3,然后整个if结束
# coding:UTF-8 score = 90.00; # 考试成绩 # score = float(input("输入成绩:")) # 键盘输入考试成绩 if 90.00 <= score <= 100.00: # 判断条件1 print("优等生!") elif 60.00 <= score < 90.00: # 判断条件2 print("良等生!") else: # 条件不满足时执行 print("差等生。")
注意:和else⼀起使⽤
当 “性别为男性” 不满⾜,“性别为⼥性”也不满⾜,那么默认执⾏else后⾯的代码,即 “第三种性别的特征”相关代码
elif必须和if⼀起使⽤,否则出错
if嵌套
chePiao = 1 # ⽤1代表有⻋票,0代表没有⻋票 daoLenght = 9 # ⼑⼦的⻓度,单位为cm if chePiao == 1: print("有⻋票,可以进站") if daoLenght < 10: print("通过安检") print("终于可以⻅到Ta了,美滋滋~~~") else: print("没有通过安检") print("⼑⼦的⻓度超过规定,等待警察处理...") else: print("没有⻋票,不能进站") print("亲爱的,那就下次⻅了,⼀票难求啊~~~~(>_<)~~~~")
断言-assert
在Python语言中提供有assert关键字以实现断言,利用此机制就可以在程序开发过程中清楚的知道那个地方可能产生错误的执行结果。
# coding:UTF-8 age = 18 # 假设中间要经历过若干次的age变量内容修改操作 assert 18 < age < 50 , "age变量内容处理错误!" # 程序断言,看是否满足判断条件 print("您的年龄是:%d" % age)
😀应用:猜拳游戏
- 第一版:
# coding:UTF-8 import random player_str = input('输入你的选择,石头/1 剪刀/2 布/3\n') player = int(player_str) computer = random.randint(1, 3) # 逗号后加空格,虽然不影响结果 print('因为电脑输出了', computer) # 没有字符串自动强类型转换,不能拼接 print('-----------') if player - computer == -1 or player - computer == 2: print('你赢了') elif computer - player == -1 or computer - player == 2: print('电脑赢了') else: print('平局') print('-----------')
- 第二版:
# coding:UTF-8 import random class caiquan(): print('欢迎来到猜拳游戏') print('进入游戏--8') print('退出游戏--9') b = input("请输入:") print("你的选择是: ", b) print("\n") while b == '8': print('请进行猜拳:') print('石头--0') print('布--1') print('剪刀--2') print('退出游戏--9') print('-------------') # 如果输入的数不是0,1,2;可以设置为重新输入,或者设置为失败 a = random.randint(0, 2) b = int(input("你选择的是:")) # 整型, print("电脑选择的是:", a) print("-------------") if (a == 0 and b == 1) or (a == 1 and b == 2) or (a == 2and b == 0): print("你赢了!\n") elif a == b: print("平局!\n") else: print("你输了!\n") print('-------------') print('继续游戏--8') print('退出游戏--9') b = input("请重新选择:") print("你的选择是: ", b + "\n") if __name__ == "__main__": caiquan() print('游戏结束!') pass
循环结构
while循环结构
利用while语句实现循环条件的判断,当判断条件满足时则执行循环体的内容,有两种语法形式:
范例:使用while循环实现1 ~ 100的数字累加
# coding:UTF-8 sum = 0 # 保存累加计算结果 num = 1 # 循环初始化条件 while num <= 100: # 循环判断 sum += num # 数据累加 num += 1 # 修改循环条件 print(sum) # 输出最终计算结果
范例:使用while…else实现1 ~ 100数字累加
# coding:UTF-8 sum = 0 # 保存累加计算结果 num = 1 # 循环初始化条件 while num <= 100: # 循环判断 sum += num # 数据累加 num += 1 # 修改循环条件 else: # 循环执行完毕后执行此语句 print(sum) # 输出最终计算结果 print("计算完毕 ...")
范例:输出一个斐波那契数列(在1000以内的数值)
即著名的兔子数列,基本结构为:“1、1、2、3、5、8、13、21、34、55、…”,特点在于从数列的第三项开始,每个数的值为其前两个数之和
# coding:UTF-8 num_a = 0 # 定义初始化输出值 num_b = 1 # 定义初始化输出值 while num_b < 1000: # 输出内容不超过1000 print(num_b, end="、") # 输出数据 num_a, num_b = num_b, num_a + num_b # 数据计算 ----------------------------------- 1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987、 >>>
for循环结构
在明确已知循环次数或者要进行序列数据(字符串就属于一种序列类型)遍历的情况下,可以利用for循环结构来实现循环控制,在Python中for循环结构有两种使用形式:
范例:使用for循环
# coding:UTF-8 for num in {1,2,3}: # 定义要输出的数据范围 print(num, end="、") # 输出每次获取的数据
范例:使用for循环实现1 ~ 100数据累加
# coding:UTF-8 sum = 0 # 定义变量保存计算总和 # 生成的最大数据为100,范围:0 - 100 for num in range(101): # 遍历100次 sum += num # 数据累加 print(sum) # 输出累加结果
范例:使用for…else循环实现1 ~ 100数据累加
# coding:UTF-8 sum = 0 # 定义变量保存计算总和 # 生成的最大数据为100,范围:0 - 100 for num in range(101): # 遍历100次 sum += num # 数据累加 else: print(sum) # 输出累加结果 print("计算结束。")
范例:迭代字符串
# coding:UTF-8 msg = "www.yootk.com" # 定义字符串变量 for item in msg: # 字符串遍历 if 97 <= ord(item) <= 122: # 97-122范围的编码为小写字母 upper_num = ord(item) - 32 # 小写字母编码转大写字母编码 print(chr(upper_num) , end="、") # 将编码值转为字符 else: # 不是小写字母编码,不处理 print(item, end="、") # 信息输出
循环控制语句
在循环结构中只要循环条件满足,循环体的代码就会一直执行,但是在程序之中也提供有两个循环停止的控制语句:continue(退出本次循环)、break(退出整个循环)
范例:使用continue控制循环
# coding:UTF-8 for num in range(1, 10): # 10次循环操作 if num == 3: # continue需要结合if分支使用 continue # 退出单次循环 print(num, end="、") # 内容输出
范例:使用break控制循环
# coding:UTF-8 for num in range(1, 10): # 10次循环操作 if num == 3: # break需要结合if分支使用 break # 退出整个循环 print(num, end="、") # 内容输出
循环嵌套
循环结构可以在内部嵌入若干个子的循环结构,这样可以实现更加复杂的循环控制结构,但是需要注意的是,这类循环结构有可能会导致程序复杂度的提升
范例:打印乘法口诀表
# coding:UTF-8 for x in range(1, 10): # 外层循环,范围1 - 9 for y in range(1, x + 1): # 内层循环,通过外层循环控制次数 print("%d * %d = %d" % (y, x, x * y), end="\t") # 输出计算结果 print() # 换行
范例:打印三角形
# coding:UTF-8 line = 5 # 打印的总行数 for x in range(0, line): # 外层循环控制输出行 for z in range(0, line - x): # 随着行的增加,输出的空格数减少 print("", end=" "); # 信息输出 for y in range(0, x + 1): # 随着行的增加,输出的“*”增多 print("*", end=" ") # 信息输出 print() # 换行
范例:通过Python特点实现代码改进
# coding:UTF-8 line = 5 # 总共打印的行数 for x in range(0, line): # 循环控制输出行 print(" " * (line - x),end=" ") # 空格输出 print("* " * (x + 1)) # “*”号输出