一、输入输出
print('aaa')
print('The quick brown fox','jumps over','the lazy dog')
print(100+200)
print('100 + 200 =',100+200)
name=input('please enter your name: ')
print('hello',name)
print('1024 * 768 = ',1024*768)
二、数据类型和变量
**整数**
**浮点数**
**字符串**
字符串是以单引号'或双引号"括起来的任意文本
如果'本身也是一个字符,那就可以用""括起来
print("I'm OK") 显示:I'm OK
如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识
print('I\'m \"OK\"!') 显示:I'm "OK"!
比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\。
print('I\'m OK!') 显示:I'm OK
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容
print('''line1
... line2
... line3''')
line1
line2
line3
**布尔值**
在Python中,可以直接用True、False表示布尔值(请注意大小写)
**空值**
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值
**变量**
1、变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
2、在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量
a=123 #a是整数
print(a)
a='ABC' #a变为字符串
print(a)
3、a='ABC',Python解释器干了两件事情:
在内存中创建了一个'ABC'的字符串;
在内存中创建了一个名为a的变量,并把它指向'ABC'。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据
**常量**
1、在Python中,通常用全部大写的变量名表示常量:
PI = 3.14159265359
2、在Python中,有两种除法.
(1)一种除法是/:
print(10/3)
3.3333333333333335
/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
(2)还有一种除法是//,称为地板除,两个整数的除法仍然是整数:
print(10//3)
3
3、Python还提供一个余数运算,可以得到两个整数相除的余数:
print(10%3)
1
例:
s1='Hello, world'
print(s1)
s2='hello,\'Adam\''
print(s2)
s3=r'Hello,"Bart"'
print(s3)
s4=r'''Hello,
Lisa!'''
print(s4)
显示:
Hello, world
hello,'Adam'
Hello,"Bart"
Hello,
Lisa!
三、字符串和编码
**字符编码**
(1)在最新的Python 3版本中,字符串是以Unicode编码的
print('包含中文的Str') 显示:包含中文的Str
(2)对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
print(ord('A')) 显示:65
print(chr(66)) 显示:B
(3)要计算str包含多少个字符,可以用len()函数:
**格式化**
(1)print('Hello,%s' % 'world') 显示:Hello,world
(2)常见占位符
%d 整数;%f 浮点数;%s 字符串;%x 十六进制整数
(3)其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数
print('%2d-%02d' % (3,1)) 显示: 3-01
print('%.2f' % 3.1415926) 显示:3.14
(4)如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串
print('Age: %s. Gender: %s' % (25,True)) 显示:Age: 25.Gender: True
(5)有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%
print('growth rate: %d%%' % 7) 显示:growth rate: 7%
(6)format()
print('Hello,{0},成绩提升了{1:.1f}%'.format('小明',17.125)) 显示:Hello,小明,成绩提升了17.1%
##练习##
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:
# -*- coding: utf-8 -*-
s1=72
s2=85
r=(85-72)/72*100
print('%.1f%%' % r)
18.1%
四、使用list和tuple
**list**
Python内置的一种数据类型是列表:list。
(1)list是一种有序的集合,可以随时添加和删除其中的元素。
cm=['Mi','Bo','Tr']
>>>cm
['Mi', 'Bo', 'Tr']
(2)用len()函数可以获得list元素的个数
(3)用索引来访问list中每一个位置的元素,记得索引是从0开始的
>>>cm[0]
'Mi'
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素
>>>cm[-1]
'Tr'
以此类推,可以获取倒数第2个、倒数第3个
(4)增加:list是一个可变的有序表,所以,可以往list中追加元素到末尾
cm.append('Ad')
也可以把元素插入到指定的位置,比如索引号为1的位置
cm.insert(1,'Jack')
(5)删除:要删除list末尾的元素,用pop()方法
cm.pop()
要删除指定位置的元素,用pop(i)方法,其中i是索引位置
cm.pop(2)
(6)替换:要把某个元素替换成别的元素,可以直接赋值给对应的索引位置
cm[1]='Sa'
(7)list里面的元素的数据类型也可以不同
L=['Apple',123,True]
(8)list元素也可以是另一个list
s=['python','java',['asp','php'],'scheme']
要拿到'php'可以写s[2][1]
(9)如果一个list中一个元素也没有,就是一个空的list,它的长度为0:
L=[]
**tuple**
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改
>>> classmates = ('Michael', 'Bob', 'Tracy')
(1)现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
(2)不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
(3)定义:tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,
t=(1,2)
如果要定义一个空的tuple,可以写成():
t=()
定义一个只有1个元素的tuple,如果你这么定义
错: t = (1)
!!定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
t = (1,)
(4)一个“可变的”tuple
t=('a','b',['A','B'])
t[2][0]='X'
t[2][1]='Y'
>>>t
('a', 'b', ['X', 'Y'])
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
##练习##
L=[
['Apple','Google','Microsoft'],
['Java','Python','Ruby','PHP'],
['Adam','Bart','Lisa']
]
print(L[0][0])
print(L[1][1])
print(L[2][2])
Apple
Python
Lisa
五、条件判断
**条件判断**
age=3
if age>=18:
print('adult')
elif age>=6:
print('teenage')
else:
print('kid')
(1)根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做
(2)注意不要少写了冒号:
(3)可以用elif做更细致的判断
(4)if判断条件还可以简写,比如写
if x:
print('True')
只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False
**再议input**
s=input('birth:')
birth=int(s)
if birth<2000:
print('00前')
else:
print('00后')
(1)input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情:
##练习##
小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
用if-elif判断并打印结果
# -*- coding: utf-8 -*-
height=1.75
weight=80.5
bmi=weight/(height*height)
if bmi>32:
print('严重肥胖')
elif bmi>=28:
print('肥胖')
elif bmi>=25:
print('严重肥胖')
elif bmi>=18.5:
print('正常')
else: print('过轻')
六、循环
**for循环**
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
sum=0;
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum=sum+x;
print(sum)
(1)python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list
list(range(5))
(2)range(101)就可以生成0-100的整数序列,计算如下
sum=0
for x in range(101):
sum+=x
print(sum)
**while循环**
sum=0
n=99
while n>0:
sum+=n
n-=2
print(sum)
**break**
**continue**
七、使用dict和set
**dict**
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
d={'Michael':95,'Bob':75,'Tracy':85}
print(d['Michael'])
(1)把数据放入dict的方法,除了初始化时指定外,还可以通过key放入
d['Adam'] = 67
(2)由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
(3)如果key不存在,dict就会报错
(4)判断存在:一是通过in判断key是否存在 'Thomas' in d
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value
d.get('Thomas')
d.get('Thomas', -1)
(5)删除:用pop(key)方法,对应的value也会从dict中删除
d.pop('Bob')
(6)dict内部存放的顺序和key放入的顺序是没有关系的。
(7)dict是用空间来换取时间的一种方法
(8)dict的key必须是不可变对象:
在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key
**set**
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
(1)要创建一个set,需要提供一个list作为输入集合:s=set([1,2,3])
(2)重复元素在set中自动被过滤
(3)添加:通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
s.add(4)
(4)删除:通过remove(key)方法可以删除元素:s.remove(3)
(5)两个set可以做数学意义上的交集、并集等操作
s1 & s2
s1 | s2
(6)set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象
**再议不可变对象**
(1)上面我们讲了,str是不变对象,而list是可变对象。
对于可变对象,比如list,对list进行操作,list内部的内容是会变化的
而对于不可变对象,比如str,对str进行操作呢:
a='abc'
print(a.replace('a','A'))
print(a)
显示:
Abc
abc
······要始终牢记的是,a是变量,而'abc'才是字符串对象!
有些时候,我们经常说,对象a的内容是'abc',但其实是指,a本身是一个变量,它指向的对象的内容才是'abc':
相反,replace方法创建了一个新字符串'Abc'并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串'abc',但变量b却指向新字符串'Abc'了: