欢迎食用『主界面』~,这里是赵苦瓜的看板娘desu~
【点滴记录】Python的初步入门
首页 > 点滴记录    作者:赵苦瓜   2020年11月30日 14:31 星期一   热度:264°   百度已收录  
时间:2020-11-30 14:31   热度:264° 


我的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容器


7-1 什么是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 + 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次方
x = (x // y) * 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='我')


二维码加载中...
本文作者:赵苦瓜      文章标题: 【点滴记录】Python的初步入门
本文地址:https://blog.jixiaob.cn/?post=27
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。
独醉2020-12-14 19:26
你看这个臭bb就是不行啊
赵苦瓜2020-12-15 08:02
@独醉:你看这个小黑埋就是逊啊=w=

返回顶部    首页    后花园  
版权所有:赵苦瓜のBlog~    站长: 赵苦瓜    主题寒光唯美式V2.4.1  程序:emlog   鲁ICP备20030743号-1