三大结构:
-顺序-
-分支-
-循环-
-分支-:
1.分支的基本语法
1.if 条件表达式:
2.语句1
3.语句2 等等....
2.条件表达式就是计算结果必须为布尔值的表达式
3.不同于java,python分支表达式使用了冒号来代替大括号
4.注意表达式后面出现的语句,如果属于同一级别,则必须同一距离缩进
5.条件表达式结果为True执行下面同一级别的语句块
6.关于条件表达式的运算符是比较运算符(如不知道请去找字符串+变量的文章)
7.if语句可以嵌套使用,但不推荐
8.python没有switch-case语句,乖乖用if吧
if语句例子
条件:如果age小于18岁,则打印“你还未成年,请去请示你家长”
age = 17
if age < 18:print("你还未成年,请去请示你家长")
结果如下:
你还未成年,请去请示你家长
关于if语句级别问题
age = 18 #我们可以在这里测试一下
if age < 18:print("你还未成年,请去请示你家长") #下面的句子与if为同一级别,所以不进入if的判断机制
print("这个句子不进入if判断语句中")
结果如下:
这个句子不进入if判断语句中
-双向分支-:
if..else..语句
语法:
if 条件表达式:
语句1
语句2
else:
语句1
语句2
双向分支由两个分支,当程序执行到if...else语句的时候,一定会执行其中一个,也仅仅执行一个(如果你的双向分支语句两个分支都没执行,那一定是你程序问题)
缩进问题,else和if是同一级别,其余的语句也同一个级别
双向分支例子
age = 18
if age < 18:print("你还未成年,请去请示你家长")else:print("你已经成年,需要担负成年的责任了")
结果如下:
你已经成年,需要担负成年的责任了
-多路分支-:
当双向分支已经不足以去判断很多分支的情况下,请使用多路分支
多路分支语法
if..else..语句
if 条件表达式:
语句1
语句2
elif 条件表达式:
语句1
语句2
...
else:
语句1
语句2
使用双向分支去完成多路分支的工作显得代码很繁杂,没有联动性案例如下:input():在控制台商输出括号内的字符串,接收用户在控制台上输入的内容并返回(返回的值一定是字符串类型)
案例条件:
90以上: 输出优秀
80-90:良
70-80:中
60-70:平
60以下: 输出:请补考
score = input("请输入你的成绩:")
score= int(score)#将字符串转化为整数
if score >= 90:print("优秀")if score < 90 and score >= 80:print("良")if score < 80 and score >= 70:print("中")if score < 70 and score >= 60:print("平")if score< 60:print("请补考")
结果如下:
请输入你的成绩:88良
还是刚刚的例子,这次用多路分支来实现
score = input("请再次输入你的成绩:")
score=int(score)if score >= 90: #是不是感觉清晰很多
print("优秀")elif score >= 80:print("良")elif score >= 70:print("中")elif score >= 60:print("平")else:print("请补考")
结果如下:
请再次输入你的成绩:88良
-循环语句-:
重复执行某些固定动作或者处理基本固定的事物
分类
for循环
for循环语法: (不同于java C,python的for语法跟foreache相似)
for 变量 in 序列:
语句1
语句2
....
while 循环
表示当某条件成立的时候,就循环
不知道具体循环次数,但能确定循环的成立条件的时候用while循环
while语法:
while 条件表达式:
语句1
序列=一列数字或者其他值,一般用中括号"[]"表示
例如 ['haha','hihi','wawa']
for循环案例:
案例条件:打印学生列表姓名
for name in ['zhangsan','lisi','wangwu']:print(name)
结果如下:
zhangsan
lisi
wangwu
for循环嵌套if语句使用
for name in ['zhangsan','lisi','wangwu']:if name == "wangwu":print("{0}同学犯错了,请罚站".format(name))else:print("{0}同学做的不错,奖励".format(name))
结果如下:
zhangsan同学做的不错,奖励
lisi同学做的不错,奖励
wangwu同学犯错了,请罚站
-range-:
生成一个数字序列
具体范围可以设定
在python,如果有表示数字范围的两个数,一般左边的数字为首,右边的数字为尾但是不包含
range函数在python2和python3里面右严重的区别(这里以python3为例子)
range案例
案例条件:打印1到10的数字
for i in range(1,11):print(i)
结果如下:
1
2
3
4
5
6
7
8
9
10
in 后面的变量要求是可以可迭代的内容
for i in range(1,10):
print(i)
print(type(range(1,10)))
结果如下:
1
2
3
4
5
6
7
8
9
-for-else语句-:
当for循环结束的时候,就会执行else语句(跟if有区别,前者是当for执行完才执行,后者是只执行一个)
我个人喜欢数字3 ,所以当循环到数字3时候就打印出来,其他则打印"我不喜欢这个数字",在整个循环结束之后打印“我热爱数字”这句话
for i in range(1,11):if i == 3:print("我喜欢数字{0}".format(i))else: #这里请看仔细,两个else的阶级是不一致的,一个是if的else,一个是for的else
print("我不喜欢这个数字")else:print("我热爱数字")
结果如下:
我不喜欢这个数字
我不喜欢这个数字
我喜欢数字3
我不喜欢这个数字
我不喜欢这个数字
我不喜欢这个数字
我不喜欢这个数字
我不喜欢这个数字
我不喜欢这个数字
我不喜欢这个数字
我热爱数字
关于循环的关键字:break ,contineu ,pass
break :无条件结束整个循环,简称循环猝死
continei: 无条件结束本次循环,重新进入下一轮循环
pass:表示略过,通常用于占位
for 循环中的变量表示,一般用i,k,m,n之类的(约定俗成)
如果循环变量不重要,可以用下划线(_)表示
-break-:
案例条件:在数字1到10里面寻找3,找到之后打印并且马上结束循环,可以避免过多的进程
for _ in range(1,11):if _ == 3:print("我找到了{0}".format(_))break
else:print(_) #打印到2
结果如下:
1
2我找到了3
-contineu-:
案例条件在数字1到10里面寻找所有偶数,并且打印出来
a = 1
for i in range(1,11):if i%2 == 1:continue; #直接本次循环结束,也不进行a的运算
a += 1;else:print("{0}是偶数".format(i))print("a的值为{0}".format(a)) #如果a的值大于1,则代表没有结束循环
结果如下:
2是偶数
a的值为1
4是偶数
a的值为1
6是偶数
a的值为1
8是偶数
a的值为1
10是偶数
a的值为1
有时候,能运用一些细节来缩写代码达到同样的效果
for i in range(1,11):if i%2 == 0: #直接判断是否为偶数,而不是进行筛选
print("{0}是偶数".format(i))
结果如下:
2是偶数
4是偶数
6是偶数
8是偶数
10是偶数
-pass-:
运用pass关键字进行占位,占据一个空格的位置
很多时候我们创建一些函数或者循环等等是觉得在后面会有用,但是目前来说不确定里面怎么运算,空着呢又会出错,这时就需要pass来进行占位
for i in range(1,2):pass #不会报错
结果如下:
-while-:
案例条件:年利率是6.7%,本利是每年翻滚,则多少年后本钱会翻倍
当前知道年利率(循环条件),不知道多少年(循环次数)
year =0
qian= 100000
while qian < 200000: #利用知道本钱这个循环条件来建立循环
year += 1qian= qian*(1+0.067)print("第{0}年,我现在有{1}".format(year,qian))
结果如下:
第1年,我现在有106700.0
第2年,我现在有113848.9第3年,我现在有121476.77629999998第4年,我现在有129615.72031209998第5年,我现在有138299.97357301068第6年,我现在有147566.07180240238第7年,我现在有157452.99861316333第8年,我现在有168002.34952024528第9年,我现在有179258.5069381017第10年,我现在有191268.8269029545第11年,我现在有204083.83830545243
while...else,和for...else...用法一样
条件跟前面一致,当本钱翻倍时候,就用print庆祝一下
year =0
qian= 100000
while qian < 200000:
qian= qian * (1+0.067)
year+= 1
print("第{0}年,我现在有{1}".format(year,qian))else: #当前else和while处于同一级
print("终于翻倍了,不容易啊")
结果如下:
第1年,我现在有106700.0
第2年,我现在有113848.9第3年,我现在有121476.77629999998第4年,我现在有129615.72031209998第5年,我现在有138299.97357301068第6年,我现在有147566.07180240238第7年,我现在有157452.99861316333第8年,我现在有168002.34952024528第9年,我现在有179258.5069381017第10年,我现在有191268.8269029545第11年,我现在有204083.83830545243终于翻倍了,不容易啊
顺序结构
在不包含分支结构(条件判断),循环结构(for ,while)情况下一步一步往下执行
文笔不好,仅供参考