分支结构循环与遍历
1、基础函数
1.赋值语句
-由赋值符号构成的一行代码
-即"="连起来的语句
2.输入函数
-input()
-从控制台获取用户输入的函数
-input()函数的使用格式
-<变量> = input(<提示信息字符串>)
-用户输入的信息以字符串类型保存在<变量>中
-例:
guess = input("请输入:")
# 运行时控制台无" "
3.评估函数eval()
-去掉参数数量外侧引号并执行余下的语句的函数
-eval基本使用格式:
eval(<字符串或字符串变量>)
4.输出函数print()
-以字符形式向控制台输出输出结果的函数
-print函数默认任务打印完毕后换行,即自动后面加\n(即end=’\n’),一般不循环用end=" "
-例1:
c = input("请输入温度值:")
c = int(c)
print("现在的温度是{:}℃".format(c))
现在的温度是
-例2:
print(eval('"1+2"'))
# 1+2
print(1+2)
# 3
2、表判断的相关运算符
1.比较运算符
-对两个变量或者值进行比较的运算符
-比较的结果是布尔值,即True/False
-条件判断操作符
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
2.逻辑运算符
- x and y 两个条件x和y的逻辑与
- x or y 两个条件x和y的逻辑或
- not x 条件x的逻辑非
- python中逻辑运算没有异或运算
3.身份运算符
- is: 用来检测两个变量是否是同一个变量
语法就是 var1 is var2- is not: 两个变量不是同一个变量
-数字类型可以直接判断,字符串类型要求其中不包含空格( )
- is not: 两个变量不是同一个变量
- in
-<> in <>
-及判断前者是否在后者里面
3、分支结构
-由判断条件决定程序运行方向的语句
-使用保留字if elif else构成条件判断的分支结构
-每个保留字所在行最后存在一个冒号(:)语法的一部分(冒号及后续缩进用来表示后续语法与条件的所属关系)
- 单分支结构:
if <条件>:
<语句块>
-如果条件为Ture则执行冒号后语句,为False则不执行
例:
i = "a"
if i in "abcdefg":
print(2)
- 二分支结构
-if <条件>:
<语句块1>
else:
<语句块2>
例:
guess = input("请输入一个数字:" )
guess = int(guess)
if guess == 99:
print("猜对了")
else:
print("猜错了")
3.紧凑形式:使用于简单表达式的二分支结构
-<表达式1> if <条件> else <表达式2>
-同样的判断条件,返回"Ture"执行表达式1,返回"False"执行表达式2
例:
guess = eval(input("请输入一个数:"))
print("猜{:}了".format("对" if guess==99 else "错"))
- 多分支结构
-if<条件>:
<语句块1>
elif:
<语句块2>
…
else:
<语句块3>
例:
score = input("请输入学生成绩:")
score = int(score)
if score>=90:
print("A")
elif score>= 80:
print("B")
elif score >= 70:
print("C")
elif score >=60 :
print("D")
else:
print("不及格")
4、实例;身体质量指数BMI
height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))
bmi = weight / pow(height, 2)
print("BMI数值为:{:.2f}".format(bmi))
who, nat = "", ""
if bmi < 18.5:
who, nat = "偏瘦", "偏瘦"
elif 18.5 <= bmi <24:
who, nat ="正常","正常"
elif 24 <= bmi <25:
who, nat ="正常","偏胖"
elif 25 <= bmi <28:
who, nat ="偏胖","偏胖"
elif 28<= bmi <30:
who, nat ="偏胖","肥胖"
print("BMI指标为: 国际'{0}',国内'{1}'".format(who,nat))
5、循环
1.while循环
- 由条件控制的循环运行方式
- while <条件> :
<语句块> - 另一种形式
while <条件> :
<语句块1>
else:
<语句块2> - 反复执行语句块,直到条件不满足时结束
- 不知道具体循环次数,但能确定循环的成立条件的时候用while循环
-else语句块作为"正常"完成循环的奖励
例1:
# 如果说年利率是6.7%,本利是每年翻滚, 则多少年后本钱会翻倍
benjin = 100000
year = 0
while benjin < 200000:
benjin = benjin * (1+0.067)
year += 1
print("第 {0} 年: {1}元".format(year, benjin))
第 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元
例2:
benjin = 100000
year = 0
while benjin < 200000:
benjin = benjin * (1+0.067)
year += 1
print("第 {0} 年: {1}元".format(year, benjin))
else:
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元
你本金已翻倍
2.range()函数
-作用:产生循环计数序列
-
range(N)
产生0到N-1的整数序列,共N个 -
range(M,N)
产生M到N-1的整数序列,共N-M个 -
循环语句是按照一定次数循环执行一组语句
-for <变量> in range(<函数名>):
<被循环执行的语句>
-<变量>表示每一次循环的计数,0到<次数>-1的数
例:
for i in range(5):
print(i)
0
1
2
3
4 #最后一个数字为4,但执行次数为5
for i in range(2,5):
print(i)
2
3
4
#从2到5-1,执行次数为后面数减前面数即5-2
3.遍历循环
- for <循环变量> in <遍历结构>:
<语句块> - 由保留字for 和in组成,完成遍历所有元素结束
- 每次循环,所获得元素放入循环变量,并执行一次语句块
-字符串遍历循环
-for c in s :
<语句块>
-s是字符串,遍历字符串每一个字符,产生循环
例:
for c in "Python123" :
print(c,end=",")
P,y,t,h,o,n,1,2,3,
4、列表遍历循环
- for item in ls :
<语句块>
-ls是一个列表,遍历其每一个元素,产生循环
例:for grade in [97, 98, 99, 100]: print(grade) if grade == 100: print("这个是最高成绩{0}出现了".format(grade)) else: print("不是最高成绩") else: print("所有元素遍历完了") #最后一个else在条件选择之外,相当于最后输出一句的”奖励”
5、文件遍历循环
-
for line in file:
<语句块>
-file是一个文件标识符,遍历其每行,产生循环 -
其中还有另一种遍历形式
两种结构:
S= {<返回值>for <循环变量> in <遍历结构>}
S= {<返回值>for <循环变量> in <遍历结构> if <条件>} #首先if筛选出满足条件的值,再以<返回值>的形式输出值
6、两端括号可以为大括号{} 方括号[],对应生成或转化为集合类型、列表类型
例1:
a = {1,2,3,4}
s = {i for i in s}
print(s)
ss = {2*i for i in s}
print(ss)
{1, 2, 3, 4}
{8, 2, 4, 6}
例2:
a = [1,2,6,8,9]
s = [i for i in a if i % 2 == 0]
ss = {i for i in a if i % 2 == 0}
sss = [2*i for i in a if i % 2 == 0]
print(s)
print(ss)
print(sss)
[2, 6, 8]
{8, 2, 6}
[4, 12, 16]
6.两个for嵌套使用
- 行同C语言,前面的for给定一个值后,执行内层循环(或遍历),当内层循环(或遍历)执行完,再跳到外层循环(或遍历),继续给下一个在值或进行下一次内层循环(或遍历)
例1:
for row in range(1,10):
for col in range(1,row+1):
print(row*col,end = " ")
print("")
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
例2:
s1 = [1,2,3,4]
s2 = ['a','b']
s = [m*n for m in s2 for n in s1]
print(s)
s = [m*n for m in s2 for n in s1 if n% ==2]
print(s)
['a', 'aa', 'aaa', 'aaaa', 'b', 'bb', 'bbb', 'bbbb']
['aa', 'aaaa', 'bb', 'bbbb']
7.循环控制保留字
- continue 和 break
- continue结束当次循环,继续执行后续次数循环
- break跳出并结束当前整个循环,执行循环后的语句
- continue和break 可以与for 和whille循环搭配使用
例1:
for c in "PYTHON":
if c == "T":
continue
print(c, end="")
#注:python一般以4个空格为缩进,或4的倍数的空格为缩进
P
Y
H
O
N
例2:
for c in "PYTHON":
if c == "T":
break
print(c,end="")
P
Y
例3:
s = "PYTHON"
while s != "":
for c in s :
if c == "T":
break
print(c, end="")
s = s[:-1] #就是将 s 字符串中倒数第一个字符删除
PYPYPYPYPYP
#注:由缩进判断外层与内层(形同c语言中{ })
6.异常处理
- 你知道程序可能存在问题,希望在错误发生时增加一些语句。
- 这时try 和except就派上用场了。如果没有出错,这些额外的语句(except语句块)就会被忽略掉。你可以把Python 的try 和except功能看作是程序的保险单。
-形式:
try :
<语句块1>
except :
<语句块2>
例:
try :
num = eval(input("请输入一个数:"))
print(num**2)
except :
print("输入不是数")
#用try语句处理异常的行为称为异常捕获。这个示例中except子句打印了一条错误提示信息。一般来说,捕捉到异常,就是给你一个机会去解决它,或者是再试一次,至少程序能正常结束。