Typora
对应的格式文件:Markdown格式文件
基本使用
文本
不设置任何东西
标题
#:一级标题(Ctrl+1)
##:二级标题(Ctrl+2)
###:三级标题(Ctrl+3)
markdown格式路径
-
网址
-
绝对路径
-
相对路径
![](C:\Users\29709\Pictures\Saved Pictures\438428842017091415453803_43842884.jpg)
表格
姓名 | 班级 | 年龄 |
---|---|---|
张山 | 1班 | 18 |
李四 | 2班 | 19 |
环境安装
- 1.python的安装
- 2.pycharm(IDE)/Sublime(轻量型IDE)
- 3.Typora
基础
第一个程序:
print("Hello, World")
三种运行方式
- Python解释器环境下运行;
(D:\Anaconda3) C:\Users\Administrator>python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>print("Hello, World")
- 命令窗口中运行脚本
python 文件名.py
```
注释
-
单行注释
# this is 单行注释
-
多行注释
''' this is 多行注释1 ''' """ this is 多行注释2 """
print()输出函数
a=input()
print("value of a is:"a)
数据类型
-
文本
-
图形
-
数值型数据
-
音频
-
视频
-
网页数据
-
等等
不同的数据,需要定义不同的数据类型。
python中常见的数据类型
-
数字(number)
-
字符串(string)
-
布尔型(bool)
-
列表(list)
-
元组(tuple)
-
集合(set)
-
字典(dict)
变量
概念:
- 程序可操作的存储区名称
- 程序运行存储区中能改变的数据
- 每个变量都有特定的类型
举个例子,一栋教学楼当作内存的话,教室名称就相当于变量,其内部存储的内容就是具体的变量值
-
作用:将数据存储到内存
变量的定义:
-
java
1.定义变量名称,数据类型 2.变量赋值
-
Java中两步,python中一步搞定
a=1 b=1.56 cd="abc" d=[1,2,3] e=(1,2,3) f={1,2,3}
-
-
变量的命名规范
-
字母/数字/下划线组成
-
不能以数字开头
-
不能是python
注 意:通常命名时不以单下划线("")和双下划线(“”)开头。因为python中单线下划线和双下划线 开头的变量有特殊用途
-
见名知意
-
小驼峰
-
大驼峰
-
-
-
关键字查看:
>>>import keyword >>>keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
-
变量的调用
a=1 b=2 c=a+b print(c)
-
两值交换
x=12 y=16 x,y=y,x x,y
-
同时赋值
a=b=c=3 a,b,c=1,2,3
常量
常量就是不变的量,比方说,pi,3.14159,在程序运行过程中不可以改变的量
-
一般,常量的定义所有字母大写
PI=3.14
python中已经集成了基本的数学函数和常量,我们查看一下pi的值:
>>> import math
>>> math.pi
3.141592653589793
dir()函数
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'math', 'x', 'y']
- 返回当前范围内定义的变量,方法,和帝国一的类型列表
数字
-
数字提供了标量存储和直接访问
-
时不可更改的数据类型(指变更数字会生成新的对象)
-
整型
-
长整型
python2区分整型和长整型,python3目前已基本不区分,后续优化会逐渐合并
-
布尔型
- True(1)
- False(0)
-
浮点型
- 双精度浮点型
- 十进制浮点型
-
科学记数法
用“E”或“e”来表示10
>>> print(3.14159E5)
314159.0
>>> print(314159.0e-5)
3.14159
>>>
-
复数
i**2=-1
我们知道,任何一个数的平方都是一个非负数;但现在,我们需要找到一个数的平方为负数。因此,18世纪,数学家定义虚数(虚数基本单位(i,j))
i ** 2=-1, j ** 2=-1/。
i 或 者 j = − 1 i或者j=\sqrt { {\rm{ - }}1} i或者j=−1
基于这个特殊的数(或者称之为概念),数学从此有了一个新的分支。现在虚数已经广泛应
用于数值和科学计算应用程序中。一个实数和一个虚数的组合构成一个复数。一个复数是一对
有序浮点数(x, y)。表示为 x + yj, 其中 x 是实数部分,y 是虚数部分。
渐渐的复数在日常运算,机械,电子等行业获得了广泛的应用。由于一些研究人员不断的重
复制造用于复数运算的工具, 在很久以前的 Python1.4 版本里,复数终于成为一个真正的
Python 数据类型。
-
复数属性
假如,定义num=1.6+5.6j,则对应的长见属性为:
- num.real 返回复数的实部
- num.imag 返回复数的虚部
- num.conjugate()返回复数的共轭复数
- 共轭复数:实部
>>> num=1.6+5.6j
>>> num
(1.6+5.6j)
>>> num.real
1.6
>>> num.imag
5.6
>>> num.conjugate()
(1.6-5.6j)
>>>
表达式与运算符
-
表达式
由变量,常量和运算符组成的式子。计算器可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算
算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 : 两个对象相加 | a + b |
- | 减 :得到负数或是一个数减去另一个数 | a - b |
* | 乘 : 两个数相乘或是返回一个被重复若干次的字符串 | a * b |
/ | 除 : x 除以 y,返回一个实数 | b / a |
% | 取模 : 返回除法的余数 | b % a |
** | 幂 : 返回x的y次幂 | a**b |
// | 取整除 : 返回商 | a//b |
Python比较运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 True。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 True。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 True。 |
Python赋值运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a0 |
Python位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
运算符 | 描述 |
---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 |
>> | 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 |
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
针对逻辑运算的进一步研究:
在没有()的情况下not优先级高于and,and优先级高于or,即优先级关系为()>not>and>or,同一优先级从左往右计算。
Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
Python身份运算符
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
数据类型的强制转换
强转类型 | 描述 |
---|---|
int(x) | 将x转换成一个整数 |
float(x) | 将x转换成浮点数 |
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
bin(x) | 将一个整数转换为一个二进制字符串 |
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
1 | 0000 0001 | 0000 0001 | 0000 0001 |
2 | 0000 0010 | 0000 0002 | 0000 0002 |
3 | 0000 0011 | 0000 0003 | 0000 0003 |
4 | 0000 0100 | 0000 0004 | 0000 0004 |
5 | 0000 0101 | 0000 0005 | 0000 0005 |
6 | 0000 0110 | 0000 0006 | 0000 0006 |
7 | 0000 0111 | 0000 0007 | 0000 0007 |
8 | 0000 1000 | 0000 0010 | 0000 0008 |
9 | 0000 1010 | 0000 0011 | 0000 0009 |
10 | 0000 1011 | 0000 0012 | 0000 000a |
11 | 0000 1100 | 0000 0013 | 0000 000b |
12 | 0000 1101 | 0000 0014 | 0000 000c |
13 | 0000 1110 | 0000 0015 | 0000 000d |
14 | 0000 | 0000 0016 | 0000 000e |
15 | 0000 000f | ||
16 | 0000 0010 |
常见的数学函数
函数名 | 描述 |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,…) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,…) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
sqrt(x) | 返回数字x的平方根 |
cmp(x, y) | Py2,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
-
cmp()函数
python2使用,python3已取消。
Python3中对应的使用:
>>>import operator 然后: >>> operator.eq("a","a"); True lt(a,b) 相当于 a<b 从第一个数字或字母(ASCII)比大小 less than le(a,b)相当于a<=b less and equal eq(a,b)相当于a==b 字母完全一样,返回True, equal ne(a,b)相当于a!=b not equal gt(a,b)相当于a>b greater than ge(a,b)相当于 a>=b greater and equal 函数的返回值是布尔
随机函数(random)
- 模块导入
# 方法1
import random
# 方法2
from random import * #不推荐使用
- 查看对应的方法和属性
方法一:
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> import random
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'random']
>>>
方法二:
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> from random import *
>>> dir(random)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>>
-
random模块常用的功能
-
1.random.random():用于随机生成一个0到1的浮点数n(0<=n<=1)
>>> import random >>> num=random.random() >>> print(num) 0.6957514100496569 >>> print(num) 0.6957514100496569 >>> num=random.random() >>> print(num) 0.21915205358928724 >>>
-
-
2.random.uniform(a,b):用于生成指定范围内的随机浮点数。两个参数,其中之一是上线,另一个是下限:
- 如果a>b,生成的随机数n:a<=n <=b;
- 如果a<b,生成的随机数n:b<=n <=a;
>>> import random
>>> random.uniform(1,10)
6.564298871828516
>>> random.uniform(10,1)
5.932896570054294
>>>
-
3.random.randint(a,b):随机生成a到b范围内的整数n(a<=n<=b)
>>> random.randint(1,10)
-
4.random.randrange([start],[stop],[step]):从指定范围内,按指定基数递增的集合中获取一个随机数。
集合为{strat,strat+step,strat+2*step,…,strat+n*step}
>>> import random
>>> random.randrange(10,30,2)
10
>>> random.randrange(100,30,-2)
40
>>>
-
5.random.choice(sequence):从序列中随机获取一个元素。
-
将字符串的内容根据索引输出
>>> str = "Hello Word"
>>> num = 0
>>> while num < len(str):
... print("str[%d] = %s" % (num, str[num]))
... num += 1;
...
str[0] = H
str[1] = e
str[2] = l
str[3] = l
str[4] = o
str[5] =
str[6] = W
str[7] = o
str[8] = r
str[9] = d
>>>
- 求出1~100的和(终端报错,PyCharm可以执行)
num = 1
sum = 0
while num < 101 :
sum += num
num += 1
print("1~100的和:", sum)
for循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串,for循环格式:
for in 序列:
语句(块)
demo:
1.遍历字符串。
a="Life is short,I use python"
for i in a:
print(i,end="")
例子:
for i in range(10)
print(i,end=" ")
结果:0 1 2 3 4 5 6 7 8 9
不加空格就是:0123456789
2.range()
range(end)
#[0,end]
range(start,end)
#[start,end]
range(start,end,step)
#{start,start+step,...start+n*step}(start+n*step)为[start,end]范围内的
用for循环打印1+…100的值
sum=0
for i in range(1,101,1):
sum+=i
print(sum,end=" ")
用for循环打印:
****
****
****
****
for i in range(4):
for a in range(4):
print("*", end="")
print()
用while循环打印出:
****
****
****
****
a=1
while a<=4:
b=1
while b<=4:
b+=1
print("*",end="")
a+=1
print()
字符串(String)
字符串是Python中最常用的数据类型,我们可以使用引号(‘或者“)来创建字符串,事实上,在Python中,加了引号的字符都被认为是字符串!
name="china" #双引号
age="5000" #只要加双引号就是字符串
age_1=5000 #不加,整形
a="""i love you""" #三双单引号
b='''i love you''' #三单引号
c='love' #单引号
print(type(name),type(age),type(type_1),type(a),type(a),type(b),type(c),sep="|")
<class 'str'>|<class 'str'>|<class 'int'>|
<class 'str'>|<class 'str'>|<class 'str'>
多引号是什么作用呢?作用就是多行字符串必须用多引导。
msg="""
轻轻地我走了,
正如我轻轻的来;
我轻轻的招手,
作别西天的云彩。
"""
print(msg)
字符串运算及操作
数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what?是的,但只能进行“相加”和“相乘”运算。
(1)拼接(+)
>>> a="Hello"
>>> b="Python"
>>> a+b
'HelloPython'
>>>
注意,字符串的拼接只能是双方都是字符串,不能跟数字或其他的类型拼接
(2)重复(*)
>>> a="Hello"
>>> a*3
'HelloHelloHello'
(3)字符串索引([]以及切片[::])
#########0123456789012345678901234567
89
>>> a="Life is short,I use python"
>>> len(a)
27
>>>#索引
>>>a[0]
'L'
>>>a[15]
'I'
>>>a[-1]
'n'
>>>a[-6]
'p'
>>>#切片
...
>>>a[:13] 从第一个元素开始,一直到索引值为12的元素
'Life is short'
>>>a[15:]从索引值为15的元素开始,一直到最后
'I use python'
>>>a[15::2]# 从索引值为15的元素开始,步长为2,即每次跳过一个元素,一直到最后
'Iusepto'
>>>a[::-1]# 逆序输出
'nohtyp esu I,trohs si efil'
>>>
(4)大小写转换
- str.lower():转换小写
- str.upper():转换大写
- str.swapcase():大小写对换
- str.capitalize():字符串首为大写,其余小写
- str.title():以分隔符标记,首字符为大写,其余为小写
>>>a="Life is short, I use python"
>>>a.lower()#将所有大写字符转换为小写字符
'life is short, i use python'
>>>a.upper()#将所有小写字符转换为大写字符
'LIFE IS SHORT, I USE PYTHON'
>>>a.swapcase()#将所有小写字符变成大写,将大写字符变成小写
'LIFE IS SHORT, i USE PYTHON'
>>> a.capitalize()#将字符串的第一个字符大写
'Life is short, i use python'
>>> a.title()#返回标题化的字符串,
'Life Is Short, I Use Python'
>>>
#不区分大小写
input_str="AbDc"
get_str=input("请输入验证码(不区分大小写:)")
if input_str.lower()==get_str.lower():
print("输入正确")
else:
print("输入错误")
(5)字符串格式输出对齐
- str.center() 居中
- dtr.ljust() 左对齐
- str.rjust() 右对齐
- str.zfill()
>>> a ="Life is short, I use python"
>>>a.center(35,'*')#返回一个原字符串居中,并使用空格填充至长度width 的新字符串 必须大于字符串长度还需要是双数
'****Life is short, I use python****'
>>>a.ljust(35,'*')#返回一个原字符串左对齐,并使用空格填充至长度width 的新字符串
'Life is short, I use python********'
>>>a.rjust(35,'*'))#返回一个原字符串右对齐,并使用空格填充至长度width 的新字符串
'********Life is short, I use python'
>>>a.zfill(35)#返回长度为width,原字符串 string右对齐,前面填充0,只有一个参数,zerofill
'00000000Life is short, I use python'
(6)删除指定字符
- str.lstrip()
- str.rstrip()
- str.strip()
>>> a="****Life is short,I use python****"
>>>a.lstrip("*")
'Life is short,I use python****'
>>>a.rstrip("*")
'****Life is short, I use python'
>>>a.strip("*")
'Life is short, I use python'
>>>
(7)计数
=COUNTIF(B2:B31, “>=30”)/COUNT(B2:B31)
>>> a ="Life is short, I use python"
>>> a.count('i')#返回str在string里面出现的次数
2
>>> a.count('i',4,8)#在索引值为(4,8)的范围内str 出现的次数
1
>>>
(8)字符串搜索定位与替换
- str.find()
>>> a="Life is short, I use python"
>>> a.find('e')#查找元素并返回第一次出现的元素索引值
3
>>> a.find('e',18,24)#查找元素在指定索引范围内的索引
19
>>> a.find('w')#找不到值返回-1
-1
- str.index()
- 和find()方法一样,只不过如果str不在string中会报一个异常。
>>> a="Life is short, I use python"
>>> a.index('e')
3
>>> a.index('e',18)
19
>>> a.index('w')
Tranceback(most recent call last):
File "<stdin>",line 1, in <module>
ValueErroe:substring not found
>>>
- str.replace()
>>> a="Life is short, I use python"
>>>a.replace('I use','You need')
'Life is short, You need python'
>>>a.replace('t','T')
'Life is shorT,I use pyThon'
>>> a.replace('t','T',1)#往左边开始找找到的遇到的第一个
'Life is shorT,I use python'
>>>
(9)字符串条件判断
-?isalnum(),字符串由字母或数字组成,
-?isalpha(),字符串只由字母组成,
-?isdigit(),字符串只由数字组成
In?[1]:?a?=?"abc123"
In?[2]:?b?=?"ABC"
In?[3]:?c?=?123
In?[4]:?a.isalnum()
Out[4]:?True
In?[5]:?a.isalpha()
Out[5]:?False
In?[6]:?a.isdigit()
Out[6]:?