暑假爆肝整理这篇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)#返回一个值
相关文章
|
12天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
42 8
|
12天前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
33 7
|
12天前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
37 4
|
12天前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
32 5
|
1月前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之 Scipy 显著性检验第9部分,介绍了显著性检验的基本概念、作用及原理,通过样本信息判断假设是否成立。着重讲解了使用scipy.stats模块进行显著性检验的方法,包括正态性检验中的偏度和峰度计算,以及如何利用normaltest()函数评估数据是否符合正态分布。示例代码展示了如何计算一组随机数的偏度和峰度。
29 1
|
1月前
|
BI Python
SciPy 教程 之 Scipy 显著性检验 8
本教程介绍SciPy中显著性检验的应用,包括如何利用scipy.stats模块进行显著性检验,以判断样本与总体假设间的差异是否显著。通过示例代码展示了如何使用describe()函数获取数组的统计描述信息,如观测次数、最小最大值、均值、方差等。
29 1
|
1月前
|
数据采集 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的基础教程
【10月更文挑战第41天】本文旨在为初学者提供一个关于如何使用Python语言进行数据分析的入门指南。我们将通过实际案例,了解数据处理的基本步骤,包括数据的导入、清洗、处理、分析和可视化。文章将用浅显易懂的语言,带领读者一步步掌握数据分析师的基本功,并在文末附上完整的代码示例供参考和实践。
|
1月前
|
Python
SciPy 教程 之 Scipy 显著性检验 6
显著性检验是统计学中用于判断样本与总体假设间是否存在显著差异的方法。SciPy的scipy.stats模块提供了执行显著性检验的工具,如T检验,用于比较两组数据的均值是否来自同一分布。通过ttest_ind()函数,可以获取两样本的t统计量和p值,进而判断差异是否显著。示例代码展示了如何使用该函数进行T检验并输出结果。
30 1
|
1月前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
37 1
|
1月前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 插值 2
SciPy插值教程:介绍插值概念及其在数值分析中的应用,特别是在处理数据缺失时的插补和平滑数据集。SciPy的`scipy.interpolate`模块提供了强大的插值功能,如一维插值和样条插值。通过`UnivariateSpline()`函数,可以轻松实现单变量插值,示例代码展示了如何对非线性点进行插值计算。
27 3