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.23x10= 12.3x10=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
 
3.变量  (变量名为字母数字下划线组合 不以数字开头)
赋值用 =
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不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法。

 附:为什么python整数的除法是精确的?  --只要用 / 的方式,一定能得到精确的结果。
python中的除法有两种:
>>> 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的每一个元素指向定义了以后就不发生改变。

list和tuple是Python内置的有序集合,一个可变一个不可变,根据需要选择使用。
 
 
dict   字典  使用键-值(key-value)储存
1.根据名字查询成绩的两种方法:
(1) 两个list 
>>> 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'

 

set  (无重复key集合,不储存value)
1.创建set 需要一个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'

 

 

 



 

posted @ 2016-10-31 19:46  sniperlr  阅读(198)  评论(0)    收藏  举报