1、引言
python的定义:python是解释性语言。与js一样,既面向对象,又面向过程。
语言类型:python为弱类型语言,无需像java一样,在定义变量时要定义好变量类型。其类型类型全部为引用数据类型------>由此推测python为强类型语言。(可讨论,具体为何种类型语言)
基本数据类型:如int,double等,一般存储于栈内。
引用数据类型:string,类,数列等,一般存储于堆内。
例:int Array=new Array(),其中new是为数据开辟一个新的储存空间,返回给Array的是整个数据储存空间的首地址,因此Array本身放在栈内,其数据放在堆内。
基本数据类型储存的是所赋予的值,引用数据类型储存的是一系列数据地址。
存储特点:
栈:先进后出
堆:无序,储存空间较大。寻找数据需要数据地址。
队列:先进后出
2、变量
python在定义变量时无需关键字,无需类型:a=10
2.1 变量的输出
在输入print()时结果会换行,但输入print(end='')时不会换行
例:
print('aaaa')
print('bbbb',end='')
print('cccc')
输出结果:
aaaa
bbbbcccc
2.2 接收用户输入
输入:input('提示信息:')----------->所有数据都是字符串类型
例如:
age=input('请输入年龄:') #接收后为str类型
print(type(age))
if age.isdigit(): #将age转换成数值类型
print(age)
else:
print('请输入数字')
输出结果为:
请输入年龄:12
<class 'str'>
12
2.3 注释
#:后面可接要注释内容(pycharm快捷键:ctrl+/),此为单行注释。
'''''':其作用有两个:1、多行注释;2、换行字符串。
例:
# 这里是单行注释
s='''a
b
c
'''
print(s)
输出结果为:
a
b
c
2.4 变量的类型
Number(数值型):
包括:
1 int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
2 bool (布尔), 如 True。
3 float (浮点数), 如 1.23、3E-2
4 complex (复数), 如 1 + 2j、 1.1 + 2.2j
可用isinstance或者type来判断:
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
其区别为:type不认为子类是一种父类的类型。isinstance会认为子类是父类类型。
String(字符串):
字符串有索引,可以通过索引对字符串的相对应位置元素进行查询。但不能进行更改和删除某个元素。
索引值以0开始,-1是表示从末尾的第一个元素开始。
例:
str = 'hello world'
print(str) # 输出字符串
print(str[0:-2]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始的后的所有字符
print(str * 2) # 输出字符串两次
print(str + "TEST") # 连接字符串
输出结果:
hello world
hello wor
h
llo
llo world
hello worldhello world
hello worldTEST # 发现用‘+’连接的字符串之间没有空格
在输入字符串过程中,有时需要'\'转义特殊字符,来保证字符串可以正常输出。
例:
print('i\'m a genius!') # 如果将\去掉,将会报错
输出结果:
i'm a genius!
注释:当然也可以写作print("i'm a genius!")
这样执行程序也不会报错。
list(列表):
定义:任意对象的可变、有序、可重复序列
任意对象——列表当中可以存储任意类型的对象
可变——可对任意位索引置元上的素进行修改、替换(索引从0开始)
有序——其中的元素可以用位置索引
可重复——不同索引位置的元素可以是相同的
操作:
合并——两个列表合并 x+y
自身合并x*3
切片——x[i:j:k] ——取前舍后
其中:i是切片开始的索引位置,j是切片结束的索引位置,k是切片提取元素时索引的递增值,默认是1
添加元素——列表名.append(元素值)——在最后添加
列表名.insert(索引位置,元素值)——在制定位置添加元素
删除元素——del 列表名[索引位置]
查找操作——元素值 in 列表名——返回布尔类型 True or False
例:
a=['a','b','c']
b=[1,2,3,4]
print(a+b)
print(a*3)
print(a[0])
print(b[0:3:2])
a.insert(1,'d')
print(a)
a.append('e')
print(a)
print('d' in a)
输出结果:
['a', 'b', 'c', 1, 2, 3, 4]
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
a
[1, 3]
['a', 'd', 'b', 'c']
['a', 'd', 'b', 'c', 'e']
True
tupe(元组):
定义:任意对象的不可变有序可重复集合。
元组与列表的区别:
| 列表 | 元组 |
元素 | [] | () |
可变性 | 可变 | 不可变 |
操作 | 添加、修改、删除、搜索 | 搜索 |
元组优点:
1、元组比列表操作速度快
2、不允许修改,使数据更安全
注释:元组取值操作与列表相同。但不允许删除元组元素,可以删除整个元组:del 元组名。
Dictionary(字典):
定义:任意对象的无序不重复键值对集合。
元组可作为字典的键,序列不可以
任意对象——键必须是不可变数据类型,值可以是任意对象
无序——不可索引,即无索引值,只能依靠键来查询键所对应的值
不重复——键不可重复
3 运算符
3.1 算数运算符
取a=1,b=2
+ | 加——两个对象相加 | a + b 输出结果 3 |
- | 减——得到负数或是一个数减去另一个数 | a - b 输出结果 -1 |
* | 乘——两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 2 |
/ | 除—— x 除以 y | b / a 输出结果 2 |
% | 取模——返回除法的余数 | b % a 输出结果 0 |
** | 幂——返回x的y次幂 | a**b 为1的2次方 |
// | 取整除——返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
3.2 比较运算符
取a=10,b=15
== | 等于 - 比较对象是否相等 | (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。 |
3.3 逻辑运算符
取a=10,b=15
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 15。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
例:
a = 10
b = 15
if ( a and b ):
print ("1 - 变量 a 和 b 都为 true")
else:
print ("1 - 变量 a 和 b 有一个不为 true")
if ( a or b ):
print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print ("2 - 变量 a 和 b 都不为 true")
# 修改变量 a 的值
a = 0
if ( a and b ):
print ("3 - 变量 a 和 b 都为 true")
else:
print ("3 - 变量 a 和 b 有一个不为 true")
if ( a or b ):
print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print ("4 - 变量 a 和 b 都不为 true")
if not( a and b ):
print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
else:
print ("5 - 变量 a 和 b 都为 true")
输出结果:
1 - 变量 a 和 b 都为 true
2 - 变量 a 和 b 都为 true,或其中一个变量为 true
3 - 变量 a 和 b 有一个不为 true
4 - 变量 a 和 b 都为 true,或其中一个变量为 true
5 - 变量 a 和 b 都为 false,或其中一个变量为 false
3.4 身份运算符
定义:用于比较两个对象的储存单元
例:
a=20
b=20
print(a is b)
print(id(a) is id(b))
输出结果:
True # 说明a和b都指向了同一个储存空间地址
False # a、b的id的储存空间地址是不同的
4、if条件语句
分支结构:
if 条件:
代码块
elif 条件:
代码块
...
else:
代码块
例:猜数游戏
import random
print('猜数游戏')
num=random.randint(1,100)
while True:
print('请输入1至100的数字')
i=int(input())
if i == num:
print('猜对了!')
break
elif i < num:
print('小了')
elif i > num:
print('大了')