Lec1 数据
快捷 (1)Mac界面切换窗口 command+tab
(2)safari内切换标签 control+tab
(3)虚拟机内切换窗口option+tab
1.第一个Python程序 (Mac Python 3.4.0 shell)
直接在IDLE里输入要执行的代码回车即可执行:
>>> print("hello Mr.tree") hello Mr.tree >>> 6+26 32
关于输出 print()函数:
(1)括号内要打印的文字用单引号或双引号都可以。
(2)逗号以空格形式输出:
>>> print("Mr tree comes from Rehe") Mr tree comes from Rehe >>> print("Mr","tree","comes","from","Rehe") Mr tree comes from Rehe
(3)输出计算结果:
>>> print("11+22 =",11+22) 11+22 = 33
关于输入
(1)想输入字符串lr:
>>> name=input()
lr
输入name=input()并回车后,终端在等待你的输入:输入任意字符串,回车完成输入。输入完成后,并不会有任何提示(可已经把字符串lr赋给了变量name)。
(2)查看变量name
法1:直接输入name 回车:
>>> name 'lr'
法2:print(name):
>>> print(name) lr
(3)示例
>>> name=input("please enter your name:") please enter your name:lr >>> print("hello",name) hello lr
2.数据类型
整型 表示方法同数学
浮点型 1.23x108 = 12.3x107 =1.23e8 注:整数和浮点数在计算机内部存储的方式不同。 整数运算永远是精确的(包括除法),浮点数运算可能会有四舍五入的误差。
字符串:字符串是以单引号或者双引号括起来的任意文本,如: ‘qaz’,“wsx” 。
注:\n表示换行:
>>> print("I'm learning python. \nlr") I'm learning python. lr
布尔型 True False(注意大小写) 布尔运算: and与 or或 not非
空值 None 注:None不能理解为0,None是空值。
>>> bool() False >>> bool(0) False >>> bool('') False >>> bool(1) True
a=626 >>> print(a) 626 >>> a='ABC' >>> print(a) ABC
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。 静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。比如:Java就是静态语言,赋值语句如下就会报错:
int a = 321; //定义变量a为整型 a = ABC; //把字符串赋给整型变量 报错
变量在计算机内存中的表示:
>>> a='ABC'
当我们写a=‘ABC’时,Python解释器做了两件事:
1)在内存中创建了一个‘ABC’的字符串;
2)在内存中创建了一个名为a的变量,并把它指向‘ABC’。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据。
>>> a='ABC' >>> b=a >>> a='XYZ' >>> print(b) ABC
1)执行a=‘ABC’,解释器创建了字符串‘ABC’和变量a,并把a指向‘ABC’。
2)执行b=a,解释器创建了变量b,并把b指向a指向的字符串’ABC‘。
3)执行a=’XYZ‘,解释器创建了字符串,并把a的指向改为’XYZ‘,但是b并没有更改。
所以,最后打印变量b的结果自然就是’ABC‘了。
4.常量
Python中常量的命名全部大写
PI=3.14159
但事实上,PI任然是一个变量,Python机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法。
>>> 10/3 >>>16/2 3.3333333333333335 8.0 >>> 10//3 地板除 3
列表 list (1)列表长度len() (2)首个索引从0开始 (3)roommates[-1]表示最后一个
>>> roommates=['lr','hjj','hjr','lqq'] >>> roommates ['lr', 'hjj', 'hjr', 'lqq'] >>> len(roommates) 4 >>> roommates[0] 'lr' >>> roommates[1] 'hjj' >>> roommates[2] 'hjr' >>> roommates[3]
'lqq'
>>> roommates[-1]
'lqq‘
list是一个可变的有序列表,可以往list中追加元素:
(1)默认加到末尾:
>>> roommates.append('ly') >>> roommates ['lr', 'hjj', 'hjr', 'lqq', 'ly']
(2)插入到第一位(索引号为0):
>>> roommates.insert(0,'ym') >>> roommates ['ym', 'lr', 'hjj', 'hjr', 'lqq', 'ly']
(3)删除末尾的元素.pop(): --pop()函数默认索引位置为最后一位
>> roommates.pop() 'ly' >>> roommates ['ym', 'lr', 'hjj', 'hjr', 'lqq']
删除指定位置元素.pop(i):
>>> roommates.pop(0) 'ym' >>> roommates ['lr', 'hjj', 'hjr', 'lqq']
(4)要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
>>> roommates[3]='ld' >>> roommates ['lr', 'hjj', 'hjr', 'ld']
(5)list里元素类型可以不同:
>>> roommates[3]=123 >>> roommates ['lr', 'hjj', 'hjr', 123]
(6)list元素也可以是另一个list:
>>> M=[123,666,L] >>> M [123, 666, ['Mac', 666, True]]
若要取元素‘Mac’:
>>> M[2][0] 'Mac' >>> L[0] 'Mac'
list M的长度:
>>> len(M)
3
(7)空列表的长度为0
tuple
tuple和list类似,但是tuple一旦初始化就不能修改。
(1)在定义tuple的时候,tuple的元素就必须被确定下来:
>>> t=(1,2,3) >>> t (1, 2, 3)
(2)定义空tuple:
>>> t=() >>> t ()
(3)陷阱:定义只有一个元素的tuple
>>> t=(1) >>> t 1
以上得到的是值为1的变量
注意:只有一个元素的tuple 定义 时必须加一个逗号( ,)以消除歧义:
>>> t=(1,) >>> t (1,)
(4)"可变的"tuple
>>> t=('a','b',['A','B']) >>> t ('a', 'b', ['A', 'B']) >>> t[2][0]='X' >>> t[2][1]='Y' >>> t ('a', 'b', ['X', 'Y'])
tuple一开始指向的list并没有改成别的list,只是其中的元素变了。tuple所谓的“不变”是说tuple的每一个元素指向定义了以后就不发生改变。
>>> names=['lr','hjr','hjj','lqq'] >>> scores=[90,91,92,93] >>> names[0] 'lr' >>> scores[0] 90
(2)一个dict
>>> d={'lr':90,'hjr':91,'hjj':92,'lqq':93}
>>> d['lr']
90
2.插入数据的方法,通过key:
>>> d['Adam']=60 >>> d['Adam'] 60
一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值冲掉。
3.判断key存在与否:
(1)通过in:
>>> 'Paul' in d False
(2) .get方法:
>>> d.get ('Paul') >>> >>> d.get('lr') 90
4.删除key(同时会删除对应的value) d.pop(key)
>>> d {'Adam': 60, 'lqq': 93, 'hjj': 92, 'hjr': 91, 'lr': 90} >>> d.pop('Adam') 60 >>> d {'lqq': 93, 'hjj': 92, 'hjr': 91, 'lr': 90}
注:dict的key必须是不可变对象。通过key计算存储位置的算法称为Hash法,要保证hash的正确性,作为key的对象不可改变。在Python中,字符串/整数等都是不可变的,可以放心的作为key。而list是可变的不能作为key:
>>> key = [1,2,3] >>> d[key]='a list' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
>>> s = set([1,2,3]) >>> s {1, 2, 3} set
>>> s1 = ([1,2,3]) >>> s1 [1, 2, 3] list
set会过滤重复元素:
>>> s = set([1,1,2,2,3,3]) >>> s {1, 2, 3}
2.增加元素:.add(key)
>>> s.add(4) >>> s {1, 2, 3, 4}
4.删除元素:.remove(key)
>>> s.remove(4) >>> s {1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,两个set可以做交并运算:
>>> s1 = set([1,2,3]) >>> s2 = set([1,2,4]) >>> s1&s2 {1, 2} >>> s1|s2 {1, 2, 3, 4}
不可变对象
>>> a = ['c','b','a'] list为可变对象 >>> a.sort() >>> a ['a', 'b', 'c']
a='abc' str为不可变对象 >>> a.replace('a','A') 'Abc' >>> a 'abc'
为便于理解:
>>> a='abc' >>> b=a.replace('a','A') >>> b 'Abc' >>> a 'abc'
浙公网安备 33010602011771号