暑假爆肝整理这篇python基础教程,全是干货,学完基础就过关(收藏加好评吧)(上)

简介: 暑假爆肝整理这篇python基础教程,全是干货,学完基础就过关(收藏加好评吧)

内容全干货,不说废话。代码讲解都在注释哦。希望挨个看着敲一遍,不要复制粘贴哦。

本基础分为十个部分:
1-数字
2-字符串
3-列表
4-控制流
5-函数
6-数据结构
7-模块
8-深层输入与输出
9-异常和错误
10-类
11-标准库简介
12-协程


为懒人准备,如果需要下载这些代码,本项目github链接下载即可:

https://github.com/89461561511656/Introduction-to-python3.9.git

为小白准备的交流群:

970353786

python爱好者准备的项目链接:qq机器人

https://www.cnblogs.com/aisisi/p/15055168.html

mysql数据库入门到精通学习链接:

https://blog.csdn.net/weixin_46211269/article/details/119086242?spm=1001.2014.3001.5501

第一部分:数字

"""
作者:川川
时间:2021/7/27
"""
#加减
# a=2
# b=2
# c=a-b
#d=a-b
# print(c,d)
#乘除
# a=(50-5*6)/4
# print(a)
# a=8/5
# print(a)
'''/返回为float,//返回整数,%返回余数'''
# a=17/3
# print(a)
# a=17//3
# print(a)
# a=5*3+2
# print(a)
'''幂运算  **'''
# a=4**2
# b=2**3
# print(a,b)

第二部分:字符串

"""
作者:川川
时间:2021/7/27
"""
'''单引号和双引号效果相同  反斜杠 \ 用于转义'''
# a='spam eggs'
# b='doesn\'t'
# c="\"Yes,\" they said."
# print(a)
# print(b)
# print(c)
'''如果不希望前置 \ 的字符转义成特殊字符,可以使用 原始字符串,在引号前添加 r '''
#比如说我们路径问题
# c=r'C:\some\name'
# print(c)
# print(r'C:\some\name')
'''三引号使用'''
# print("""\
# Usage: thingy [OPTIONS]
#      -h                        Display this usage message
#      -H hostname               Hostname to connect to
# """)
'''字符串可以用 + 合并(粘到一起),也可以用 * 重复'''
# a='how are '+'you'
# b='zhu'
# c=b*3
# print(a)
# print(c)
'''相邻的两个或多个 字符串字面值 (引号标注的字符)会自动合并'''
# a= 'Py'     'thon'
# print(a)
'''拆分长字符串'''
# text = ('Put several strings within parentheses '
#         'to have them joined together.')
# print(text)
    ######### 切片#########
'''字符串支持 索引 (下标访问),第一个字符的索引是 0。'''
# word = 'Python'
# print(word[0],word[2])
'''索引还支持负数,用负数索引时,从右边开始计数'''
# print(word[-1],word[-2])
# text='s'
# print(text[0])
'''除了索引,字符串还支持 切片。输出结果包含切片开始,但不包含切片结束'''
# print(word[0:2])
# print(word[0:5])
'''省略开始索引时,默认值为 0,省略结束索引时,默认为到字符串的结尾'''
# print(word[:2])
# print(word[4:])
# print(word[-2:])
'''切片会自动处理越界索引'''
# print(word[4:42])
# print(word[42:])
''' 字符串不能修改'''
# word[0] = 'J'#错误
'''要生成不同的字符串,应新建一个字符串'''
# z='J' + word[1:]
# print(z)
'''内置函数 len() 返回字符串的长度,一个空格也算一个长度'''
# s = 'supercalifragilisticexpia lidocious'
# print(len(s))

第三部分:列表

"""
作者:川川
时间:2021/7/27
"""
# squares = [1, 4, 9, 16, 25]
# print(squares)
'''支持索引和切片'''
# print(squares[1])
# print(squares[-1])
# print(squares[-3:])
'''列表还支持合并操作'''
# c=squares + [36, 49, 64, 81, 100]
# print(c)
'''列表内容可修改'''
# cubes = [1, 8, 27, 65, 125]
# cubes[3] = 64
# print(cubes)
'''append() 方法 可以在列表结尾添加新元素'''
# cubes.append(216)
# cubes.append(7 ** 3)
# print(cubes)
'''切片赋值可以改变列表大小,甚至清空整个列表'''
# letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# print(letters)
# letters[2:5] = ['C', 'D', 'E']
# print(letters)
# letters[2:5] = []
# print(letters)
# letters[:] = []
# print(letters)
'''内置函数 len() 也支持列表'''
# letters = ['a', 'b', 'c', 'd']
# print(len(letters))
'''还可以嵌套列表(创建包含其他列表的列表)'''
# a = ['a', 'b', 'c']
# n = [1, 2, 3]
# x = [a, n]
# print(x)
# print(x[0])#索取
# print(x[0][1])
#while
'''斐波纳契数列,使得每个数字是两个前述者的总和,选自0和1。'''
# a, b = 0, 1
# while a < 10:
#     print(a)
#     a, b = b, a + b
'''print'''
# i = 256*256
# print('The value of i is', i)
'''end 可以取消输出后面的换行, 或用另一个字符串结尾'''
# a, b = 0, 1
# while a < 1000:
#     print(a, end=',')
#     a, b = b, a + b

第四部分:控制流

"""
作者:川川
时间:2021/7/27
"""
'''if语句固定搭配'''
# x = int(input("Please enter an integer: "))
# if x < 0:
#     x = 0
#     print('Negative changed to zero')
# elif x == 0:
#     print('Zero')
# elif x == 1:
#     print('Single')
# else:
#     print('More')
'''if ... elif ... elif ... 序列看作是其他语言中 switch 或 case 语句的替代品。'''
'''for语句'''
# words = ['cat', 'window', 'defenestrate']
# for w in words:
#     # print(w, len(w))
''' range() 函数用于遍历数字序列'''
# for i in range(5):
#     print(i)
'''range包左不包右'''
# for i in range(5, 10):
#     print(i)
'''range 可以不从 0 开始,还可以按指定幅度range(起点,终点,步长)'''
# for i in range(0, 10, 3):
#     print(i)
# for j in range(-10, -100, -30):
#     print(j)
'''range() 和 len() 组合在一起,可以按索引迭代序列'''
# a = ['Mary', 'had', 'a', 'little', 'lamb']
# for i in range(len(a)):
#     print(i, a[i])
'''使用sum和range求连加和'''
# print(sum(range(5)))    #0 + 1 + 2 + 3+4
'''range 生成列表解决'''
# print(list(range(4)))
'''质数判断'''
#仔细看:else 子句属于 for 循环,不属于 if 语句。
# for n in range(2, 10):
#     for x in range(2, n):
#         if n % x == 0:
#             print(n, 'equals', x, '*', n // x)
#             break
#     else:
#         print(n, 'is a prime number')
'''continue 语句也借鉴自 C 语言,表示继续执行循环的下一次迭代:'''
# for num in range(2, 10):
#     if num % 2 == 0:
#         print("Found an even number", num)
#         continue
#     print("Found an odd number", num)
#pass
'''pass 语句不执行任何操作'''
# while True:
#     pass
'''下面这段代码创建了一个最小的类'''
# class MyEmptyClass:
#     pass
'''pass 还可以用作函数或条件子句的占位符'''
# def initlog(*args):
#     pass

第五部分:函数

"""
作者:川川
时间:2021/7/27
"""
'''def 定义函数  斐波那契数列函数'''
# def fib(n):
#     a, b = 0, 1
#     while a < n:
#         print(a, end=' ')
#         a, b = b, a + b
#     print()
# fib(100)    #传参
#返回列表
# def fib2(n):
#     result = []
#     a, b = 0, 1
#     while a < n:
#         result.append(a)
#         a, b = b, a + b
#     return result
# f100 = fib2(100)
# print(f100)
'''默认值在 定义 作用域里的函数定义中求值'''
# i = 5
# def f(arg=i):
#     print(arg)
# i = 6
# f()#输出5而不是6
'''默认值为列表、字典或类实例等可变对象时,会产生与该规则不同的结果。'''
# def f(a, L=[]):
#     L.append(a)
#     return L
# print(f(1))
# print(f(2))
# print(f(3))
'''不想在后续调用之间共享默认值时,应以如下方式编写函数'''
# def f(a, L=None):
#     if L is None:
#         L = []
#     L.append(a)
#     return L
# print(f(10))
# print(f(11))
"""关键字参数"""
# def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
#     print("-- This parrot wouldn't", action, end=' ')
#     print("if you put", voltage, "volts through it.")
#     print("-- Lovely plumage, the", type)
#     print("-- It's", state, "!")
# # parrot(5)
# '''该函数接受一个必选参数(voltage)和三个可选参数(state, action 和 type)'''
# parrot(1000)                                          # 1 positional argument
# parrot(voltage=1000)                                  # 1 keyword argument
# parrot(voltage=1000000, action='VOOOOOM')             # 2 keyword arguments
# parrot(action='VOOOOOM', voltage=1000000)             # 2 keyword arguments
# parrot('a million', 'bereft of life', 'jump')         # 3 positional arguments
# parrot('a thousand', state='pushing up the daisies')  # 1 positional, 1 keyword
'''*name 必须在 **name 前面'''
# def cheeseshop(kind, *arguments, **keywords):
#     print("-- Do you have any", kind, "?")
#     print("-- I'm sorry, we're all out of", kind)
#     for arg in arguments:
#         print(arg)
#     print("-" * 40)
#     for kw in keywords:
#         print(kw, ":", keywords[kw])
# cheeseshop("Limburger", "It's very runny, sir.",
#            "It's really very, VERY runny, sir.",
#            shopkeeper="Michael Palin",
#            client="John Cleese",
#            sketch="Cheese Shop Sketch")
'''some example'''
# def standard_arg(arg):
#     print(arg)
# def pos_only_arg(arg, /):
#     print(arg)
# def kwd_only_arg(*, arg):
#     print(arg)
# def combined_example(pos_only, /, standard, *, kwd_only):
#     print(pos_only, standard, kwd_only)
#来看看区别
#第一个对调用方式没有任何限制,可以按位置也可以按关键字传递参数
# print(standard_arg(2))
# print(standard_arg(arg=2))
#第二个  函数定义中有 /,仅限使用位置形参
# print(pos_only_arg(1))
# print(pos_only_arg(arg=1))#就会报错
#第三个 函数定义通过 * 表明仅限关键字参数
# print(kwd_only_arg(3))#就会报错
# print(kwd_only_arg(arg=3))
#第四个kwd_only_arg(arg=3)
# print(combined_example(1, 2, 3))#报错
# print(combined_example(1, 2, kwd_only=3))
# print(combined_example(1, standard=2, kwd_only=3))
# print(combined_example(pos_only=1, standard=2, kwd_only=3))#报错
'''加上 / (仅限位置参数)后,就可以了。此时,函数定义把 name 当作位置参数,'name' 也可以作为关键字参数的键'''
# def foo(name, /, **kwds):
#     return 'name' in kwds
# print(foo(1, **{'name': 2}))#返回tuue
# def foo(name, **kwds):
#     return 'name' in kwds
# print(foo(name=5))#返回false,实际这name没用到,所以哟弄个上面那个方法
'''解包实参列表'''
# print(list(range(3, 6)))
# args = [3, 6]
# print(list(range(*args)))#用 * 操作符把实参从列表或元组解包出来
'''字典可以用 ** 操作符传递关键字参数'''
# def parrot(voltage, state='a stiff', action='voom'):
#     print("-- This parrot wouldn't", action, end=' ')
#     print("if you put", voltage, "volts through it.", end=' ')
#     print("E's", state, "!")
# d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
# parrot(**d)
"""Lambda 表达式"""
'''lambda a, b: a+b 函数返回两个参数的和'''
# def make_incrementor(n):
#     return lambda x: x + n
# f = make_incrementor(42)
# print(f(0))
# print(f(1))

第六部分:数据结构

"""
作者:川川
时间:2021/7/27
"""
"""5.1 列表详解"""
# fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
'''
list.count(x)
返回列表中元素 x 出现的次数
'''
# print(fruits.count('apple'))
'''
list.index(x[, start[, end]])
返回列表中第一个值为 x 的元素的零基索引位置,第一个!
'''
# print(fruits.index('banana'))
# print(fruits.index('banana', 4,7))
'''
list.reverse()
反转列表中的元素。
'''
# fruits.reverse()
# print(fruits)
'''
list.append(x)
在列表末尾添加一个元素
'''
# fruits.append('grape')
# print(fruits)
'''
list.sort(*, key=None, reverse=False)
就地排序列表中的元素
'''
# fruits.sort()
# print(fruits)
'''
list.pop([i])
删除列表中指定位置的元素,并返回被删除的元素。未指定位置时,a.pop() 删除并返回列表的最后一个元素。
'''
# fruits.pop()#默认删除最后一个
# print(fruits)
# fruits.pop(0)#删除第一个
# print(fruits)
'''
list.copy()
返回列表的浅拷贝,复制
'''
# fruits.copy()
# print(fruits)
'''
list.clear()
删除列表里的所有元素,相当于 del a[:] 。
'''
# fruits.clear()
# print(fruits)
'''
list.remove(x)
从列表中删除第一个值为 x 的元素。未找到指定元素时,触发 ValueError 异常。
'''
# fruits.remove('apple')
# print(fruits)
'''
list.insert(i, x)
在指定位置插入元素。第一个参数是插入元素的索引,因此,a.insert(0, x) 在列表开头插入元素
'''
# fruits.insert(1, 'nana')
# print(fruits)
'''用列表实现堆栈'''
'''
特点:“后进先出” 把元素添加到堆栈的顶端,使用 append() 。从堆栈顶部取出元素,使用 pop() ,不用指定索引。
'''
# stack = [3, 4, 5]
# stack.append(6)
# stack.append(7)
# print(stack)
# stack.pop()
# print(stack)
# stack.pop()
# print(stack)
'''用列表实现队列'''
'''特点:“先进先出” 实现队列最好用 collections.deque,可以快速从两端添加或删除元素'''
# from collections import deque
# queue = deque(["Eric", "John", "Michael"])
# queue.append("Terry")
# queue.append("Graham")
# print(queue)
# print(queue.popleft())#第一个
# print(queue.popleft())#第二个
# print(queue)
''''列表推导式'''
'''创建平方值的列表'''
# squares = []
# for x in range(10):
#     squares.append(x ** 2)
# print(squares)
# b=squares = [x**2 for x in range(10)]
# print(b)
# a=squares = list(map(lambda x: x**2, range(10)))
# print(a)#同上
'''列表推导式将两个列表中不相等的元素组合起来'''
# a=[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# print(a)
'''等价如下'''
# combs = []
# for x in [1,2,3]:
#     for y in [3, 1, 4]:
#         if x != y:
#             combs.append((x, y))
# print(combs)
'''some example'''
# vec = [-4, -2, 0, 2, 4]
# print([x*2 for x in vec])
# print([x for x in vec if x >= 0])
# print([abs(x) for x in vec])#abs求绝对值
# freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
# a=[weapon.strip() for weapon in freshfruit]
# print(a)
'''!!!!表达式是元组(例如上例的 (x, y))时,必须加上括号'''
# b=[(x, x**2) for x in range(6)]
# print(b)
'''列表推导式可以使用复杂的表达式和嵌套函数'''
# from math import pi
# a=[str(round(pi, i)) for i in range(1, 6)]
# print(a)
'''嵌套的列表推导式'''
# matrix = [
# [1, 2, 3, 4],
# [5, 6, 7, 8],
# [9, 10, 11, 12],
#     ]
# a=[[row[i] for row in matrix] for i in range(4)]
# print(a)
#等价如下
# transposed = []
# for i in range(4):
#     transposed.append([row[i] for row in matrix])
# print(transposed)
'''5.2del 语句 移除元素'''
# a = [-1, 1, 66.25, 333, 333, 1234.5]
# del a[1]
# print(a)
# del a[2:4]
# print(a)
# del a[:]
# print(a)
'''del 也可以用来删除整个变量'''
# del a[:]
# print(a)
'''5.3元组和序列'''
'''元组由多个用逗号隔开的值组成'''
# t = 12345, 54321, 'hello!'#输入时,圆括号可有可无,不过经常是必须的
# print(t[0])
# print(t)    #输出时,元组都要由圆括号标注,这样才能正确地解释嵌套元组
# empty = ()
# singleton = 'hello',    #注意不加逗号就成了字符串了
# print(len(empty))
# print(len(singleton))
# print(singleton)
'''5.4集合'''
'''创建空集合只能用 set(),不能用 {},{} 创建的是空字典'''
# basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
# print(basket)
# print('orange' in basket)
# a = set('abracadabra')
# b = set('alacazam')
# print(a)
# print(a-b)
# print(a|b)#并集  letters in a or b or both
# print(a & b)#交集  etters in both a and b
# print( a ^ b)# # letters in a or b but not both
'''集合也支持推导式'''
# a = {x for x in 'abracadabra' if x not in 'abc'}
# print(a)
'''5.5字典'''
# tel = {'jack': 4098, 'sape': 4139}
# tel['guido'] = 4127 #添加
# print(tel)
# print(tel['jack'])#索取
# del tel['sape']
# tel['irv'] = 4127
# print(tel)
# print(list(tel))#转换为列表
# print('guido' in tel)
'''dict() 构造函数可以直接用键值对序列创建字典'''
# a=dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
# print(a)
# print(a['sape'])
'''字典推导式可以用任意键值表达式创建字典'''
# a={x: x**2 for x in (2, 4, 6)}#lamda
# print(a)
'''关键字是比较简单的字符串时,直接用关键字参数指定键值对更便捷'''
# c=dict(sape=4139, guido=4127, jack=4098)
# print(c)
# print(c['jack'])
'''5.6循环的技巧'''
'''在字典中循环时,用 items() 方法可同时取出键和对应的值'''
# knights = {'gallahad': 'the pure', 'robin': 'the brave'}
# for k, v in knights.items():
#     print(k,v)
'''在序列中循环时,用 enumerate() 函数可以同时取出位置索引和对应的值'''
# for i, v in enumerate(['tic', 'tac', 'toe']):
#     print(i,v)
'''同时循环两个或多个序列时,用 zip() 函数可以将其内的元素一一匹配'''
# questions = ['name', 'quest', 'favorite color']
# answers = ['lancelot', 'the holy grail', 'blue']
# for q, a in zip(questions, answers):
#     print('What is your {0}?  It is {1}.'.format(q, a))#0和1只是占位,不起作用,可以空着
'''逆向循环序列时,先正向定位序列,然后调用 reversed() 函数'''
# for i in reversed(range(1, 10, 2)):
#     print(i)
'''按指定顺序循环序列,可以用 sorted() 函数,在不改动原序列的基础上,返回一个重新的序列'''
# basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
# for i in sorted(basket):
#     print(i)
'''使用 set() 去除序列中的重复元素。使用 sorted() 加 set() 则按排序后的顺序,循环遍历序列中的唯一元素'''
# basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
# for f in sorted(set(basket)):
#     print(f)
'''一般来说,在循环中修改列表的内容时,创建新列表比较简单,且安全'''
# import math
# raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
# filtered_data = []
# for value in raw_data:
#     if not math.isnan(value):
#         filtered_data.append(value)
# print(filtered_data)#筛选出数字
'''5.7. 深入条件控制¶'''
'''布尔运算符 and 和 or 也称为 短路 运算符:其参数从左至右解析,一旦可以确定结果,解析就会停止。'''
# string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
# non_null = string1 or string2 or string3
# print(non_null)#返回一个值
相关文章
|
27天前
|
JSON C语言 C++
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
60 1
|
27天前
|
存储 安全 API
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
73 0
|
27天前
|
存储 算法 数据挖掘
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
50 0
|
27天前
|
存储 机器学习/深度学习 数据安全/隐私保护
【Python 基础教程 24】全面入门Python面向对象编程:深度探索与实战教程
【Python 基础教程 24】全面入门Python面向对象编程:深度探索与实战教程
76 0
|
27天前
|
Linux 数据库连接 C++
【Python 基础教程 23】Python3 错误与异常处理全面指南:从入门到精通的实用教程
【Python 基础教程 23】Python3 错误与异常处理全面指南:从入门到精通的实用教程
104 0
|
27天前
|
监控 API C语言
【Python 基础教程 22】全面揭秘Python3 os模块:从入门到高级的实用教程指南
【Python 基础教程 22】全面揭秘Python3 os模块:从入门到高级的实用教程指南
60 1
|
27天前
|
存储 前端开发 C++
【Python 基础教程 09】全面掌握Python3列表:从入门到精通的综合教程与实战指南
【Python 基础教程 09】全面掌握Python3列表:从入门到精通的综合教程与实战指南
88 1
|
27天前
|
JSON C++ 数据格式
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
85 0
|
27天前
|
机器学习/深度学习 数据采集 C++
【Python 基础教程 07】全面掌握Python3数字操作:入门到精通的实用指南
【Python 基础教程 07】全面掌握Python3数字操作:入门到精通的实用指南
84 2
|
27天前
|
算法 程序员 C++
【Python 基础教程 运算符06】Python3运算符超详细解析:全面入门教程,初学者必读
【Python 基础教程 运算符06】Python3运算符超详细解析:全面入门教程,初学者必读
90 2

热门文章

最新文章