5. 分之和循环
5.0. recode
字符串
1. '', "", ''' ''', """ """
str1 = 'abc123\n'
str2 = '''
abc,
abc123,
123!@#'''
print(str1, str2, type(str1), type(str2))
输出
abc123
abc,
abc123,
123!@# <class 'str'> <class 'str'>
2. 普通字符,转义字符,编码字符(\uFFFF)
3. 获取字符串中字符
字符串[下标]
字符串[开始下标:结束下标;步长]
4. 字符串相关运算: +, *, 比较, in/not in, len(), str()
5. 格式字符串
%s
%d
%.nf
...
5.1 分支结构
python中的分支结构只有if语句,没有switch
a. 语法
if 条件语句:
代码段
b. 说明:
if - 关键字
条件语句 - 任何有结果的表达式(不管是什么类型)
: - 固定格式
代码段 - 和if保持一个缩进的一条或者多条语句
c. 执行过程
先判断条件语句的结果是否是True,如果是True,就执行冒号后面的代码段,否者就不执行.
如果条件语句的结果不是布尔,会先将结果转换成布尔再判断
例如:
if 10:
print('条件语句是10')
if 'abc':
print('条件语句是abc')
if True:
print('条件语句是True')
if 100 > 20:
print('条件语句是100 > 20')
注意: 赋值语句不能写在if的后面
if num =10:
print('赋值语句') # 报错
例:判断奇偶数
num = 12
if num & 1:
print('%d是偶数' % (num)) # if条件成立则执行和if保持缩进的语句.
print('%d是奇数' % (num))
随机产生一个年龄值,如果年龄大于等于18就打印'成年'.
import random
age = random.randint(0, 100)
print(age)
if age >= 18:
print('成年')
5.1.1 if - else
a. 语法:
if 条件语句:
代码段1
else:
代码段2
b. 执行过程
先判断条件语句是否为True,为True就执行代码段1,否则就执行代码段2
例:随机产生一个整数如果是奇数打印'XXX是奇数',否则打印'XXX是偶数'
i
mport random
num = random.randint(0, 100)
if num & 1 :
print('%d是奇数' % (num))
else:
print('%d是偶数' % (num))
5.1.2 if - elif - else
a. 语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段n
b. 执行过程:
先判断条件语句1是否为True,为True就执行代码段1:否则,就判断条件语句2是否为True,为True,就执行代码段2,否则,就判断条件语句3是否为True,为True,就执行代码段,一次类推.如果前面的条件值都为False,就执行else后面的代码段.
注意:
1. 判断后面的条件的前提是前面的条件不成立
2. elif根据情况可以有多个,else也可以省略
例:根据成绩对成绩进行分段:小于60分打印不及格,60到70及格,71-89良好,90及90以上优秀.
score = int(input('请输入成绩:'))
if score < 60:
print('不及格')
elif score <= 70:
print('及格')
elif score < 90:
print('良好')
elif score <= 100:
print('优秀')
else:
print('超出范围')
5.1.3. if嵌套
可以在if,elif,else后面的代码段中,都可以再写其他的if语句
例:如果一个数字是偶数就打印'偶数',否则打印'奇数',如果偶数还能被4整除,再打印'4的倍数'.
num = int(input('请输入数字:'))
if num & 1:
print('奇数')
if num % 5 == 0:
print('是5的倍数')
else:
print('不是5的倍数')
else:
print('偶数')
if num % 4 == 0:
print('是4的倍数')
else:
print('不是4的倍数')
例: 输入一个字符串,判断第一个字符是否是字母,如果是,打印"以字母开头",如果这个字母是大写的,再打印'大写字母',例如:'abc123'-> 打印'以字母开头','Abc123' -> 打印'以字母开头'和大写字母.'12as' - >什么都不打印.
str1 = input('请输入一个字符串:')
if str1[0].isalpha():
print('以字母开头')
if str1[0].isupper():
print('大写字母')
5.2 for循环
python中的循环结构有2种:for循环和while循环
某个操作需要重复执行,就考虑用循环
5.2.1 for循环
a. 语法
for 变量 in 序列:
循环体
b. 说明
for - 关键字
变量 - 变量名
in - 关键字
序列 - 可以是字符串,列表,元组,字典,集合,迭代器,range
循环体 - 和for保持一个缩进的一条或者多条语句(需要重复执行的代码)
c. 执行过程:
让变量取序列中取值,依照索引一个一个的取,取完为止;每取一个值,依次执行循环体(for循环中,序列中值的个数,决定类循环的次数)
例如:
str1 = input('请输入一个字符串:')
for val in str1:
print(val, '===')
注意:
如果for后面的变量渠道的值,在循环体里面不使用,可以使用下划线(_)来代替
5.2.2 range()
range(n) - 产生一数字序列,序列中的内容是0 ~ n-1
range(m,n) - 产生一数字序列,序列中的内容是m ~ n-1
range(m,n,step) - 产生一数字序列,从m开始,每次加step,直到n前为止.
range()一般用在:
a. 需要产生指定范围的数字序列
b. 单纯的控制for循环的循环次数
例:计算1+2+3+...+100.
sum1 = 0
for value in range(1, 101):
sum1 += value
print(sum1)
例:计算 2+4+5+8+...+100
sum1 = 0
for value in range(2, 102,2):
sum1 += value
print(sum1)
sum2 = 0
for value in range(101):
if not value & 1:
sum2 += value
print(sum2)
写程序统计一个字符串中数字字符的个数.
str1 = input('请输入一个字符串:')
sum1 = 0
for char in str1: # 将字符串中的每个字符取出来
if char.isdigit(): # if '0' <= char <= '9'
sum1 += 1
print(sum1)
5.3. while 循环
5.3.1
a. 语法
while 条件语句:
循环体
b. 说明
while - 关键字
条件语句 - 有结果的表达式(除了赋值语句,一般的表达式都行)
: - 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句(会被重复执行)
c. 执行过程
先判断条件语句是否为True,为True就执行循环体;
执行完循环体再判断条件语句是否为True,为True就又执行循环体;
执行完循环体再判断条件语句是否为True,为True就又执行循环体;
依次类推..... 直到判断条件语句为False,整个循环结束.
获取 1,2,3....100
num = 1
while num <= 100:
print(num)
num += 1
使用获取字符串 'abcd'
index = 0
str1 = 'abc123'
while index < len(str1):
print(str1[index])
index += 1
5.3.2. for循环和while循环的选择
python中,for循环能做到的while循环都能做到,但是while循环能做的,for循环不一定能做到.
使用for循环:
- 获取序列中的元素(值)
- 循环次数确定
while循环:
1.死循环
2.循环次数不确定
例:程序可以不断的进行输入,直到输入的值为0.
str1 = input('请输入:')
while str1 != '0' :
str1 = input('请输入:')
print('结束')
5.4. 循环中的关键字
continue, else, break
5.4.1. continue
当循环执行过程中遇到continue,会结束当次循环的判断.
(直接进入下次循环的判断:for循环就是用变量取下一个值,while循环就是直接判断条件语句是否为True)
sum1 = 0
for x in range(100):
if not x & 1:
continue
sum1 += x
print(sum1)
5.4.2 break
功能:当循环过程中遇到了break,整个循环直接结束
num = 1
sum1 = 0
while True:
if sum1+num >= 10:
break
sum1 += num
num += 1
print(sum1)
for x in range(1000):
print(x)
break
5.4.3 else
a. 语法:
while 条件语句:
循环
else:
代码段
for 变量 in 序列:
代码段
else:
代码段
b. 执行过程
else结构不会影响原循环的执行过程,当循环自然死亡的时候,就会执行else后面的代码段.
循环因为遇到break而结束的时候不会执行else后面的代码段
for x in range(10):
print(x)
if x == 3:
break
else:
print('for循环结束了')
网友评论