注:全文有>>>均是用Python自带的IDLE写的, 没有带>>>则是用pycharm写的
Python概述
简介:
python(Monty Python's Flying Circus)
python之父(Guido van Rossum)
python是一门跨平台,开源,免费的解释型高级动态编程语言(通用的编程语言),可以把不同语言编写的程序融合到一起
实现无缝拼接(也称为胶水语言),支持命令式编程和函数式编程两种
Python的安装:
1.安装Python 自带的IDLE (https://www.python.org)(交互式开发界面)
2. 安装开发环境:Anaconda3,PyCharm,Eclipse,zwPython
这里则介绍Pycharm的安装方法:
1.下载新版破解补丁
下载破解补丁JetbrainsCrack-release-enc.jar放在安装pycharmr的bin目录下面(可以在网上查找)
2.修改配置文件
在PyCharm安装目录下的\bin目录中找到pycharm.exe.vmoptions
和pycharm64.exe.vmoptions
,以文本格式打开并同时在两个文件最后追加一行内容:-javaagent:你的安装路径\bin\JetbrainsCrack-release-enc.jar
,然后保存。
3.输入激活码
启动PyCharm,选择激活码激活,直接复制下面的内容到激活框内(如果你原来已使用激活码已经激活,先下载补丁,然后点击:Help->Register->Activation code然后复制下面的内容到输入框)然后就可以ok啦
下面是破解补丁激活方式的激活码:
ThisCrackLicenseId-{
“licenseId”:”11011”,
“licenseeName”:”Wechat”,
“assigneeName”:”IT--Pig”,
“assigneeEmail”:”1113449881@qq.com”,
“licenseRestriction”:””,
“checkConcurrentUse”:false,
“products”:[
{“code”:”II”,”paidUpTo”:”2099-12-31”},
{“code”:”DM”,”paidUpTo”:”2099-12-31”},
{“code”:”AC”,”paidUpTo”:”2099-12-31”},
{“code”:”RS0”,”paidUpTo”:”2099-12-31”},
{“code”:”WS”,”paidUpTo”:”2099-12-31”},
{“code”:”DPN”,”paidUpTo”:”2099-12-31”},
{“code”:”RC”,”paidUpTo”:”2099-12-31”},
{“code”:”PS”,”paidUpTo”:”2099-12-31”},
{“code”:”DC”,”paidUpTo”:”2099-12-31”},
{“code”:”RM”,”paidUpTo”:”2099-12-31”},
{“code”:”CL”,”paidUpTo”:”2099-12-31”},
{“code”:”PC”,”paidUpTo”:”2099-12-31”}
],
“hash”:”2911276/0”,
“gracePeriodDays”:7,
“autoProlongated”:false}
Python的编程规范:
1. 严格使用缩进来体现代码的逻辑从属关系(也就是强制性的),不能多,也不能少(通常使用4个空格符为一个缩进单位,增加了可读性)。
2.一个import语句只能导入一个模块(模块:即库)
3.不写过长语句,可以使用\来续行(或者使用:圆括号把多行代码括起来,表示一条语句)
4.注释:# 表示单行注释
''' ''' 表示多行注释
5. 一行一个语句,每一行的语句是可以不写;的。
>>> import math as m
>>> m.gcd(8,16)
8
>>> x=10
>>> x
10
>>> x=20;y=30
>>> x
20
>>> y
30
>>>
import 模块名 as 别名
别名可写可不写,方便使用
from 模块名 import 对象名 as 别名
导入明确指定的对象(提高访问速度,推荐使用)
内置对象,运算符,表达式,关键字
内置对象
Python 中的一切都是对象,包括:整数,实数,复数,字符串(str),字节串(bytes),列表(list),元组(tuple),字典(dict),集合(set)等(这些将会在本文中进行初步介绍,具体使用将会在后里文章里介绍)
常量,变量
常量:不能改变的字面值
变量:可以变化的量(python,量可以改变,类型也可以改变,并且不需要声明变量名及其类型,赋值语句即可以创建任意类型的变量)
>>> x=10;
>>> x='a'
>>> x="abc"
>>> x
'abc'
>>>
注:python不必担心数值大小的问题(支持任意大的数字,但是由于精度问题,实数运算存在误差,避免实数之间相等的测试)
解决:应该以二者之差的绝对值是否足够小作为两个实数是否相等的依据
>>> 0.4-0.1
0.30000000000000004
>>> 0.4-0.1==0.3
False
>>> #解决方法:
>>> abs(0.4-0.1-0.3)<1e-6
True
>>>
为了提高可读性,数字中间插入下划线,(注:下划线可以出现在任意位置,但不能出现在开头和结尾,不能用多个连续的)
例:
>>> 1_000_000
1000000
>>>1_2_3_4
1234
>>>
字符串表示:
单引号 :’ ’ 双引号:” ” 三单号:’’’ ‘’’ 三双引号””” “””
作为定界符来表示字符串,也就是不同定界符相互嵌套
列表
>>>x_list=[1,2,3] #创建列表对象
>>>print(x_list[1])
2
>>>
注:用 [ ] 来表示列表对象中的元素,这里相当于java中的有序集合,同List,使用下标访问指定位置上的元素
元组
>>>x_tuple=(1,2,3 ) #创建元组对象
>>>print(x_tuple[2])
3
>>>
注:用()来表示元组中的元素,元组对象是固定不变的,相当于定义的常量对象
字典
>>>x_dict={‘a’:97,’b’:98,’c’:99} #创建字典对象
>>>print(x_dict[‘a’])
97
>>>
注:用 { } 来表示字典中的元素,字典对象是以“键:值”存在的,这里相当于java中的Map,无序集体,只不过是以字母的大小排序的,而使用键作为下标,来访问元素
集合
>>>x_set={1,2,3} #创建集合对象
注:这里的集合与java中的集合是完全不一样的,相同于数学中的集合,集合中的元素是不能重复,且不能使用下标来访问元素
Python中的优先级
算术运算符> 位运算符> 成员测试运算符> 关系运算符> 逻辑运算符
+连接运算符
1. 连接两个列表
>>>[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
>>>
2. 连接两个元组
>>>(1,2,3)+(4,)
(1,2,3,4)
>>>
3. 连接两个字符串
>>>’abc123’+’fda456dfa’
‘abc123fda456dfa’
>>>
注:连接运算符不支持字符与数字相加,
*序列元素的重复,生成新的新的序列对象
>>>[1,2,3]*3
[1,2,3,1,2,3,1,2,3]
>>>(1,2,3)*3
(1,2,3,1,2,3,1,2,3)
>>>’abc’*3
‘abcabcabc’
>>>
**表示幂运算
>>>3**2 #3的2次方 等价于pow(3,2)
9
>>>3**2**3 #幂运算从右往左计算
6561
/和//
>>>3/2 #数学意义上的除法
1.5
>>>15//4 #两个操作数为整数,结果为整数,只要有一个操作数为实数,结果为实数
3
>>>-15//4 #向下取整
-4
>>>
关系运算符的连用
>>>1<3<5 #等价于1<3 and 3<5
True
>>>
In 成员测试运算符(也就是判断该成员是不是属于该对象里的)
>>>3 in [1,2,3]
True
>>>
In可以用来循环,成员遍历
>>>for i in (3,5,4):
print(i,end=’\t’)
3 5 7
注:连续两次enter,才能执行
集合运算符:
&(用来求交集)
|(用来求并集)
^(用来求差集)
>>>{1,2,3}^{3,4,5}
{1,2,4,5}
>>>
- 差集
++和--
>>> i=3
>>> ++i #这里的++就解释为两个正号的
3
>>> +(+i) #这里的使用与java中的++i等价
3
>>> --i
3
>>> -(-i)
3
>>>
注:python 中是不支持i++和i--的,在就是每一个+(+i),使用的是初始化的值,与java等高级语言不同
_ 下划线
python中下划线可以表示为上一次的正确输出结果
随机数生成:
>>> from random import randint as r
>>> a=r(1,10)
>>> a
5
>>>
range()函数
三种用法:
range(stop) #省略start默认为0,省略step默认为1,也就是步长为1
range(start,stop)
range(start,stop,step)
注:该函数有惰性求值特点(左闭右开区间)也就是start到stop的范围不包含stop
生成指定范围数字:
>>> aa=range(1,10,2)
>>> aa
range(1, 10, 2)
>>> 5 in aa
True
>>> 6 in aa
False
>>>
两者结合使用及嵌套:
>>> from random import randint
>>> a=[randint(1,100) for i in range(10)]
>>> print(a)
[45, 74, 63, 70, 3, 51, 37, 61, 16, 96]
>>> #这里的意思是生成10个1~100的范围内的数
>>> a=[[randint(1,100) for i in range(10)] for j in range(5)]
>>> print(a)
[[81, 54, 37, 97, 68, 21, 20, 69, 34, 72], [85, 59, 76, 36, 49, 61, 12, 53, 53, 85], [91, 35, 60, 71, 29, 63, 42, 65, 87, 30], [59, 40, 43, 87, 55, 17, 58, 7, 67, 40], [81, 57, 73, 17, 41, 55, 97, 52, 65, 64]]
>>> #生成5个列表
注:range(1,10,2)是生成1~10之间不包含10且步长为2的数,也就是生成1,3,5,7,9
最大值,最小值
>>> print(max(a),min(a),sum(a))
96 3 516
>>> #并且求出最大值,最小值,和
>>> max('2','111')
'2'
>>> #比较字符串,从左边比较,给管长度
>>> max(['2','111'],key=len)
'111'
>>> #这里比较的是最长的字符串
分隔符:
>>>print(1,3,5,7)
1 3 5 7 9
>>>print(1,3,5,7,9,sep='\t')
1 3 5 7 9
sep=’\t’是设置修改默认分隔符
end=’ ’是表示不换行并且修改分隔符