三大结构:

-顺序-

-分支-

-循环-

-分支-:

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 #不会报错

结果如下:

python的流程控制结构 python的程序流程图_python的三种基本结构流程图

-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)情况下一步一步往下执行

文笔不好,仅供参考