注释
#这是单行注释
"""
这是多行注释1
"""
'''
这是多行注释2
'''
print()输出
print("唐友吃不着鸡")
print('唐友吃不着鸡')
print("""
唐友吃不着鸡
""")
print('''
唐友吃不着鸡
''')
print(help(print))
#查看打印的类型
input 函数
a = input("请输入信息>>>")
print(a)
print(type(a))
数据:
- 文本
- 图形
- 音频
- 视频
- 网页数据
- 等等
不同的数据,我们需要定义不同的数据类型。
python的常见数据类型:
-
数字(number){
- 数字提供了标量存储和直接访问
- 是不可更改的数据类型(指变更数字会生成新的对象)
}
-
整型(int){
Python有几种整数类型,布尔类型是只有两个值的整型,常规整型是绝大多数
Python2区分整型和长整形,Python3不区分
}
-
长整型(long)
-
浮点型(float){又分为双精度浮点型和十进制浮点型
十进制浮点型:
python3中说浮点型
主要知道科学计算法
print(2.3124E4) print(4000e-3) """ 23124.0 4.0 大小写e都可以,代表 """
}
-
复数(complex){
x ** 2 = -1 x的平方等于-1 任何一个实数的平方都是一个非负数。
但是现在一个数的平方我们要让他得到一个负数,怎么办?
所以,18世纪的数学家们定义了虚数(i,j, 虚数基本单位,i ** 2 = -1 , j * *2 = -1)
属性:
num.real 该复数的实部
num.imag 该复数的虚部
num.conjugate 返回该复数的共
}
-
字符串(String)
-
布尔型(Bool){True/False(1,0)}
-
列表(list)
-
元组(tuple)
-
集合(set)
-
字典(dict)
变量
- 概念:
- 程序可操作的存储区名称
- 程序运行存储区中能改变的数据
- 每个变量都有特定的类型
- 作用:将数据存储到内存;
- 变量的定义
变量名 = 初始值(初始值的实际类型决定变量的数据类型)
- 变量的命名
- 必须由字母、数字、下划线组成;
- 不能以数字开头(但是由于Python中单下划线("_")和双下划线("__")名称的变量有特殊用途,因此不推荐自定义单下划线和双下划线开头的变量
- 不能是Python中的关键字
变量命名尽可能见名知意:
大驼峰、小驼峰
首先,看一下关键字:
import keyword
print(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']
'''
- 变量类型查看
type(变量名)
- 变量内存地址
id(变量名)
dir():对应之前所有变量
dir(a): 参数里所有的变量和属性
举例
a = 1
print(a,type(a),id(a))
b = "Hunan"
print(b,type(b),id(b))
a = 1
print(a)
del a
print(a)
ApplePrice/Apple_Price
- 变量的调用
a = 1
b = 6
c = a + b
print(c)
调用变量的时候,变量实现必须与定义,否则报错
常量
常量即不变的量,比如,π 3.1415926,或者程序运行过程中不可以更改的量。
一般常量的定义全部都用大写
π = 3.14
# 交换变量
x = 2
y = 3
x,y = y,x
print(x,y)
# 同时赋值
a = b = c = 3
print(a,b,c)
# a,b,c= 3 #报错
a,b,c= 1,2,3 #同步赋值,---对应
print(a,b,c)
b = 1,2 #返回一个元组
print(b)
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 : 两个对象相加 | a + b |
- | 减 :得到负数或是一个数减去另一个数 | a - b |
* | 乘 : 两个数相乘或是返回一个被重复若干次的字符串 | a * b |
/ | 除 : x 除以 y | b / a |
% | 取模 : 返回除法的余数 | b % a |
** | 幂 : 返回x的y次幂 | a**b |
// | 取整除 : 向下取接近除数的整数 | a//b |
a = 27
b = 4
print(a/b)
print(a//b)
print(a%b)
"""
6.75
6
3
"""
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 // a |
python中没有++,–这种写法
Python位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
运算符 | 描述 |
---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 |
>> | 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 |
关于取反:
下表中变量 a 为31,b为 15二进制格式如下:
a = 31
b = 15
print(bin(a))
print(bin(a<<2))
print(bin(b))
print(bin(b>>2))
print(a&b)
print(a|b)
print(a^b)
print(~b)
"""
0b11111
0b1111100
0b1111
0b11
15
31
16
-16
"""
Python逻辑运算符
Python语言支持逻辑运算符,
运算符 | 逻辑表达式 | 描述 |
---|---|---|
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。 |
同样仍以变量 a 为 31,b 为 15为例:
a = 31
b = 15
print(a<3 and b>12)
print(a<30 or b>12)
print(not a)
"""
False
True
False
"""
- 在没有()的情况下not优先级高于 and,and优先级高于or,即优先级关系为()>not>and>or,同一优先级从左往右计算
判断逻辑语句的正与负:
3>4 or 4<3 and 1==1 #
1 < 2 and 3 < 4 or 1>2 #
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 #
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 #
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 > 8 #
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 #
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6#
"""
False
True
True
False
True
False
False
"""
and(逻辑与) | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
or(逻辑或) | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
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。 |
注:id()函数用于获取对象内存地址
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) | 将一个整数转换为一个二进制字符串 |
关于进制
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
0 | 0000 0000 | 0000 0000 | 0 |
1 | 0000 0001 | 0000 0001 | 1 |
2 | 0000 0010 | 0000 0002 | 2 |
3 | 0000 0011 | 0000 0003 | 3 |
4 | 0000 0100 | 0000 0004 | 4 |
5 | 0000 0101 | 0000 0005 | 5 |
6 | 0000 0110 | 0000 0006 | 6 |
7 | 0000 0111 | 0000 0007 | 7 |
8 | 0000 1000 | 0000 0010 | 8 |
9 | 0000 1001 | 0000 0011 | 9 |
10 | 0000 1010 | 0000 0012 | A |
11 | 0000 1011 | 0000 0013 | B |
12 | 0000 1100 | 0000 0014 | C |
13 | 0000 1101 | 0000 0015 | D |
14 | 0000 1110 | 0000 0016 | E |
15 | 0000 1111 | 0000 0017 | F |
16 | 0001 0000 | 0000 0020 | 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 |
- abs与fabs运行区别:
- fabs()的使用需要导入数学模块(math),而abs()不需要
- 返回数据类型不同
>>> a = abs(-9)
>>> b = fabs(-9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'fabs' is not defined
>>> import math
>>> a = abs(-9)
>>> b = math.fabs(-9)
>>> a,type(a)
(9, <class 'int'>)
>>> b,type(b)
(9.0, <class 'float'>)
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'math']
>>> from math import *
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'math', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
指数
1、正整数指数幂:实数a自乘n次得到的实数b,b=a×a×a ×a……×a, (n∈N,且 n >1),称为实数a的n次幂,n为自然数,数a的n次幂用an表示,记作{\rm{b}} = {a^n},数a称为幂的底,数n称为幂指数。注意:{\rm{b}} = {a^1}
-
cmp()函数
python2使用,python3已取消
python3中对应的使用:
>>> import operator
>>> operator.eq("q","q") # eq:equal,判断是否相等
True
lt(a,b)相当于a<b 从第一个数字或字母(ASCII)比大小
>>> operator.lt("a","b") # lt:less than
True
>>> operator.le("a","a")
True
>>> operator.lt("a","a") # lt:less than
False
随机函数(random)
- 模块导入
#方法一
>>>import random
#方法二
>>>from random import * #不推荐使用
- 查看对应的方法和属性
>>>dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_inst', '_itertools', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>
- random模块常用的功能
- random.random():用于随机生成一个0到1的浮点数n(0<=n<=1)
>>> import random
>>> nun = random.random()
>>> print(nun)
0.09095966637327513
>>> print(nun) #在随机生成之后无论怎么打印这个数还是不会变
0.09095966637327513
>>> nun = random.random()
>>> print(nun) #只能重新生成一个随机数才会改变
0.9659144361674479
>>>
- random.uniform(a,b):用于生成指定范围内的随机浮点数,两个参数,其中之一是上限,另一个是下限
- 如果a>b,生成的随机数n:a<=n<=b;
- 如果a<b,生成的随机数n:b<=n<=a;
>>> import random
>>> random.uniform(1,10)
4.238137852842515
>>> random.uniform(10,1)
1.5240380497388877
- random.randint(a,b):随机生成a到b范围内的整数n(a<= n <=b)
>>> random.randint(10,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python36\lib\random.py", line 221, in randint
return self.randrange(a, b+1)
File "D:\Python36\lib\random.py", line 199, in randrange
raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (10,2, -8)
#括号内的数字只能从小到大,从大到小会报错
>>> random.randint(1,10)
3
- random.randrange([start],[stop],[step]):从指定范围内,按指定基数递增的集合中获取一个随机数。
- 集合为(start,start+stop+2*step,···,start+n*step)
>>> random.randrange(10,30,2)
20
>>> random.randrange(100,30,-2)
52
- random.choice(sequence):从序列中随机获取一个元素
>>> lst = ['python','C','C++','javascript']
>>> str1 = ('I love python')
>>> random.choice(lst)
'javascript'
>>> random.choice(lst)
'C'
>>> random.choice(str1)
'y'
>>> random.choice(str1)
'n'
- random.shuffle(x[ , random]):用于将一个列表中的元素打乱,即将列表内的元素随机排列
>>> p = ['A','B','C','D','E']
>>> random.shuffle(p)
>>> p
['C', 'E', 'A', 'D', 'B']
- random.sample(sequemce,k):从指定序列中获取指定长度的片段并随机排列。注意:sample函数不会修改原有序列。
>>> li = [1,2,3,4,5,6]
>>> random.sample(li,4)
[1, 6, 4, 5]
>>> random.sample(li,3)
[4, 1, 5]
>>> random.sample(li,2)
[2, 5]
>>> random.sample(li,5)
[6, 3, 1, 5, 4]
Python程序流程控制
-
if…else
-
while
-
for
C或者java,Switch…case,default,Python中则不存在
常见流程控制语句:
-
顺序执行
-
选择分支
-
循环执行
需要去注意的是,C或者java,通常用花括号{}来控制流程控制语句的语法,而Python 则使用缩进来控制相应的语法
>>> a = 2
>>> if a < 3:
... print("a < 3")
...
a < 3
IF条件分之语句
Python条件语句是通过一条或多条语句执行结果(True或者False)来决定执行的代码块
- if单分支语句
if 逻辑语句:
语句(块)
demo:
print(111)
if True:
print(222)
print(333)
结果:
111
222
333
修改条件:
print(111)
if False:
print(222)
print(333)
结果:
111
333
将True或者False换成逻辑语句。
练习:随机生成一个数字,输入一个数字,比大小
import random
a = random.randint(1,10)
for i in range(10):
b = int(input("输入数字"))
if a < b:
print("猜对了")
print("猜错了")
- if双分支语句
if 逻辑语句:
语句(块)1
elif:
语句(块)2
demo:
learning = "java"
if learning == "python"
print("啊哈,真巧,我也在学习Python")
else:
print("小明和你一样,他也在学习java")
print("很高兴认识你")
练习:写一个登录判断
import getpass
username = input("请输入用户名:")
password = getpass.getpass("请输入密码:")
if username == "admin" and password == "123456":
print("登陆成功")
else:
print("请重试")
输入密码隐藏:getpass(在IDE中无法运行,只能在脚本中运行)
-
if多分支语句
Python中用elif代替了 else if,所以if语句的关键字为:if - elif - else。
注意:
- 每个条件后面要使用冒号:,表示接下来是要满足条件后要执行的语句块
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 在Python中没有switch - case语句。
if 逻辑语句:
语句(块)1
elif 逻辑语句2:
语句(块)2
elif 逻辑语句3:
语句(块)3
......
elif 逻辑语句n-1:
语句(块)n-1
else:
语句(块)n
练习:
输入0~100看能到多少分
num = int(input("输入你要的数字:"))
if num == 100 :
print("A+")
elif num > 100:
print("比最高分还高是自己改的吧")
elif num >= 90:
print("A")
elif num >= 80:
print("B")
elif num >= 70:
print("C")
elif num >= 60:
print("D")
else :
print("不及格")
while循环语句
- 概念:循环用来执行部分代码…即在一定的条件下执行重复的代码。
- 格式:
while 逻辑语句:
语句(块)
demo:
- 1-100
num = 0
while num < 100:
num += 1
print(num)
2.1-100的和:
num = 0
max = 0
while num < 100:
num += 1
max += num
print