我的Python是在VS里面下载的3.7.8版本。
然后用学校的邮箱嫖了一个教育版的PyCharm。
然后就开始了。
遇到的问题:
①使用VS安装的Python是没有配置环境变量的,首先要配置环境变量。
此电脑-属性-高级系统设置-环境变量
新建俩值:
变量名PYTHON 值是python的安装目录。VS的安装目录在C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64
变量名PYTHON_SCRIPT 值是python目录里对应的Scripts文件夹。C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\Scripts
然后在path里面加上%PYTHON%和%PYTHON_SCRIPT%
全部完成后保存。
如果在cmd敲python验证的时候弹出微软商店,请删除这两个文件:
C:\Users\你的用户名\AppData\Local\Microsoft\WindowsApps\python.exe C:\Users\你的用户名\AppData\Local\Microsoft\WindowsApps\python3.exe
然后在cmd里面敲python就可以看到>>>了。
还不快把第一个HelloWorld写上!
print("Hello World")
print里面可以有多个内容,用逗号,隔开。逗号会代表一个空格。
然后看一下python之禅
import this
——————————————
IDLE有交互模式和编辑器模式(编辑器模式新建文件即可)
Alt + P 上一句代码
Ctrl + C 强制停止
Shift + Tab 批量往后移动一个缩进(需要选中)
——————————————
以下是根据慕课网https://www.imooc.com/learn/1261学习的内容笔记:
前两章讲的是简介、安装和环境配置,这里不再赘述。
一些例题已在Githhub上记录:https://github.com/Zhaokugua/MOOC_1261_Eamples
第3章 Python变量和数据类型
Python3居然可以使用中文作为变量名了!!!!
python赋值时可以写 x = y = 3 ,不像C语言那样会报错
交换两个变量的值除了多一个临时变量,还可以这样写:x , y = y , x
3-1 基础数据类型。
整数。十进制整数、0b开头的二进制整数、0x开头的十六进制整数
浮点数(小数)。浮点数有误差,如0.1+0.2输入到python会显示0.30000000000000004。科学计数法:1.23e-1就是0.123
有误差的原因:跟C语言一样,浮点数采用IEEE754的标准存储,所以会产生一定精度上的误差
精确计算浮点数:使用decimal(十进制)模块。
import decimal a = decimal.Decimal('0.1') b = decimal.Decimal('0.2') print(a + b) #==》0.3
字符串。用单引号''或双引号""括起来的内容。
布尔值。True False 可以用and、or、not进行布尔运算。
空值。None 和0不同。
3-2 定义变量的方法。
名称由大小写英文字母、数字和下划线组成。不能用数字开头,不能占用关键字。a=1 hello=‘Hello’
在python中,一个变量可以先后存储多种不同的类型。所以属于动态语言。
3-3 整数与浮点数。
Python的整数长度不受限制!!!!
四则运算:整数和浮点数可以进行四则运算。
需要注意,python2和python3的除法不同。python2的除法类似于C语言的除法,10/3=3,而python3中10/3=3.3333333333333335
取模运算: 使用%,与C语言类似。
地板除:向下保留整数部分。 10//4=2 10//2.5=4.0
注意:-3 // 2 = -2 因为地板除是向下保留整数部分(向下取整),而不是直接忽略小数部分!
小数点位数保留:使用round函数。如round(3.33333,2)=3.33
注意:round函数会四舍五入!
3-4 布尔型
逻辑运算符(布尔运算):and 与运算 or 或运算 not 非运算(优先级较高)
注意:0、0.0、0j(复数)、空字符串、空的序列或集合、None都会被看成False,其它数值和非空字符串都会看成True,哪怕字符串里面是空格,他也是True!
如True and 0会输出0 0 or 99会输出99
Python可以对任意数据类型进行布尔运算。如'A' and 'B' = 'B' 'A' or 'B' = 'A'
短路运算:和C语言的逻辑短路类似。如果多个条件第一个或前n个中第一个就能决定整个表达式的真假,就会忽略后面判断的执行。
比如:
>>> '喵喵' or '旺旺'
'喵喵'
>>> '旺旺' and '喵喵'
'喵喵'
3-5 字符串
字符串可以用单引号''或双引号""引起来。
如果字符串中包含双引号可以用单引号在外面引起来,如果字符串中包含双引号可以用单引号在外面引上。
如果两个都包含,可以使用转义字符\ 如\' \" \n换行符 \t制表符 \\表示\本身 与C语言类似
字符串可以用加法进行拼接。如"1" + "1" = "11"
可以用乘法进行复制。如"1" * 5 = "11111"
3-6 Raw字符串与多行字符串
如果一个字符串包含很多需要转义的字符,可以在前面加上r,这样就不需要转义了。但是r'…'不能表示多行字符串,也不能表示带有单引号或双引号的。
表示多行字符串可以用'''这里输入内容,可以是多行'''来表示。这种表示方法和\n换行是一样的作用。多行字符串前也可以加r
一行中最后加一个\表示没完
三个双引号或单引号:长字符串(不需要每行末尾都加\)
3-7 字符串模板(字符串Format)
字符串format由两个部分构成。字符串模板和模板数据内容,通常用大括号括起来。
temple="hello{}" result=temple.format("world") 会输出helloworld
大括号里面可以写数字用来排序。
template = 'Hello {3}, Hello {2}, Hello {1}, Hello {0}.' result = template.format('World', 'China', 'Beijing', 'imooc') print(result) # ==> Hello imooc, Hello Beijing, Hello China, Hello World.
还可以写名字
# 指定{}的名字w,c,b,i template = 'Hello {w}, Hello {c}, Hello {b}, Hello {i}.' world = 'World' china = 'China' beijing = 'Beijing' imooc = 'imooc' # 指定名字对应的模板数据内容 result = template.format(w = world, c = china, b = beijing, i = imooc) print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.
或许就是类似于C语言里面的格式化输出,只不过更方便了:
print('name = {}, score = {}'.format(name, score))
3-8 字符串编码
python2的编码比较复杂,需要指出是Unicode字符串才能使用。python3默认使用UTF-8 Unicode编码。
编码转换:
str转bytes:bytes1 = str1.encode(编码名称,如'utf-8' 'gbk' )
bytes转str:str2 = str2.decode(编码名称,如'utf-8' 'gbk' )
3-9 字符串切片
s = 'ABC' 则 s[0]='A' s[0:2] = 'AB'
填负数则倒序取。如s[-1] = 'C'
越界切片得不到任何东西。
字符串中替换特定字符:str1.replace('被替换的东西','被替换成的东西')
第4章 Python语言的控制流程
4-1 if语句
if语句最后有个冒号,冒号后是分支代码块。python有严格的缩进。一般使用4个空格。
运算符和C语言类似。< <= > >= == != is is not(判断对象id)
if score < 60:
print("抱歉,考试不及格")
4-2 if-else语句
与C语言不同的是,else后面也要加冒号。
4-3 if-elif-else语句
elif相当于C语言中的else if()。区别同样是其后加冒号。
if语句的高级(简便用法):
例:print('喵') if a > 2 else print('旺')
>>> a = 1 >>> print('喵') if a > 2 else print('旺') 旺 >>> a = 3 >>> print('喵') if a > 2 else print('旺') 喵可以把多重if-elif-else语句改写。
if-elif- else语句:
score = 70 if 0 <= score < 60: level = 'D' elif 60 <= score < 80: level = 'C' elif 80 <= score < 90: level = "B" elif 90 <= score < 100: level = "A" elif score == 100: level = "S" else: level = "抱歉,请输入0~100的数!" print(level)改写后:
>>> score = 66 >>> level = ('D' if 0 <= score < 60 else 'C' if 60 <= score <80 else 'B' if 80 <= score <90 else 'A' if 90 <= score <100 else 'S' if score == 100 else "请输入0~100之间的数!") #括号表示语句一行没有写完,换成多行写。这里写成多行是为了看起来比较美观 >>> print(level) C
4-4 for循环
for x in X: 每次循环把X中的第n个元素赋给x,直到最后一位。【注意缩进】
X可以是字符串,也可以是数组。X是一种可迭代对象。
for循环经常和range()连用。
range的三种用法:range:快速创建一个整数列表
1.range(stop) 从0到stop依次取整数。 区间表示: [0,5)
2.range(start,stop) 从start到stop依次取整数 区间表示:[start,stop)
3.range(start,stop,step)从start到stop依次以指定的步径跨度step取整数。step可以是负数,如range(6,1,-1)
4-5 while循环
while True:
4-6 break跳出循环
与C语言的break类似。
4-7 continue继续循环
与C语言的continue类似。
4-8 嵌套循环结构
与C语言类似。
第5章 Python的List容器
5-1 容器与List
Python中,容器包括列表(list)、元组(tuble)、字典(dict)、集合(set)等。
list是一种有序容器,用[]把元素括起来就定义了一个列表。
注意:不要与C语言的数组混淆!不要把[]写成{}!!!
字符串元素需要用引号。
由于python是动态语言,list里面可以放任意类型的数据。
可以直接把List打印下来。
求list的长度:len(list)
5-2 按顺序访问List
使用for循环访问。
5-3 按索引访问List
每一个元素的位置称为索引(index),通过[]访问对应位置的元素。
不能越界访问,否则会报错。
数值排序:List1.sort(reverse = True) 后面的reverse = True表示从大到小排序
5-4 倒序访问list
与字符串切片的倒序类似。注意不要越界。
5-5 向List添加新元素
方法一:List1.append(这里加想添加的元素)
这种方法总是把新元素添加到尾部。
方法二:List1.insert(位置,元素)
插入到某一个位置后,其后的原来的元素都会向后移。
5-6 从List删除元素
List1.pop()
返回删除的元素。括号填位置。不填默认为最后一个。
注意:删除中间一个元素时,后面的序号也都会变!
5-6 替换List中的元素
可以利用赋值List1[2]='新元素'
5-7 二维List
与C语言的二维数组类似。
不过定义时可以套数组。List_all=[List1,List2,List3]
第六章 Tuble容器
6-1 什么是Tuple?
Tuple(元组)与List一样,也是一个有序容器。也支持索引访问、切片等操作。定义使用()括起来。
注意:访问、切片时还是使用[]进行访问!!
元组(Tuple)和列表(List)是可以互相转化的。List1 = list(元组) Tuble1 = tuble(列表)
二者不同点:tuble是不变的,不可以进行添加、删除和修改等操作。(仅限于基础数据类型,详见6-4)
元组(Tuple)的运行效率是列表(List)的数倍!
6-2 访问Tuple元素的其它方法
一、.count()方法。统计tuple中某元素(填在括号里)出现的次数。不存在回返回0。
二、.index()方法。返回指定元素(填在括号里)的下标。多次出现则返回第一个。不存在会报错。
6-3 创建单个元素的tuple
空tuple:()
包含一个元素的tuple:(1,)
注意:由于python中用于优先运算的小括号和tuple相同,因此定义一个元素的tuple不能直接写成(1),这样写的话就是一个整数变量1了。
6-4 可变tuple
之前说的tuple不可变,针对的是仅包含基础数据类型(数字类型、布尔类型、字符串类型)的数据,对于组合数据类型,则不受这个约束。
修改tuple中的list中的某个元素后(注意只是其中的某个元素,全部修改是不行的),tuple中list的数据也会改变。
T = (1, 'CH', [3, 4]) L = T[2] print(L) # ==> [3, 4] # 尝试替换L中的元素 L[1] = 40 print(L) # ==> [3, 40] print(T) # ==> (1, 'CH', [3, 40])
第七章 dict容器
dict相当于一个方便的映射。在dict中,每一项包含一个key和一个value,key和value是一一对应的。使用花括号{}表示这是一个dict,每一组key和value中间用冒号:分隔,组与组之间用逗号,分隔。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49 }
也可以定义一个空dict d = dict() (自己实测好像d = {}也是可以的)
空dict可以调用函数往里面添加数据。
7-2 读取dict元素
方法一:可以通过key查询value d[key] #==》value
当key不存在时,也会引发错误。因此通过key查找value时一定要先进行判断,避免错误。
if 'key' in d:
方法二:d.get('key') key不存在时不会报错,而是返回None
一般推荐使用get方法获取dict元素。
使用keys()方法可以返回dict所有的key
7-3 添加dict元素
可以随时向dict中添加新的key-value
d[key] = Value Value可以是任意类型的元素,可以是list、tuple等。
d[key].append() 可以这样使用方法,添加list中的数据。
7-4 更新dict元素
上述的赋值语句有两个功能。当key不存在时就添加,当key存在时就拿新的替换,也就是更新。
7-5 删除dict元素
可以使用pop()方法。d.pop('key') 返回key对应的Value
key不存在时,同样会引发错误。
所以也要加一个判定 if 'key' in d.keys()
7-6 dict的特点
无论数据多庞大,查找速度都非常快。list的查找速度会随着元素增加而逐渐下降。
dict占用内存大,浪费很多内容。list占用内存小。
dict一般是无序的(在python3.5及以前)。3.6版本后是有序的。为避免误解,一般采用Ordereddict字典确保有序。
key可以使用基础数据类型表示,这些是不可变的。复杂的数据类型中tuple可以作为dict的key,而list不可以。
在一个dict中,key不能重复。
dict遍历的方法
一、用for循环遍历dict for key in d:
二、使用items方法 for key, value in d.items():
7-7 Python操作dict的其它方法
d.keys() 获取dict的所有key
d.values() 获取dict所有的value
d.clear() 清除dict中所有的元素
第八章 set容器
8-1 什么是set
set与list类似,但是set里面的元素不允许重复。set也是无序的。
创建set的方式是set(这里放list)
传入的list如果有重复的元素,相同元素就只保留一个。
8-2 读取set元素
'X' in set1 如果set1里面有X则返回True,否则返回False
8-3 添加set元素
使用.add()方法 set1.add('New')
添加已存在的元素不会报错,也不会改变什么。
批量添加:update(要添加进去的list)方法
8-4 删除set元素
remove方法删除:set1.remove('元素')
元素不在set中会引发错误。使用前要判断要删除的元素是否在set中。
8-5 操作set的其它方法
s1.discard(元素)方法删除:不会报错
s1.clear()方法:清除所有元素
s1.issubset(s2)方法:判断s1是否为s2的子集
s2.issuperset(s1)方法:判断s2是否为s1的超集
s1.isdisjoint(s2)方法:判断s1、s2是否不重合(没用相同的元素)。
第九章 函数
9-1 什么是函数
封装逻辑代码的过程叫做抽象,抽象是数学中非常常见的概念。
Python的内置函数可以在帮助文档或者官网找到:https://docs.python.org/zh-cn/3/library/functions.html
cmp(a,b)函数 比较两个数的大小。前者小返回-1,相等返回0,后者小返回1
int() str() sum(List)
9-2 自定义函数
定义函数需要使用def语句。def 函数名(参数):
返回值用return语句。
9-3 函数的返回值
函数可以没有返回值,直接return
也可以有多个返回值,return s1, s2 多个返回值返回的是tuple类型的。
9-4 递归函数
在函数中调用自己。理论上所有递归函数都可以用循环结构表示,但是循环体的逻辑不如递归清晰。
使用递归函数时注意防止栈溢出(递归不能调用过多)
9-5 函数参数
有些函数传入参数时,参数的类型有限制。类型不对会引发问题。
可以用isinstance(数据,数据类型)函数来进行校验。
9-6 函数使用默认参数
int可以传入两个参数int('123', 转换进制base) 后面的参数不传,默认为10
默认参数可以起到简化的作用。
定义函数时在默认参数上写上赋值语句即可实现定义默认参数。如def sum(n_max, n_min = 1)
默认参数定义必须写在必须参数后面。
9-7 函数使用可变参数
可变参数是任意个参数的意思。通常用*args表示。
python会把可变参数定义成一个tuple。注意要对可变参数的情况进行判断,如不能除以0等。
# Enter a code def average(*args): sum = 0 len1 = len(args) if len1 == 0: print('error input') return for items in args: sum += items avg = sum / len1 return avg print(average(1,2)) print(average(1,2,5,4,5)) print(average())
9-8 函数使用可变关键字参数
python会把可变关键字参数当成dict处理。可变关键字参数一般用**kwargs表示。
传入参数:name = 'Alice', gender = 'girl', age = 16
def print_names(**kwargs): names = kwargs['names'] genders = kwargs['gender'] ages = kwargs['age'] i = 0 for name in names: print('Name:{}\nGender:{}\nAge:{}\n'.format(name,genders[i],ages[i])) i += 1 return names1 = ['Alice','Bob','David'] gender1 = ['girl','boy','boy'] age1 = [16,17,15] print_names(names = names1,gender = gender1,age = age1)
对于一个拥有必需参数,默认参数,可变参数,可变关键字参数的函数,定义顺序是这样的:
必须参数、默认参数、可变参数、可变关键字参数
————————————————————
>>>>>以下是小甲鱼的课程笔记<<<<<
————————————————————
仅作为上述知识点的补充。
1.导入函数
使用import 导入函数
2.生成随机数
import random radom生成伪随机数。真正的随机数需要等到量子计算机诞生才能实现(利用量子纠缠)。
random.randint(1,10) 随机获取一个1~10之间的整数
radom.getstate()获取当前随机数状态 radom.setstate()设置随机数状态 利用这两个语句可以重现随机数
3.查看Python的内置函数
dir(__builtins__) 查看python的内置函数
4.复数
复数包含实部和虚部 x = 1+2j x.real = 1.0 x.imag = 2.0
5.Python支持的数字运算
x = (x // y) * y + x % y
操作
结果
x + y
x加y的结果
x - y
x减y的结果
x * y
x乘以y的结果
x / y
x除以y的结果
x // y
x除以y的结果(地板除)
x % y
x除以y的余数
-x
x的相反数
+x
x本身
abs(x)
x的绝对值
int(x)
将x转换为整数
float(x)
将x转换成浮点数
complex(re,im)
返回一个复数,re是实部,im是虚部
c.conjugate()
返回c的共轭复数
divmod(x,y)
返回(x // y, x % y)
pow(x, y)
计算x的y次方
x ** y
计算x的y次方
abs如果传入复数,则返回他的模
int(9.99) = 9 int函数不会四舍五入
pow支持传入第三个参数。传入后将与第三个参数进行取余运算
python不支持自增自减运算(x++、++x等)但是支持-= +=之类的运算。
一些自己写过的作业
""" @FILE_NAME : main -*- coding : utf-8 -*- @Author : ZhaoKugua @Time : 2020/12/17 """ def print_menu(): print('————————————————————————————————————————\n' ' 欢迎使用四级考试分数计算!\n' '————————————————————————————————————————') return 0 def listing_marks(short=3, long=5, passage=4): listening_mark = short * 7.1 + long * 7.1 + passage * 14.2 return round(listening_mark, 1) def reading_marks(word_choose=2, long_reading=4, careful_reading=5): reading_mark = word_choose * 3.55 + long_reading * 7.1 + careful_reading * 14.2 return round(reading_mark, 1) def print_result(listening_mark, reading_mark, name='小明'): print("{name}四级听力部分得了{listening_mark}分," "四级阅读理解得了{reading_mark}分," "两者总共得了{total}分。".format(name=name, listening_mark=listening_mark, reading_mark=reading_mark, total=round(reading_mark+listening_mark, 1))) return 0 def random_myself_corrects(question='reading'): import random random_max = (10 if question == 'reading' else 7 if question == 'short' else 8 if question == 'long' else 10) return random.randint(0, random_max) if __name__ == '__main__': print_menu() print_result(listing_marks(), reading_marks()) print_result( listing_marks(random_myself_corrects('short'), random_myself_corrects('long'), random_myself_corrects()), reading_marks(random_myself_corrects(), random_myself_corrects(), random_myself_corrects()), name='我')
本文地址:https://blog.jixiaob.cn/?post=27
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。