《Python编程:从入门到实践》知识总结

今天开始学习Python,在去年暑假实践课的时候,就用到了Python,但当时就只是用了那么一丁点儿知识,并没有了解的太深。所以趁着这个寒假,学习一下Python的基础知识吧!

以下所有的知识点都是基于Python 3的

(1)变量和简单数据类型

变量

  • 如果有c、c++、java 任意一门语言的基础的话,命名的注意事项应该没有问题,毕竟都是差不多的。
  • 但Python对于多个单词的变量命名时,更习惯用“_”来连接,好吧,我不太适应!

数据类型

  • 字符串:和Java或者c++里面的字符串差不多,只不过Python里面用 “ ” 、‘ ’ 都是可以的。python里面可以用'''或者"""来表示可以换行的字符串

    1
    2
    3
    4
    5
    6
    7
    8
    str = """
    黄鹤楼
    昔人已乘黄鹤去,此地空余黄鹤楼。
    黄鹤一去不复返,白云千载空悠悠。
    晴川历历汉阳树,芳草萋萋鹦鹉洲。
    日暮乡关何处是,烟波江上使人愁。
    """
    print(str)

    打印结果

  • 下面是Python中字符串的一些常见操作

    Python中可以通过 ‘==’ 直接判断字符串相等。

1
2
3
4
5
6
7
8
9
10
str.title()   	#以字符串大写的方式显示每个单词,例如 hello world --> Hello World
str.upper() #字符串改为全部大写
str.lower() #字符串改为全部小写
str = 'hello' + 'world' #拼接字符串,与Java一样
str.rstrip() #删除字符串末尾的空白
str.lstrip() #删除字符串开头的空白
str.strip() #同时删除字符串两端的空白

number = 23
str(number) #将数字转换为字符串
  • 数字:加(+)、减(-)、乘(*)、除(/)、乘方(**)、取模运算(%)、向下取整除法(//

    3 ** 4 就是3的4次方

  • 小数:Python将带小数点的数字都成为浮点数,以下是三种浮点类型:

    float存放双精度浮点类型,这与Java不同

    复数(complex)存放一对浮点数,一个表示实数,一个表示虚数,如:3.5+2j

    1
    2
    x = 1 + 2j
    print(x.real, x.imag)

    decimal.Decimal:比float更精确,但是比浮点数的计算较慢。

  • 交换变量的值

    1
    2
    3
    x = 3
    y = 5
    y,x = x, y

(2)列表

  • 列表有一系列按特定的顺序排列的元素组成,其中的元素之间并无特定的关系,其内可以包括各种类型的元素。

  • 列表的命名通常取复数,如books、flowers、colors…

  • 列表用 [] 初始化

    1
    2
    colors = ['red','blue','green']
    print(colors) #打印列表
  • 访问列表元素:

    1
    print(colors[0])	#类似数组,以索引的方式访问
  • 列表的增删改:

    1
    2
    3
    4
    5
    6
    7
    colors[0] = 'yello'		#与数组的修改一样
    colors.append('black') #在列表末尾添加元素
    colors.insert(0,'black') #在指定的索引位置添加元素,其后的元素都要右移一个位置
    del colors[0] #删除元素
    colors.remove('red') #根据值删除元素,只删除第一个指定的值,有多个值时利用循环判断是否删除了所有指定的值
    color = colors.pop() #类似于栈,弹出栈顶元素
    color = colors.pop(2) #弹出指定索引位置的元素
  • 组织列表:

    1
    2
    3
    4
    5
    6
    7
    8
    #永久的排序,colors内的元素顺序改变了
    colors.sort() #将元素按字母顺序排列
    colors.sort(reverse = True) #按与字母顺序相反的顺序排列
    colors.reverse() #翻转列表元素的排列顺序
    #临时修改
    print(colors.sorted()) #临时排序,列表内的元素的原始顺序还在,也可以传递参数reverse = True

    len(colors) #确定列表的长度

(3)操作列表

  • 遍历列表

    1
    2
    3
    colors = ['red','blue','yello']
    for color in colors: #类似Java中的foreach循环
    print(color)

    Python依靠缩进来判断代码之间的关系,所以一定要注意缩进

  • 创建数值列表,Python利用range()函数生成一系列的数字,结合list()可以生成数字列表

    1
    2
    3
    4
    numbers = list(range(1,4)) 	#numbers=[1,2,3]
    min[numbers] #数字列表的最小值
    max[numbers] #数字列表的最大值
    sum[numbers] #数字列表的数字之和
  • 切片——列表中的部分元素

    1
    2
    3
    4
    5
    6
    numbers = [1,2,3,4,5,6]
    sub_numbers = numbers[0:3] #sub_numbers=[1,2,3]
    sub_numbers = numbers[:3] #不指定第一个数字,从头开始 sub_numbers=[1,2,3]
    sub_numbers = numbers[3:] #不指定第二个数字,从3到尾 sub_numbers=[4,5,6]
    sub_numbers = numbers[-3:] #从结尾开始数 sub_numbers = [4,5,6]
    sub_numbers = numbers[:] #复制列表
  • 元组——不可变的列表

    • 定义元组:使用 ( ) 定义
    • 元组除了内容不可修改,其他的与列表几乎相同
    • 元组内的元素虽然不可修改,但是可以通过给储存元组的变量重新复制来重定义元组

(4)if语句

  • 与Java的其实没啥太大的区别,不同之处大概就是没括号吧

    1
    2
    3
    temp = 'red'
    if temp == 'red': #if temp != 'red':
    print(temp)
  • 检查多个条件 :and(与)、or(或)

  • 关键字 in 可以检测特定值是否在列表中,not in检测特定值是否在列表中

  • 布尔表达式:True、False

  • if语句

    • if语句
    • if-else语句
    • if-elif-else语句
    • 含多个elif的判断语句
    • 省略else的判断语句
  • 确定列表是否为空

    1
    2
    3
    4
    5
    colors = []
    if colors:
    #列表不为空
    else:
    #列表为空

(5)字典

  • 字典是一系列键值对。可以使用键来访问对应的值,可将任何Python对象用作字典中的值

  • 访问字典内的值:

    1
    2
    3
    alien =	{'color': green}
    print(alien['color'])
    # >>green
  • 添加键值对:

    1
    2
    alien = {'color': green}
    alien['size'] = 10 #添加键值对size = 10
  • 创建字典:用花括号 ‘{}’ 来定义

  • 修改键值对的值:

    1
    alien['color'] = red			#直接改
  • 删除键值对:

    1
    del alien['color']
  • 遍历

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for key, value in alien.items():
    print(key + " " + value) #遍历所有键、值

    for key in alien.keys():
    print(key)

    for key in sorted(alien.keys()) #按字母顺序遍历字典的键
    print(key)

    for value in alien.values():
    print(value) #遍历所有值
  • 嵌套

    • 字典中嵌套列表
    • 列表中嵌套字典
    • 字典中嵌套字典

    这个感觉很像 json

(6)用户输入和while循环

  • input()函数阻塞程序,等待用户输入数据

    1
    2
    message = input('please input your student number')
    print(message)
  • int()函数将字符串转换为数值类型的值

  • while循环:

    1
    2
    3
    while number <= 5:
    print(number)
    number += 1
  • 使用标志值

    1
    2
    3
    4
    5
    6
    7
    8
    active = True
    while active:
    message = input('输入数字,输入“quit”退出程序')

    if message = 'quit':
    active = False
    else:
    print(message)
  • 使用break退出循环和用continue跳出一次循环与Java一样

  • 使用while循环删除包含特定值的所有列表元素

    1
    2
    3
    4
    5
    colors = ['red', 'green', 'yello', 'blue', 'red', 'red']
    while 'red' in colors:
    colors.remove('red')

    print(colors)

(7)函数

  • Python 使用关键字 ‘def’ 定义函数

    1
    2
    def greet_usr():
    print('hello!')
  • 向函数传递参数,Python 的变量不用声明类型

    1
    2
    3
    4
    def greet_user(message):
    print(message)

    greet_user('hello') #调用函数
  • 传递实参

    1
    2
    3
    4
    5
    def temp_fun(number, age, name):
    #

    temp_fun(1, 23, 'Bob') #位置实参,实参位置与形参位置相对应
    temp_fun(number=1, name='Bob', age=23) #关键字实参,与位置无关
  • 默认值

    1
    2
    3
    4
    def temp_fun(type='dog', age, name):
    #

    temp_fun(age='3', name='Bob') #此时type的值为‘dog’
  • 函数返回值,return关键字返回函数返回值,可以返回各种类型,与Java一样

  • python中字典也是一种类型,也可以传递给函数

  • python中将列表传给函数后,函数修改的就是这个列表,会直接修改它的值,如果不想函数修改列表,向函数传递列表的复制值即可

    1
    2
    3
    4
    def temp(colors):
    #

    temp(colors[:]) #向将列表复制一下,在传递给函数
  • 传递任意数量的实参

    1
    2
    3
    def temp(*colors):
    print(colors) #*color便可以实现
    temp('red','blue') #temp('red','blue', 'yello')
  • 将函数储存在模块中,一个模块就是一个 .py 文件, 将相关联的函数或者类写在一个文件中,便是在一个模块中。

    1
    2
    3
    4
    imprt module		#导入整个模块
    from module import test_fun #导入某个函数
    from module import test_fun as tf #使用as关键字起别名
    from module import * #导入所有的函数

(8)类

  • Python中使用关键字class创建类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Dog():
    def __init__(self, name, age): #__init__()函数是每个类的初始化函数,创建实例时将自动调用
    self.name = name
    self.age = age
    self.type = 'dog' #给属性指定默认值

    def sit(self): #类中的函数中,必须有self这个参数
    print(self.name + ', sit down')

    def update_age(self, new_age): #修改属性的值
    self.age = age

    my_dog = Dog('Bob', 3) #实例化
    my_dog.sit() #调用方法
  • 继承,python中的继承需要调用父类的__init()__函数

    1
    2
    3
    4
    5
    6
    7
    class Sub_Dog(Dog):
    def __init__(self, name, age):
    super().__init__(name, age)
    self.new_attribute = 'test' #给子类添加新属性

    def sit(self):
    print('重写父类的方法')
  • python导入类与之前函数导入模块一样

(9)文件和异常

  • 读取整个文件

    1
    2
    3
    with open('test.txt') as file_object:	#关键字with在不需要文件后将其关闭
    contents = file_object.read()
    print(contents)
  • 逐行读取

    1
    2
    3
    with open('test.txt') as file_object:
    for line in file_object:
    print(line)
  • 创建一个逐行读取的列表

    1
    2
    with open('test.txt') as file_object:
    lines = file_object.readlines()
  • 写入文件

    • 写入空文件

      1
      2
      3
      filename = 'test.txt'
      with open(filename, 'w') as file_object:
      file.object.write("Hello World")

      打来文件时,可指定读取模式(’r’)、写入模式(‘w’)、附加模式(‘a’)、能够读取和写入的模式(‘r+’)

      以写入模式打开文件,如果指定文件已经存在,将清空该文件

    • 附加到文件

      1
      2
      3
      filename = 'test.txt'
      with open(filename, 'a') as file_object:
      file.object.write("Hello World.\n") #内容将附加到末尾
  • 异常。使用try-except处理异常

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try:
    print(5/0)
    except ZeroDivisionError: #类似于Java的try-catch
    print("You can't divide by zero!")


    #使用else
    try:
    answer = first_number/second_number
    except ZeroDivisionError:
    print("You can't divide by zero!")
    #pass 关键字pass会直接忽略发生的这个异常,使程序表面上似乎没发生问题
    else:
    print(answer) #处理程序正常运行时的操作
  • 使用json格式存储数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import json

    numbers = [0,1,2,3,4,5,6]
    filename = 'vales.json'
    with open(fileaname,'w') as file_object:
    json.dump(numbers, file_object)

    -----------------------------------------------------------------
    with open(fileaname) as file_object:
    numbers = json.read(file_object) #读取json文件中的数据

    print(numbers)
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信