yuque_diagram (3).jpg

第1章 Python语言基础 - 图2
第1章 Python语言基础.pptx

1. 数据与数据类型

数据:
数据是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。
声音、图像;符号、文字等。
数据类型:
数值类型(整型、浮点型、复数);文本序列(字符串);序列类型(列表、元组和range);映射类型(字典)和集合类型等,常用数据类型如表1.2所示。

对象 示例 说明
整型 1024、79 整数大小无限制(受内存大小限制)
浮点型 123.45、12. 、23.0、0.78 有取值范围:
2.2250738585072014e-308到1.7976931348623157e+308
字符串 ‘1024’ 、”test”、’’’10test’’’ 使用成对的单引号、双引号或三引号界定。
Range range(1,10,2) 、range(5) range(start, stop[, step])返回的从start到stop,步长为step的整数序列,常用于控制循环。start缺省为0,step缺省为1,不包含右边界。
元组 (1,2,3,4)、(1,2, ‘a’, ‘b’)、(1,) 用一对圆括号界定,元素间逗号分隔,元素可为任意数据类型。
列表 [1,2,3,4]、[1,2,’a’,”b”] 用一对方括号界定,元素间逗号分隔,元素可为数字、字符串、列表、元组等任意数据类型。
集合 {1,2,3,4}、{‘h’, ‘l’, ‘e’, ‘o’}、{‘you’,’me’,’he’} 用一对大括号界定,元素无顺序,集合中元素具有唯一性,元素间逗号分隔。
字典 {‘age’:40, ‘name’:’zhao’}
用一对大括号界定,元素间用逗号分隔,每个元素包括包含“键”和“值”两部分。

2. 数值取值范围

浮点数有溢出
整数不限制大小

  1. print(810 ** 106) # 可输出正确结果
  2. print(810.0 ** 106) # OverflowError: (34, 'Result too large')

3. 可变与不可变

可变数据类型与不可变数据类型

  1. # 不可变数据类型,改变意味着创建了新对象
  2. a = 1024 # 旧对象
  3. print(id(a)) # 旧对象地址 2786809800496
  4. a = 2048 # 创建新对象,应用旧名字
  5. print(id(a)) # 新对象地址 2786809800464
  6. # 可变数据类型
  7. ls = [1, 2, 3, 4] # 列表,可变对象
  8. print(id(ls)) # 地址 1664396012160
  9. ls.append(5) # 为列表添加一个元素5
  10. print(ls) # 数据[1, 2, 3, 4, 5]
  11. print(id(ls)) # 地址 1664396012160

能力点1:输出格式控制

4. 输出函数

  1. print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
  • 输出对象 objects到文本流file中
    • 表示可以是多个逗号分隔的对象
  • sep=’ ‘ 输出多个对象时,默认用空格分隔
  • end=’\n’ 每个输出语句末尾默认用换行符换行
  • file=sys.stdout 输出到具有写方法的对象,默认为标准输出设备
  • flush=False 值为True时强制刷新缓冲区
    1. print('hello world!') # hello world!
    2. print(1, 2, 3, 4) # 默认输出时用空格分隔
    3. # 输出 1 2 3 4
    4. print(1, 2, 3, 4, sep=',') # 用sep参数指定符号用于输出时分隔值
    5. # 输出1,2,3,4
    函数式编程 ```python def hello(): # 定义函数,相当于给下面的代码段起个名字 print(‘hello world!’) # hello world!

hello() # 通过定义的函数名调用函数 hello() # 可多次调用,每次输出一行hello world! hello() # 可多次调用,每次输出一行hello world!

  1. ```python
  2. def hello(): # 定义函数,相当于给下面的代码段起个名字
  3. print('hello world!') # hello world!
  4. if __name__ == '__main__':
  5. hello() # 通过定义的函数名调用函数

输出格式

4.1 str.format()

  1. <模版字符串{}>.format(<逗号分隔的参数>)
  1. user_name = 'Tom'
  2. gender = 'male'
  3. age = 20
  4. print('姓名:{},性别:{},年龄:{}'.format(user_name, gender, age))
  5. # 输出:姓名:Tom,性别:male,年龄:20

4.2 f-string

  1. f<模版字符串{变量名}>
  1. user_name = 'Tom'
  2. gender = 'male'
  3. age = 20
  4. print(f'姓名:{user_name},性别:{gender},年龄:{age}')
  5. # 输出:姓名:Tom,性别:male,年龄:20
  6. print(f'姓名:{"Tom"},性别:{"male"},年龄:{20}')
  7. # 大括号中的值为字符串时需用双引号

除用于字符串的输出外,此方法还可用于格式限定,使用方法是在大括号中加冒号和“格式限定符”, 如在冒号后面加“.mf”,可以控制输出保留小数点后m位数字的浮点数(float)。

  1. a = 5
  2. b = 3
  3. print(f'{a} / {b} = {a / b}') # 5 / 3 = 1.6666666666666667
  4. print(f'{a} / {b} = {a / b:.2f}') # 5 / 3 = 1.67

在 ‘:’ 后传递一个整数可以让该字段成为最小字符宽度,这在设置列对齐时很有用。

  1. print(f'{1} * {9} = {1 * 9:2}') # 1 * 9 = 9
  2. print(f'{9} * {9} = {9 * 9:2}') # 9 * 9 = 81

4.3 字符串拼接

  1. 用“+”将多个字符串拼接为一个字符串输出。参与拼接的变量为整数等其他数据类型时,需先用str()函数将其转为字符串类型再参与拼接。
  1. user_name = '王伟'
  2. age = 18 # 18是整数,用str(age)转为字符串 '18'
  3. print('我叫' + user_name + ',今年' + str(age) + '岁') # 我叫王伟,今年18岁

4.4 解包输出

依次输出组合数据中的元素,空格分隔,最后一个元素后面无空格

  1. seq1 = 'Hello'
  2. print(*seq1) # H e l l o
  3. seq2 = [1, 2, 3, 4]
  4. print(*seq2) # 1 2 3 4
  5. seq3 = (5, 6, 7, 8)
  6. print(*seq3) # 5 6 7 8
  7. seq4 = {3, 4, 5, 6}
  8. print(*seq4) # 3 4 5 6

示例1.1 正整数 a+b

  1. a = 5
  2. b = 10
  3. c = a + b
  4. # 输出计算结果
  5. print(c) # 15,输出一个对象
  6. print(a + b) # 15,可在输出表达式运算结果
  7. # 输出带格式计算结果
  8. print('a+b=', c) # a+b= 15,输出两个对象,空格分隔
  9. print('a+b=', c, sep='') # a+b=15,用空字符串分隔,消除空格
  10. print('5+10=', c, sep='') # 5+10=15
  11. print(a, b, sep='+', end='=') # 5+10= ,用+分隔,用=结束,不换行
  12. print(c) # 5+10=15,接上一条语句输出
  13. print(a, '+', b, '=', c) # 5 + 10 = 15,默认空格分隔
  14. print(a, '+', b, '=', c, sep='') # 5+10=15,sep=''消除空格
  15. # str.format(),推荐使用
  16. print('{}+{}={}'.format(a, b, c)) # 5+10=15,格式化输出
  17. # f-string,推荐使用
  18. print(f'{a}+{b}={c}') # 5+10=15,格式化输出

能力点2:接收键盘输入数据

5. 输入函数

input()函数的作用是从标准输入设备(键盘)获得用户输入的一行数据,不管用户输入的是字符型还是数字型的数据,input()函数都会将其作为一个字符串类型处理。

  1. user = input() # 输入一个字符串,如张三
  2. print('hello', user) # hello 张三
user = input()                  # 输入一个字符串,如张三
print(f'hello {user}')          # hello 张三
print('hello {}'.format(user))  # hello 张三
def hello():  # 定义函数,相当于给下面的代码段起个名字
    print('hello', user)            # hello 张三
    print(f'hello {user}')          # hello 张三
    print('hello {}'.format(user))  # hello 张三


if __name__ == '__main__':
    user = input()  # 输入一个字符串,如张三
    hello()         # 调用函数
a = input()        # 输入 5,默认为字符串'5'
b = input()        # 输入 3,默认为字符串'3'
print(type(a))     # 输出<class 'str'>,a的类型是字符串 
print(a + b)       # 输出 53,'+' 作用是将两个字符串拼接为一个字符串
print(a * int(b))    # 输出 555,'*' 作用是将字符串重复整数b次
def join():  # 定义函数,相当于给下面的代码段起个名字
    print(a + b)  # 输出 53,'+' 作用是将两个字符串拼接为一个字符串


if __name__ == '__main__':
    a = input()  # 输入 5,默认为字符串'5'
    b = input()  # 输入 3,默认为字符串'3'
    join()       # 调用函数

示例1.2 正整数a+b

a = input()          # 输入 5,默认为字符串'5'
b = input()          # 输入 10,默认为字符串'10'
c = int(a) + int(b)  # 转为整数做数学运算
print(a, b, sep='+', end='=')      # 5+10= ,用+分隔,用=结束,不换行
print(c)                           # 5+10=15,接上一条语句输出
print('{}+{}={}'.format(a, b, c))  # 5+10=15,格式化输出
print(f'{a}+{b}={c}')              # 5+10=15,格式化输出
a = int(input())        # 输入字符串'5',转整数5
b = int(input())        # 输入字符串'10',转整数10
c = a + b               # 整数做数学运算
print(a, b, sep='+', end='=')      # 5+10= ,用+分隔,用=结束,不换行
print(c)                           # 5+10=15,接上一条语句输出
print('{}+{}={}'.format(a, b, c))  # 5+10=15,格式化输出
print(f'{a}+{b}={c}')              # 5+10=15,格式化输出

为了提高程序的用户友好性,input()可以包含一些提示性的文字,提示性文字以双引号或单引号引起来放于input后的括号内,如:

print('请输入一个整数:', end='')  # 输出后不换行
a = input()                     # 上一行的输出后等待输入

a = input('请输入一个整数:')        # 输入字符串'5',转整数5
a = input('请输入一个整数:')         # 输入字符串'5',转整数5
b = int(input('请再输入一个整数:'))  # 输入字符串'10',转整数10
c = int(a) + b                      # 输入时未转类型的a转整数
print(a, '+', b, '=', c, sep='')    # 5+10=15
print('{}+{}={}'.format(a, b, c))   # 5+10=15,格式化输出
print(f'{a}+{b}={c}')               # 5+10=15,格式化输出

运行时屏幕上会看到 ‘请输入一个整数:’的提示,同时程序做好接收用户输入的准备。

6. 对象

Python中所有数字、序列、集合、映射、类、实例、异常、模块、类与类的实例、函数、方法、布尔值、空值等都被称为对象。

7. 对象属性

对象有3个基本属性:
类型(type)
身份标识(id)
值(value)
通过用“=”给对象附加一个名字(name),以方便在程序中通过这个名字引用该对象,称为赋值
赋值是指将一个对象或表达式的值传给一个标识符的操作。
两部分的操作:
一是将具体的对象存储在内存某地址处
二是将变量名与这个地址关联想来,相当于给这块内存区域绑定一个“标签”,以后就用标签(变量名)来访问这块内存中存储的对象。

只用一次的不必命名,直接引用对象;重复引用的才命名

user = input()                 # 输入 李华
print('当前用户为:', user)     # 当前用户为: 李华

print('当前用户为:', input())  # 输入 李华,输出:当前用户为: 李华

user = input()                           # 输入 李华
print('当前用户为:', user)               # 当前用户为: 李华
print(f'用户{user}的密码是:{"123456"}')  # 用户李华的密码是:123456

能力点3:工程规范

命名规范:规范的命名与合理的注释可增强程序的可读性和可维护性,方便协作开发。
格式规范:ctrl + alt + L
注释规范:批量 ctrl + /

8. 变量命名规范

使用单词及单词的组合作为变量名称,使其具有一定的意义,可提高程序的可读性和可维护性。

pi = 3.14                         # 圆周率
diameter = 4                      # 直径
area = pi * ((diameter / 2) ** 2) # 计算圆的面积

Python 变量的命名支持使用:
大小写字母、数字和下划线,且数字不能为首字符
常用的规范是用单词或下划线连接多个小写字母的单词作为变量名,如:number、id_check、get_birthday_by_id
关键字不能用做变量名
也不建议使用系统内置的模块名、类型名或函数名作为变量名。
pi = 3.14 # 圆周率
diameter = 4 # 直径
area = pi ((diameter / 2) 2) # 计算圆的面积时直径要除2
ls = [1, 2, 3, 4]
sum = 0
for i in ls:
sum = sum + i
print*
(sum) # 10

下面代码与上述代码处于同一文件中,因内置函数名sum变成变量名,触发异常
print(sum(ls)) # TypeError: ‘int’ object is not callable

ls = [1, 2, 3, 4]
sum = 0
for i in ls:
    sum = sum + i
print(sum)      # 10

print(sum(ls))  # TypeError: 'int' object is not callable

9. 注释

“#”号被用作单行注释符号,在代码中使用“#”时,他右边的任何数据都会被当作注释。在执行过程中,“#”号右边的内容被解释器忽略。单行注释可以独占一行,也可以放在一行代码的后面,使用至少两个空格和语句分开。
编程时应该在必要的地方加上单行注释:
(1) 自己不容易理解的代码处。
(2) 别人可能不理解的代码处。
(3) 提醒自己或者别人注意的代码等。

10. 输入输出相关内置函数

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

objects 打印输出至 file 指定的文本流,以 sep 分隔并在末尾加上 endsependfileflush 必须以关键字参数的形式给出。

input([prompt])¶

如果存在 prompt 实参,则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。当读取到 EOF 时,则触发 EOFError