Python字符串格式化输出 & 函数(3.12)
1.字符串格式化
1.字符串格式化 - 格式占位符
1)
语法:包含字符串占位符的字符串 %(数据1,数据2,数据3…)
%s - 字符串对应的占位符(可以用任何类型的数据赋值)
%d - 整数对应的占位符(一般用整数赋值)
%f - 小数对应的占位符(默认保留六位小数);%.Nf - 保留N位小数
2)数据
个数必须和前面的占位符的个数保持一致
数据可以是任何有结构的表达式
当只有一个数据的时候括号可以省
name='cyt'
age=3
money=14324
message='%s几年%d岁! 月薪:%f元' %(name,age,money)
message1='%s几年%s岁! 月薪:%s元' %(name,age,money)
print(message)
print(message1)
num=1.234
message='abc:%s'%num
print(message)#abc:1.234
message='abc:%d'%num
print(message)#abc:1
message='abc:%.2f'%num
print(message)#abc:1.23
2.f-string
在字符串最前面加f,就可以通过 f’{表达式}'结构来确定字符串中变化的内容
name='cyt'
age=3
money=14324
message=f'{name}今年{age}岁! 月薪:{money}元,a的编码值是:{ord("a")}'
print(message)
{表达式:参数}
1):.Nf - 控制保留N位小数
num=1.2434
print(f'a:{num:.2f}')# a:1.24
2)
数据:符号>N - 让数据变成长度是N的字符串,不够的在前面填充指定符号
数据:符号<N - 让数据变成长度是N的字符串,不够的在后面填充指定符号
num = 4 # 004
print(f'python2101{num}') # python21014
print(f'python2101{num:0>3}') # python2101004
print(f'python2101{num:0<3}') # python2101400
print(f'python2101{num:*<3}') # python21014**
print(f'python2101{num:x>4}') # python2101xxx4
3) :.N% - 将数转换成百分比,同时百分数保留N位小数
num = 0.75
print(f'及格率:{num:.1%}') # 及格率:75.0%
4) :,k
money = 198000008
print(f'余额:{money:,}') # 余额:198,000,008
3.function
1函数式编程:
遇到问题先思考有没有已经存在的方法解决这类问题,如果没有,就自己创建能解决这类问题的函数
2函数 - 实现特定功能的代码的封装
分类;系统函数 - python自带函数,需要就调用
自定义函数 - 自己创建使用
3定义函数
参数列表 - 形参列表
多个变量名用逗号隔开:n1,n2,n3...
作用:将函数外部的数据传到函数里边
形参个数:看实现函数功能需要几个就给几个形参
- 实参列表
实参就是通过形参传递到函数中使用的数据
实参有多少个看形参有多少个
4.调用函数 - 函数名(实参列表)
5.函数调用过程:
当程序执行到调用函数语句的时候:
第一步:回到函数定义的位置
第二步;传参(用实参给形参赋值),传参的时候必须保证每个参数都有值
第三步:执行函数体
第四步:确定函数返回值(下周才讲)
第五步:回到函数调用的位置接着往后执行
练习1:定义一个函数统计字符串中中文的个数
def chinese_count(string):
count = 0
for x in string:
if '\u4e00' <= x <= '\u9fa5':
count = 1
print(count)
chinese_count('sjj十几年ss82数据库')
练习2:定义一个函数将指定列表中的元素逆序
def reverse_list(list1):
print(list1[::-1])
reverse_list([23, 90, 89])
练习3:定义一个函数删除指定字符串中指定字符
def del_char(string, char):
new_str = ''.join([x for x in string if x != char])
print(new_str)
del_char('ajsjjskakaaas', 'a')
练习4:定义一个函数将两个字符串中的字符交叉合并:'abc’、'123’ -> a1b2c3 'abc’、'123456’ ->a1b2c3456
def crisscross_merge(str1, str2):
new_str = ''
l1, l2 = len(str1), len(str2)
if l1 > l2:
l1, l2 = l2, l1
for index in range(l1):
new_str = str1[index] str2[index]
new_str = str1[l1:] str2[l1:]
print(new_str)
列表基础练习题
选择题
下列选项中能正确表示一个列表的是(D)。
A.
{1, 2, 3}
B.
[10, abc, 123]
C.
[10 20 30]
D.
[1, 2, 3]
(多选)已知一个列表
nums = [10, 20, '小明', [1, 2]]
,以下表达式结果是小明
的是?(CD)A.
nums[-3]
B.
nums[3]
C.
nums[-2]
D.
nums[2]
以下选项关于列表说法错误的是?(C)
A. 列表可以放在
for
循环的in
后面B. 列表是可变的序列
C. 列表是有序的,只支持增删改,不支持查操作
D. 列表的
in
操作可以判断元素是否存在已知一个列表
names = ['小乔', '甄姬', '王昭君', '妲己', '女娲', '西施', '嬴政']
,下面的表达式中结果是[]
的是?(C)A. names[1:]
B. names[:1]
C. names[1:4:-1]
D. names[1:4:2]
已知列表
list1 = [10, [1, 2], 100, 1000]
,下列表达式结果是True的是?(D)A.
100 not in list1
B.
1 in list1
C.
2 in list1
D.
[1, 2] in list1
下列选项中不属于序列的是?(BCD)
A. []
B. '100’
C. {1, 2}
D. 100
已知
student = {'name': '小明', 'age': 18, 'gender':'男'}
下列关于字典的操作正确的是?(D)A.
student('name')
B.
student[name]
C.
student['小明']
D.
student['age']
下列表达式有误的是?(D)
A.
100 30.03
B.
188 * '12'
C.
188 * 12
D.
188 '12'
(多选)下列表达式能产生
[1, 2, 3]
的是?(AD)**************************不会A.
[1, 2] [3]
B.
[1, 2].append(3)
C.
[1, 2].extend(3)
D.
[1, 2, 3] * 1
(多选)下列选项中属于可变序列的是?(AC)
A. 列表
B. 元组
C. 字典
D. 字符串
填空题
- python中获取指定数据的类型可以使用( type() )函数。
- 查看数据地址的函数是( id() )。
- 如果要将数据转换成列表,需要使用( list() )。
- ( len() )函数可以用来获取任意序列中元素的个数。
- 如果需要将一个数据插入到列表的中间需要使用函数(insert() )。
- Python中数学集合运算中求交集、并集、差集和对称差集的符号分别是( & )、(| )、( - )、( ^ )。
- 请列举出你知道的Python中的不可变的数据类型:( 整型,字符串,元组 )。
- 获取字符编码值和获取编码值对应的字符的函数分别是( ord() )、( chr() )。
- 如果要判断序列中是否存在某个元素可以使用( in )来判断。
- 如果要判断两个数据的地址是否相等可以使用( id(a)==id(b) )。
编程题
已知一个列表
names = ['胡歌', '王凯', '王俊凯', '杨幂', '刘德华', '张国荣', '王祖贤', '张伟']
。1)依次打印列表中的每个元素
2)统计列表中姓
张
的人的个数。3)统计名字是两个字的人的个数。
names = ['胡歌', '王凯', '王俊凯', '杨幂', '刘德华', '张国荣', '王祖贤', '张伟']
count1=0
count2=0
for i in range(len(names)):
print(names[i])
if names[i][0]=='张':
count1 =1
if len(names[i])==2:
count2 =1
print(f'{count1}人姓"张",名字是两个字的有{count2}人')
结果:
已知字典
dog = {'name': '大黄', 'color': 'yellow', 'age': 3, 'kind': '土狗'}
1)打印所有key对应的值
2)将name的值修改成 '旺财’
3)添加狗的价格对应的键值对
4)清空dog字典
dog = {'name': '大黄', 'color': 'yellow', 'age': 3, 'kind': '土狗'}
for x in dog:
print(dog[x])
dog['name']='旺财'
print(dog)
dog.setdefault('price',10000)
print(dog)
dog.clear()
print(dog)
结果:
已知字符串
message = 'You see see, one day day!'
1)统计字符串中非字母的字符个数
2)提取出所有的小写字母