5.1 分支结构
python中分支结构只有if语句,没有switch语句
5.1.1 if语句
- a.语法:
if 条件语句 :
代码段 - b.说明:
if -- 关键字
条件语句 -- 任何有结果的表达式,不管结果类型。
: -- 固定写法,有冒号下以下必定有缩进
代码段 -- 和if保持一个缩进的一条或多条语句。 - c.执行过程:
先判断条件结果是否是True,如果是True就执行冒号后面的代码段。否则就不执行。
注意:
如果条件语句结果不是布尔,会先将结果转换成布尔,再判断。
除了0,空值以外的值转为布尔都为True。
if后面可以写哪些语句
注意:赋值语句不能写在if后面,其他都可以。
num = 10
if num & 1 == 0:
print('%d是偶数' % (num))
print('========') # 和if保持一个缩进的语句是在条件成立才执行
# 与if无关的语句最好换个行
print('##########') # 在if外面的语句不管if条件是否成立都会执行
if 'ADS'.isupper():
print('全是大写') #不执行
# 练习:随机产生一个年龄值,如果大于等于18就打印成年。
import random
age = random.randint(0,100)
if age >= 18:
print('%d已经成年了。' %(age))
else:
print('未成年')
print(age)
5.1.2 if-else
- a.语法:
if 条件语句 :
代码段1
else:
代码段2 - b.说明:
if -- 关键字
else -- 关键字
条件语句 -- 任何有结果的表达式,不管结果类型。
: -- 固定写法,有冒号下以下必定有缩进
代码段 -- 和if及else保持一个缩进的一条或多条语句。 - c.执行过程:
先判断条件结果是否是True,如果是True就执行代码段1。否则就执行代码段2。
注意:
如果条件语句结果不是布尔,会先将结果转换成布尔,再判断。
除了0,空值以外的值转为布尔都为True。
#随机产生一个整数,如果是奇数打印’***是奇数‘,否则,反之。
num = random.randint(0,9999)
if num & 1:
print('%d是奇数' %(num))
else:
print('%d是偶数' %(num))
5.1.3 if-elif-else
- a.语法:
if 条件语句1 :
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段n - b.说明:
if -- 关键字
elif -- 关键字
else -- 关键字
条件语句 -- 任何有结果的表达式,不管结果类型。
: -- 固定写法,有冒号下以下必定有缩进
代码段 -- 和if、elif及else保持一个缩进的一条或多条语句。 - c.执行过程:
先判断条件语句1结果是否是True,如果是True就执行代码段1。
否则就判断条件语句2结果是否是True,如果是True就执行代码段2。
否则就判断条件语句3结果是否是True,如果是True就执行代码段3。
...
如果前面所有的条件都为False,就执行代码段n。
注意:
后面的条件判断的前提是前面条件不成立。
这里的elif根据情况可以有多个,else也可以省略。
如果条件语句结果不是布尔,会先将结果转换成布尔,再判断。
除了0,空值以外的值转为布尔都为True。
# score 60以下不及格 60-70及格 71-89良好 90以上优秀
score = random.randint(0,100)
print('成绩为%d:' %(score),end="")
if score < 60:
print('不及格')
elif score <= 70:
print('及格')
elif score <= 89:
print('良好')
else:
print('优秀')
5.1.4 if嵌套
可以在if,elif,else后面的代码段中,都可以再写其他的if语句。
#判断一个数字是否为偶数,是的话判断是否被4整除
score = random.randint(0,100)
if score & 1:
print('%d是奇数' %score)
else:
if score % 4 == 0:
print('%d是4的倍数' % score)
else:
print('%d是偶数' %score)
"""
练习:输入一个字符串,判断字符串的第一个字符是否是字母,如果是,打印’以字符开头'。
如果这个字母是大写的再打印’大写字母‘。
"""
str1 = input('请输入一串字符:')
if str1[0].isalpha(): #if 'a' <= str1[0] <= 'z' or 'A' <= str1[0] <= 'Z':
print('以字母开头')
if str1[0].isupper(): #'A' <= str1[0] <= 'Z':
print('大写字母')
else:
print('什么都不打印')
'''
l = []
num = 0
while num <= 888:
num = random.randint(0, 999)
l.append(num)
print(l)
'''
5.2 for循环
python中的循环结构有两种:for和while循环。
什么时候用循环:某个操作需要重复执行,就考虑用循环。
5.2.1 for循环
- 语法:
for 变量名 in 序列:
循环体 - 说明:
for、in -- 关键字
变量名 -- 满足变量名要求即可
序列 -- 字符串,列表,元组,字典,集合,迭代器,range
循环体 -- 可以是一条或多条和for保持一个缩进的语句(需要重复执行的代码) - 执行过程:
让变量去序列中取值,一个一个的取,取完为止;每取一个值,执行一次循环体。
(for循环中,序列中元素的个数,决定了循环的次数)
注意:
如果for后的变量取到的值,在循环体里不使用,那么这个变量命名时,用一个_来命名。
for x in range(97,123):
print(chr(x), end='--->')
for x in 'abc':
print(x)
print('##$$#$$#$#')
5.2 range
range(n) -- 产生一个数字序列,序列内容是0~n-1(结果是一个序列)
range(m,n) -- 产生一个数字序列,序列内容是m~n-1,m<n(结果是一个序列)
range(m,n,step) -- 产生一个数字序列,序列从m开始,每次加step直到n前为止,取不到n。
range一般用在:
1.需要产生指定范围的数字序列
2.单纯的控制for循环的循环次数
for num in range(10):
print(num, end='')
print()
for num in range(10, 20, 2):
print(num, end='--->')
#练习:求1+2+。。+100
sum1 = 0
for num in range(1, 101):
sum1 += num
print(sum1)
print(sum([1, 2, 3]))
#练习:2+4+6+8+。。。+100
#方法1:不用if
sum1 = 0
for num in range(1, 51): # range(2,101,2)
sum1 += num*2
print(sum1)
#方法2:用if
sum2 = 0
for num in range(1, 101):
if not num &1:
sum2 += num
print(sum2)
"""
if num & 1:
pass
else:
sum2 += num
"""
#练习:写程序统计一个字符串中数字字符的个数
str1 = input('请输入一个字符串:')
sum1 = 0
for i in str1:
if '0' <= i <= '9':
print(i)
sum1 += 1
print('数字字符的个数是:', sum1)
#用循环控制打印10行”*“
for _ in range(1,10):
print('*')
for x in range(1, 10):
print('*'*x)
5.3 while
5.3.1 while循环
- 语法:
while 条件语句:
循环体 - 说明:
while -- 关键字
条件语句 -- 有结果的表达式,除了赋值语句
: -- 固定写法
循环体 -- 和while保持一个缩进的一条或者多条语句(会被重复执行) - 执行过程:
先判断条件语句是否为True,为True就执行循环体;
执行完循环体再判断条件语句是否为True,为True又执行循环体;
。。。。。
以此类推,直到条件语句为False,就结束整个循环。
#1*2*..*10
num = 1
sum1 = 1
while num <= 10:
sum1 *= num
num += 1
print(sum1)
print(1*2*3*4*5*6*7*8*9*10)
#获取字符串abc123中的每个字符
str1 = 'abc123'
num = 0
while num <= 5:
print(str1[num])
num += 1
5.3.2 for和while循环
python中,for循环能做到的while循环都能做到;但是while循环能做的,for循环不一定能做到。
- 使用for循环:
1.获取序列中的元素(值)
2.循环次数确定 - while循环:
1.死循环
2.循环次数不确定
#练习:程序不断的输入,知道为0为止
i = input('请输入:')
while i != '0':
i = input('请输入:')
5.4 continue,break和else
5.4 .1 continue
- continue是一个关键字,只能写在循环体中
- 功能:当循环遇到continue则会结束当次循环,直接进入下次循环判断。
- 进入下次循环:for循环就是用变量取下一个值;while循环就是直接判断条件语句是否为True。
5.4 .2 break
- break是一个关键字,只能写在循环体中。
- 功能:当循环遇到break时,直接结束当前循环。
5.4.3 else python中特有
- 语法:
while 条件语句:
循环体
else:
代码段
for 变量 in 序列:
循环体
else:
代码段
- 执行过程:
else结构不会影响原循环的执行过程。当循环自然死亡时,就会执行else后面的代码段。
循环因为遇到break而结束时,不会执行else后面的代码段。
for x in range(10):
print(x)
else:
print('for循环结束')
网友评论