day 9 summary
1.格式运算符
- 格式化字符串:格式占位符
语法:包含格式占位符的字符串 % (数据1, 数据2…)
说明:括号中的数据的个数需要要格式占位符的个数保持一致
格式占位符:
%s - 字符串(任何类型的数据)
%d - 整数
%f - 浮点数 %.Nf -保留N位小数
# 'xxx今年xx岁'
name = input('请输入姓名')
age = int(input('请输入年龄:')
message = name + '今年' +str(age) + '岁'
print(message)
# 1) %s可以使用任意类型的数据填充(如果只有一个数据()可以省略)
message = '名字:%s' % ['张三', '李四']
print(message)
message = '月薪:%.2f元' % 10005.578
print(message)
# 2.格式化字符串:f-string (字符串.format())
# f'包含{任何有结果的表达式}的字符集'
message = f'{name}今年{age}岁'
print(message)
message = f'a:{100 + 200}, b:{10 * 20}'
print(message) # a:300, b:200
message = f'a:{[10, 20, 30][-1]}'
print(message)
# 1) {表达式:.Nf} - 控制保留N位小数
num = 1.234
message = f'a:{num:.2f}'
print(message)
# 2) {表达式:,}
money = 10200010
message = f'金额:{money:2,}'
print(message)
# 3){表达式:.N%}
num = 0.56
message = f'毛利率:{num:.2%}'
print(message)
2.函数的运用
没有函数会出现的问题:代码冗余(明明相同的代码,需要写多遍)
例如:1*2*3*4*...*10
# sum1 = 1
# for x in range(1, 11):
# sum1 *= x
# print(f'10的阶乘是:{sum1}') # xxx的阶乘是:xxxx
#
# # 1*2*3*...*8
# sum1 = 1
# for x in range(1, 9):
# sum1 *= x
# print(f'8的阶乘是:{sum1}')
#
# # 1*2*3*..*13
# sum1 = 1
# for x in range(1, 14):
# sum1 *= x
# print(f'13的阶乘是:{sum1}')
def factorial(num):
sum1 = 1
for x in range(1, num+1):
sum1 *= x
print(f'{num}的阶乘是:{sum1}')
factorial(10)
factorial(8)
factorial(13)
factorial(7)
factorial(5)
num = 1.234
message = f'a:{num:.2f}'
print(message) #a:1.23
money = 10200010
message = f'金额:{money:,}'
print(message)
num = 0.56
message = f'毛利率:{num:2,}'
print(message)
3.函数基础
-
什么是函数
“”"
函数就是实现某一特定功能的代码的封装。
“”" -
函数的分类(根据函数是由谁创造(定义)的来分的类)
“”"
系统函数(别人造好的机器) - python自带的函数,程序只需要在需要的时候调用。例如:print、input、type、max、min、…
自定义函数(自己造机器) - 由程序自己定义的函数
“”"
3.定义函数(自己造机器)
“”"
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
def - 关键字;固定写法
函数名 - 程序员自己命名
要求:是标识符、不能是关键字
规范:见名知义(看到函数名大概知道函数的功能)、字母都小写,多个单词之间用下划线隔开、不使用系统名字
(): - 固定写法
形参列表 - 以’变量名1, 变量名2, 变量名3,…'的形式存在,变量也可以一个都没有。(这儿的一个变量就是一个形参)
形参的作用: 将函数外部的数据传递到函数内部
一个函数需不需要形参,需要几个形参,就看实现这个函数的功能需不需要额外的数据,需要几个额外的数据。
函数说明文档 - 本质就是文档注释(相当于机器的说明书)
函数体 - 和def保持一个缩进的一条或者多条语句
函数体就是实现函数功能的代码段
初学者定义的步骤:
第一步:确定函数功能
第二步:根据函数功能确定函数名
第三步:确定形参(看实现这个函数的功能需不需要额外的数据,需要几个额外的数据。)
第四步:实现函数功能,这个时候将形参当场对应的数据来数据(写函数体)
第五步:写函数说明文档
“”"
求两个数的和(功能说明区)
:param num1: int或者float, 第一个数 (参数说明)
:param num2: 第二数
:return: None(返回值)
"""
print(num1 + num2)
# 练习2:写一个函数提取指定字符串中的中文
def get_chinese(str1):
# str1 = 'hello 你好!'
"""
提取字符串中的文本
:param str1: 被提取的字符串
:return: None
"""
print(''.join(x for x in str1 if '\u4e00' <= x <= '\u9fa5'))
# 练习3:写一个函数将列表中的元素逆序
def reverse_list(list1):
"""
将指定列表逆序
:param list1: 被逆序的列表
:return: None
"""
print(list1[::-1])
# 练习4:写一个函数判断指定的数是否是水仙花数。(三位数各个位上的数的立方和等于它本身)
def is_daffodil_num(num):
num_str = str(num)
if len(num_str) != 3:
print(False)
else:
sum1 = 0
for x in num_str:
sum1 += int(x)**3
if sum1 == num:
print(True)
else:
print(False)
- 调用函数(使用机器)
“”"
特点重要的结论:定义函数的时候不会执行函数体, 调用函数才会执行函数体
语法:
函数名(实参列表)
说明:
函数名 - 必须是已经定义过的函数的函数名
() - 固定写法
实参列表 - 以’数据1, 数据2, …'的形式存在。这儿的每个数据就是一个实参,实参是用来给形参赋值
函数调用过程(非常重要!):
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值, 传参的时候必须保证每个参数都有值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置,接着往后执行
“”"
str2 = ‘hello 你好!’
get_chinese(str2)
同一个函数可以调用多次
sum2(20, 90)
sum2(100, 99)
def func():
print(’======’)
print(’--------’)
print(‘abc’[10])
print(‘end!’)