python速成上

尽管我是非常想继续完成那个python文章的,但是不好意思啊,我必须要速成了
在acwing中,python第一行一般要写上#! /user/bin/env python3这样就可以.-运行了
第二行,养成一个写上编码的好习惯

#-*- coding:utf-8 - *-

前两行一般都是这么写,不写的话,问题也不是很大

系统中一般用python表示python2,python3表示python3。现在已经不维护python2了
输入python,在解释器中按两下tab就可以自动补全
输入ipython会出现一个交互式的python3,这个是有高亮的

在vim中写完之后,该怎么运行呢,可以直接写
python3 main.pypython速成上_第1张图片

还可以用./来运行,需要给它加上一个可执行权限,加上之后颜色就变成了绿色
python速成上_第2张图片
这就是怎么运行,可以像别的一样写在文件里运行,还可以一条一条运行
输入python3,进入之后然后一句句写,exit(),退出

速览:

#用作注释,注释一般另起一行或者某一行后边两个空格之后加注释

可以用作计算机,直接输入公式就行,除法默认浮点数运算

一个除号/就是浮点数运算,两个除号//就是整除,并且向下取整, -1//3 = -1,C++整除向0取整,一般的编程语言都是向0取整,python位运算和除法一样向下取整,C++位运算也是向下取整,可能跟最高位补的是符号位有关
两个乘号就是乘方的意思,比如,2**3=8;乘方还支持小数
取模跟c++一样,12%5=2;

终端里的粘贴不是CV, 而是 insert+shift,
python变量直接写
如果一个式子里面又有整数,又有浮点数的话,那么它就是一个浮点数
python交互里面有一个下划线_,下划线的值等于上一个表达式的值

round(n, m)将n保留m位小数,四舍五入

python中单引号和双引号都能表示字符串,C++和Java中,单引号表示字符,双引号表示字符串。
反斜杠 \ 用于转义,交互式解释器会为输出的字符串加注引号,特殊字符使用反斜杠转义

python速成上_第3张图片

单引号内部出现双引号是不需要转义的,C++只能双引号里面有单引号
请添加图片描述
两个字符串是相同的。如果字符串中有单引号而没有双引号,该字符串外将加注双引号,反之,则加注单引号。
请添加图片描述
这里大家能看到,其实并没有转义
但是如果用print()请添加图片描述
大家就会发现转义了,print() 函数输出的内容更简洁易读,它会省略两边的引号,并输出转义后的特殊字符:如果直接回车的话,输出的并不是转义之后的字符串

python速成上_第4张图片
如果直接写的话,\n也不会被转义出来,但是print就会转义

那么,第一个doesn’t为什么可以呢,原因应该是,那里的’告诉解释器我写了一个‘,但是实际上存的字符串没有\

如果不希望转义的话,可以在前边写上一个r,这样就不会转义了
python速成上_第5张图片
python速成上_第6张图片
第一个\的后边表示将回车转义掉,也就是把回车去掉,输出的话,会将后面三行原样输出

“abc”*3就会输出三遍,也可以写成3 *“abc”
python速成上_第7张图片

python速成上_第8张图片
不光是可以用于空格隔开的,换行了也行
python速成上_第9张图片
这项功能只能用于两个字面值,不能用于变量或表达式:,不能用于字符串和字符串型的变量名

如果想将字符串型的变量名和字符串常量并在一起的话
python速成上_第10张图片
字符串也可以像数组一样进行访问python速成上_第11张图片
python的字符串和列表都是可以从前向后访问,或者从后向前访问
他们都有两种下标,倒着数,下标从-1开始
python速成上_第12张图片
python速成上_第13张图片
一个左闭右开的区间,这里word是个字符串
也可以是负数,比如word[-2:]就是输出-2,-1两个位置的数
也可以相互独立,比如word[0 : -1]就是从头到倒数第二个字符输出,但是-1不输出
如果区间左大于右,就会输出一个空串

注意访问长度不能越界
python速成上_第14张图片

python速成上_第15张图片
len()函数,可以求python所有类型的长度
如,字符串长度,链表长度,字典大小,集合大小,
python的链表就是数组

python中常用的数据结构就三个,1.list其实就是数组,2.集合set,就是C++set 3.字典dict,就是C++map

列表

注意,数组是用中括号来表示的,中括号里用逗号隔开,这表示一个数组,而且数组中类型可以不一样,可以有整型,浮点型,和字符串
还可以嵌套数组,可以通过下标和负数访问

python速成上_第16张图片
数组也是支持切片的,数组的切片和字符串的切片是一样的

数组拷贝的时候,如果用等号的话,比如a=b,是相当于将a和b都指向了同一个地址,如果改变a或者b中任意一个的数组项,另一个也会随之变化。这其实不能算作拷贝,只能算作起了一个别名,那么想要复制一个数组,应该怎么做呢?

请添加图片描述
写成这样,这样就是浅拷贝,它是将a这个链表的第一层复制过去了
python速成上_第17张图片
就比如这样,a中两个元素是两个数组,它们分别复制到b中,此时b中x, y与a中x,y地址并不相同,,改变a中x, y并不影响b中的

浅拷贝就是指,只把a中每个元素复制了一遍
但是每个元素,如果是对象的话,其实还是指针,这里能看到改变b中x,a中x并不发生改变,因为指向x的指针地址并不相同, 但是实际上,这里的x还是一个指针,指向[1, 2],如果再改一下呢, 写成b[0][1] = 5的话,就会发现a中x变成了[1, 5],这就是浅拷贝
python速成上_第18张图片
请添加图片描述
那么什么是深拷贝呢?深拷贝就是它会递归地将A里面每一个元素的所有元素全部复制一份赋给B,(应该是执行深度优先遍历), 这样的话,b不管怎么改变都不会影响A的值,需要先import一下啊请添加图片描述
python速成上_第19张图片
python数组是可以执行相加操作的,
python速成上_第20张图片
append() 方法 可以在列表结尾添加新元素:
也可以 直接x +=[7]也就是在x数组最后加一个数字7

cubes.append(216) # add the cube of 6
cubes.append(7 ** 3) # and the cube of 7
cubes
[1, 8, 27, 64, 125, 216, 343]

神奇的是,python里面切片内容也可以改变
python速成上_第21张图片
这里的x切片要用一个数组来赋值

x[:] = [],就是将x整个串变成空串,也就是清空数组

a, b = 0, 1这是python的特点,它可以支持这种复合赋值方式,就是第一项赋给第一个变量,第二项赋给第二个变量
如何交换两个变量呢?a, b = b, a就可以了

python所有的循环判断后边都要加上一个冒号, 比如
while a<10:

python 通过缩进来判断循环体

print(),可以同时输出多个元素,会用空格隔开
print() 函数输出给定参数的值。与表达式不同(比如,之前计算器的例子),它能处理多个参数,包括浮点数与字符串。它输出的字符串不带引号,且各参数项之间会插入一个空格,这样可以实现更好的格式化操作:

i = 256*256
print(‘The value of i is’, i)
The value of i is 65536

关键字参数 end 可以取消输出后面的换行, 或用另一个字符串结尾:
单引号里面可以不止一个,比如’, '这样就用,和空格一起隔开

a, b = 0, 1
while a < 1000:
… print(a, end=’,’)
… a, b = b, a+b

0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

python并没有i++,i–这种操作,只能写i += 1;

第四章

x = int(input("Please enter an integer: "))这句话的意思就是,我从input中读入一个整数,参数展示在开头
input返回的是一个字符串,然后用int函数将字符串转换成整数
这里的if啥的不需要加括号但是要加冒号,elif, 这里的判断也是双等号 ==

python可以压行,但是不推荐压行

match语句用的不多,可以自行查阅

python速成上_第22张图片
相当于python中的三目运算符
请添加图片描述
神奇的赋值
python速成上_第23张图片
一定要小心上面这个错误,a中的每一个位置都指向了c,所以修改一个,全都变了
python速成上_第24张图片
这样就不会指向同一个位置了

你可能感兴趣的:(python,python,开发语言,后端)