python是什么
-
一种高级编程语言
- 一种解释型语言
- 当运行一个python文件时,速度相较c程序十分缓慢、因为python在运行你的代码在执行时会一行一行地翻译成CPU能理解的机器码,而c语言是提前编译好成为机器码。
- 但是人一般感觉不大出来。
- 有大量的第三方库和内置库可以使用
- 用很少的代码完成复杂的要求
- 原则
- “优雅”、“明确”、“简单”
- 使用c和python开发同一种程序,代码量天差地别。
- 适合开发什么
- 想怎么用就怎么用(bushi
- 网页应用
- 网站
- 后台服务
- 需要使用的脚本文件、小工具等
- 成为第三方库
python安装
windows
- 下载安装包
- 添加到环境变量
linux
- 一般会自带python2。
-
查看自己的版本,打开命令行输入
python --version
- 如果想安装python3,不要卸载python2,一些系统的命令依赖于python2。
- 官方更推荐使用python3
- python3是python的未来
- 2和3的区别
两种模式
- 编辑模式
- IDLE
- windows 自带
- VScode
- Anaconda
- Jupyter Notebooks
- 在浏览器中使用
- spyder
- IDLE
- 交互模式
>>>
输入命令无法保存,即时反馈- 命令行
- windows打开cmd
- linux
ctrl+alt+t
- IPython
- 一个强大的交互式shell
- 行数显示、快捷键、tab代码自动补全、……
pip
-
是python中的包管理器,该工具提供了对Python 包[第三方库]的查找、下载、安装、卸载的功能。
-
python
2.7.9+
、3.4+
版本自带工具。 -
pip install pwntools
基础语法
以下只是一个提纲
数据
- 整数和浮点数大小没有限制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26x = 3 """ type是判断对象类型的函数 """ print(type(x)) # Prints "<class 'int'>" print(x) # Prints "3" """ 对于x进行基本的加减乘除等运算 """ print(x + 1) # Addition; prints "4" print(x ‐ 1) # Subtraction; prints "2" print(x * 2) # Multiplication; prints "6" print(x ** 2) # Exponentiation; prints "9" x += 1 print(x) # Prints "4" x *= 2 print(x) # Prints "8" y = 2.5 print(type(y)) # Prints "<class 'float'>" print(y, y + 1, y * 2, y ** 2) # Prints "2.5 3.5 5.0 6.25" ''' 关于除法 ''' num = 3/2 print(num) #python2:1 python3:1.5
- boolean
- 使用
and
,or
和not
代替C语言的&&
,||
和!
- 使用
- 没有指针
- 字符串
1
2
3
4
5
6
7
8
9
10
11
12num = 10 type(str(num)) # convert integer to string hello = 'hello' # String literals can use single quotes world = "world" # or double quotes; it does not matter. print(hello) # Prints "hello" print(len(hello)) # String length; prints "5" #字符串相加会拼接在一起 hw = hello + ' ' + world # String concatenation print(hw) # prints "hello world" #类似C语言的格式化字符串 hw12 = '%s %s %d' % (hello, world, 12) # sprintf style string formatting print(hw12) # prints "hello world 12"
- 格式化字符串
- 字符串方法
1
2
3
4
5
6
7
8s = "hello" print(s.capitalize()) # 首字母大写 print(s.upper()) # 将字符串转化为大写 print(s.rjust(7)) # 以给定的长度向右对齐,prints " hello" print(s.center(7)) # 居中对其, 旁边会根据输入的长度留有空格; prints " hello " print(s.replace('l', '(ell)')) # 将字符串中所有的l以(ell)代替; # prints "he(ell)(ell)o" print(' world '.strip()) # 去除多余的空白
容器
- list & tuple
- list ```python xs = [3, 1, 2] # Create a list print(xs, xs[2]) # Prints “[3, 1, 2] 2” print(xs[‐1]) # 负数下表从列表的末尾开始数起 prints “2” xs[2] = ‘foo’ # list中可以存放不同类型的数据 print(xs) # Prints “[3, 1, ‘foo’]” xs.append(‘bar’) # 向列表中添加元素 print(xs) # Prints “[3, 1, ‘foo’, ‘bar’]” x = xs.pop() # 去除并返回列表末尾元素,此处返回’bar’ print(x, xs) # Prints “bar [3, 1, ‘foo’]” ‘’’ 切片 ‘’’ nums = list(range(5)) # range表示范围,在python3中是个迭代器,使用list转化为列表,会返回 [0,1,2,3,4] print(nums) # Prints “[0, 1, 2, 3, 4]” print(nums[2:4]) # 会获取下标从2到3的元素,返回[2,3] print(nums[2:]) # 若切片第二个参数不填则默认到尾部 print(nums[:2]) # 第一个参数不填则默认从头部开始 print(nums[:]) # 都不填则从头到尾 print(nums[:‐1]) # prints “[0, 1, 2, 3]” print(nums[::2]) # 切片的第三个参数表示间隔 返回[0,2,4] nums[2:4] = [8, 9] # Assign a new sublist to a slice print(nums) # Prints “[0, 1, 8, 9, 4]”
’’’ 遍历 ‘’’ animals = [‘cat’, ‘dog’, ‘monkey’] for animal in animals: print(animal)
nums = [0,1,2,3,4] squares = [x**2 for x in nums] print(squares)
1
2
3
4
5
6- tuple - 是一个不可变的列表 ```python t = tuple(range(5)) #Prints (0,1,2,3,4) #t[0] = 2 trackback 'tuple' object does not support item assignment t = ("cat", "mouse")#使用()来表示一个元组
- dist & set
- set
- 不存在重复的元素
1
2nums = list(range(5))*2 # Prints:[0, 1, 2, 3, 4, 0, 1, 2, 3, 4] nums = set(nums) # Prints "{0, 1, 2, 3, 4}"
- 不存在重复的元素
- dist
- 字典是一种键值对,key(键)与value(值)一一对应,key必须是唯一的。
如同在学校,你的学号是唯一的(key),通过学号能够获取你的名字(值)
```python d = {‘cat’: ‘cute’, ‘dog’: ‘furry’} print(d[‘cat’]) # prints “cute” print(‘cat’ in d) # 检查cat是否在d中有 d[‘fish’] = ‘wet’ # 设置字典值 print(d[‘fish’]) # Prints “wet” # print(d[‘monkey’]) # KeyError: ‘monkey’ not a key of d print(d.get(‘monkey’, ‘N/A’)) # Get an element with a default; prints “N/A” print(d.get(‘fish’, ‘N/A’)) # Get an element with a default; prints “wet” del d[‘fish’] # Remove an element from a dictionary print(d.get(‘fish’, ‘N/A’)) # “fish” is no longer a key; prints “N/A”
- 字典是一种键值对,key(键)与value(值)一一对应,key必须是唯一的。
’’’ 遍历 默认使用key ‘’’ d = {‘person’: 2, ‘cat’: 4, ‘spider’: 8} for animal in d: legs = d[animal] print(‘A %s has %d legs’ % (animal, legs)) # Prints “A person has 2 legs”, “A cat has 4 legs”, “A spider has 8 legs”
```
控制语句
- set
- 条件语句
- 没有
switch
elif
- 没有
- 循环语句
- 没有
do{}while()
- 没有
严格的缩进
- 组织代码块
- 代替了C语言中
{}
的作用1
2
3
4
5
6
7
8
9if value == 5: print("Hello Five\n") print("This is a number\n") elif value == 6: print("666\n") print("very 666\n") else: print("Hello World") print("nothing\n")
动态语言
-
静态语言在定义变量时必须指定变量类型。如果赋值的时候类型不匹配就会报错。比如C语言。
- python可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
a = 'ABCD'
python在内存中创造一个字符串ABCD
创建一个变量a
把让a
指向ABCD
。
导入库
1 |
|
函数
-
没有main()函数
没有统一的程序入口,从第一行代码开始运行。1
2if __name__ =='__main__': pass
当一个.py文件直接运行时,这之下的代码被直接运行。当以模块方式被导入时,则不被运行。
假如你叫小明. py,在朋友眼中,你是小明(name == ‘小明’);在你自己眼中,你是你自己(name == ‘main’)。
-
定义
1
2def func(idx): print("=====>{:#d}<=====".format(idx))
高级使用姿势
详情教程
今天的题目
- 求出100到200内的素数
- 求出斐波拉契数列的前100项
- 输出一个字符串的最后3个元素,前4个元素,第5个元素之后所有元素以及倒数第24个元素。
- 字符切片
- 输入一个数,输出他的二进制,八进制,16进制
- 从一个文件中读取数据,输出并保存到另一个文件中。
- 求解
1~1000
冰雹问题回到1的需要的次数。 - 获得当前
.py
文件的路径。 - 将两个字符串a、b整合成一个列表ls,列表中单索引数据是a,双索引数据是b。
最好会爬虫
- 也可以在mooc上找到相应的教程