第一章 在python中使用数字
1.用变量存储信息
1.1变量的类型
变量,用于存储很多不同的数据类型的信息。
基本数据类型
数据类型 | 存储内容 | 示例 |
integer | 整 | |
float | 浮点 | |
long | 非常大的数 | |
string | 字母数字空格和符号 | |
list【列表(有时候叫数组)】 | 方括号括住一组项,并且项与项之间用逗号分割。 | |
tuple【元祖】 | 圆括号括住的一组项,这些项不能改变。 | |
dictionary【字典】 | 配对的键值对,用花括号。 |
1.2变量中存储数字
type()内置函数用来取得任何变量的数据类型。
>>>a=5 >>>type(a) <type 'int'>
2.在python中做数学运算
python中的运算符
运算 | 符号 |
加法 | |
减法 | |
乘法 | |
除法 | |
Floor除法 | // |
取模 | % |
取反 | – |
绝对值 | abs( ) |
求幂 | ** |
2.2运算组合注意点
1.表达式中如果有一个浮点数,他将返回浮点数。(如一个整数和浮点数相加)
如果表达式中都是同一个数据类型,返回还是这个数据类型。
2.下面是python解释器的问题:[返回结果]
>>>1/2 0
>>>1/float(2) 0.5
3.python中唯一不能做的的事情就是除以0.
第二章 编程中的逻辑
文章中所有的demo都可在百度网盘搜索网站 http://www.gooln.com中搜索到!!
1.创建代码块
缩进,利用空白(空格)来标识代码块。
只有所有的语句缩进到同一层次,这些语句将被看做是统一代码块的一部分。
python代码的标准是为每个代码块使用四个空格。【安全做法是使用空格】。
2.if…else…语句
>>>a=5 >>>if a>5: ... print "Greater than five" ...else: ... print "Five or less" ... Five or less
3.用elif表示多条件判断语句
>>>total = 40.29 >>>if total >50: ... print "more thon 50"; ...elif total >40: ... print "less than 50 more than 40" //比如51满足了(>50)、(>40)这两个条件, ...else: //执行的时候唯一执行第一个为真的语句下面的代码块 ... print "less than 40" ...
4.每个数据类型的使自己为假的方式
数据类型的为假的值
数据类型 | 值 |
integer | 0 |
float | 0.0 |
long | 0 |
string | “ ” |
list | [ ] |
dictionary | { } |
tuple | ( ) |
5.使用 try / except 避免错误
try/except语句由两个代码块组成,
python首先尝试运行try语句,如果得到任何错误,它将运行except代码块的代码。
>>>try: ... 5/0 ...except: ... print "don't do that"
>>>a=5 >>>try: ... a=a+1 //出现错误之前的变量修改依然保存修改后的值。 ... a=a/0 ...except ZeroDivisionError: //捕捉导致程序错误的某些异常列表 ... print "don't do that" ... don't do that >>>print a 6
注意:如果不想在except代码块中做任何操作(纯粹是为了避免报错),应该怎么办?
||__和else一样,except代码块是必须的。
||__在except中放置一条pass语句。
>>>try: ... 5/0 ...except: ... pass
第三章 在字符串中存储文本
了解:字符串的唯一目的是为了程序保存文本。
>>>s="Hello world" >>>s 'Hello world'
1.打印字符串
>>>print 'Apple: ', //在print语句的末尾添加一个逗号(,)可以转到下一行不立即打印 >>>print '$ 1.99/ 1b' Apple: $ 1.99/ 1b
2.获取字符串相关信息的方法
字符串格式化方法
方法 | 描述 | 示例 |
---|---|---|
.len() | 字符串长度 | |
.upper() | 全部大写 | ‘HELLO WORLD’ |
.lower() | 全部小写 | ‘hello world’ |
.capitalize | (整个字符串中)唯一首字母大写 | ‘Hello world’ |
.title() | 每个(空格或者标点符号后)单词首字母大写 | ‘Hello World’ |
字符串内容是否为真 【并符合要求】
方法 | 描述 |
---|---|
.is_alpha | 字符串是否全部由字母组成 |
.is_digit | 字符串是否全部由数字组成 |
>>>birth_year="1980" >>>state="VA" >>>birth_year.isdigit() True >>>state.isalpha() True >>>birth_year="1980 " //数字字符串中增加了一个空格 >>>birth_year.isdigit() False >>>state="VA123" //字母字符串里面增加了数字 >>>state.isalpha() False
3.字符串的数字运算、比较运算、连接运算
/*连接字符串“+”*/ >>>first_name="joe" >>>last_name="ful" >>>first_name+" "+last_name //在名字和姓氏之间增加一个空格 joe ful
//各种字符串的乘法演示 /*乘法(复制字符串)*/ >>>s='hello ' >>>s*5 'hello hello hello hello hello ' /*字符串中保存了一个整数的乘法*/ >>>s='5' >>>s*3 '555' /*字符串乘以负数得到空字符串*/ >>>s="hello" >>>s*-5 '' /*字符串乘以浮点数的话报错(例子不举了)*/
注意:能够用于字符串的运算符号只有加法和乘法!
4.格式化字符串的方法
1.strip()删除两头空格或者制定字符
>>>first_name="Hannah " >>>first.strip() 'Hannah' >>>bad_input="****Hannah****" >>>bad_input.strip(*) 'Hannah' >>>bad_input.rstrip(*) '****Hannah' >>>bad_input.lstrip(*) 'Hannah****'
2.查找文本和替换文本的方法
.count()返回一个字符串在另外一个字符串里面出现的次数。
.find() 找到字符串在文本字符串中第一次出现的位置(如果没有,返回-1)
>>>long_text.count('the') >>>long_text.find('the')
.replace()传递两个参数,找到第一个参数代表字符串的所有实例,并且用第二个参数代替的字符串替代它。
>>>long_text.replace('ugly','meh') "Beautiful is better than meh"
第四章 信息的输入和输出
1.从命令行获取信息
input() 用于收集信息。(1.字符串必须用引号包括。2.缺点输入非数字内容,程序会崩溃)
raw_input() 用于收集任何非数字的信息(1.把任何内容保存为字符串2.如果需要数字的话需要转换)
||__注意python不能转换一个恰好保存在字符串中的浮点数
>>>number=input()
5 >>>number 5 //数字 >>>str=raw_input() 5 >>>str '5' //字符串 >>>s=input() Hello //[程序报错]没有用引号的input,会报错 /*看看(下面两个例子中)字符串中用法的区别(主要是引号)*/ >>>s=input() "Hello" >>>s 'Hello' >>>name=raw_input() Katie >>>name 'Katie'
2.获取输入的密码
>>>from getpass import getpass >>>password=getpass() password: >>>password 'hello'
3.格式化用户的输入
>>>year=raw_input("What year were you born [ex:1980]? :") What year were you born [ex:1980]? :92 >>>if len(year) !=4 or not year.isdigit(): ... print "I'm sorry,I don't like that number." ...else: ... print "That's good. Moving on!" ... I'm sorry,I don't like that number. /*清理并格式化输入字符串首尾的空格*/ >>>name=raw_input("Street name please :") Street name please : Covington Drive >>>name ' Covington Drive ' >>>name=name.strip() >>>name 'Covington Drive'
4.格式化输出
format()函数:为插入内容留下空间:
>>>greeting="Good {},{}.How are you doing?" >>>name="Hannah" >>>time="morning" >>>print greeting.format(time,name) Good morning,Hannah.How are you doing?
>>>specials_text="Good {time}! Today's specials are: {spcial1} and {special2}." >>>time='afternoon' >>>food1="spam with eggs" >>>food2="eggs with spam" >>>print specials_text.format(time=time,special1=food1,spcial2=foods2) Good afternoon! Today's specials are: spam with eggs and eggs with spam.
>>>fruit ="Types of fruit on sale:{},{},{}." >>>fruit.format('apples','pears','mangos','bananas') Types of fruit on sale:apples,pears,mangos.
第五章 列表
将项组合到一种叫做列表的变量中。
1.创建列表
可以使用变量来创建一个列表,但是保存在列表中的,只是变量中内容的一个副本。
||__如果我们修改最初的变量,列表中的值不会改变。[如下例子]
>>>fruit1='apple' >>>fruit2='banana' >>>fruit_list=[fruit1,fruit2] >>>fruit_list ['apple','banana'] >>>fruit1='grapes' >>>fruit_list ['apple','banana']
2.获取有关列表的信息
len() 获知列表中有多少项
count()统计列表中某个项的总数
index() 找到一个项在列表中出现的第一次的索引位置【如果该项不在列表中,返回一个错误】
>>>color_list=['red','blue','magenta','red','yellow'] >>>'pink' in color_list Flase >>>'red' in color_list True >>>color_list.index('blue') 1 >>>color_list.count('red') 2 >>>len(color_list) 5
3.操作列表
append() 在列表末尾添加一个项
extend() 操作一个列表的所有项,添加到另一个列表的结尾。
remove() 删除项,并把列表中的所有项向前移动一位
||__【如果没有找到对相应的项,它将抛出一个错误并停止运行程序】
||__【方法是向python提供想要删除的值,而不是这个项的索引】
insert() 指定位置(不是末尾)添加一个项
>>>toppings=[] >>>toppings.append('pepe') >>>toppings.append('mush') >>>toppings ['pepe','mush']
>>>order1=['pizza','fries','baklava'] >>>order2=['soda','lasa'] >>>order.extend(order2) >>>order1 ['pizza','fries','baklava','soda','lasa']
>>>colors=['red','yellow','green','blue','indigo','violet'] >>>colors.insert(1,'orange') >>>colors ['red','orange','yellow','green','blue','indigo','violet']
4.列表的中使用数学运算
注意:当使用append()和extend()时,则会改变某一列表。
【不想改变任何一个列表的时候,可以用列表的数学运算】
>>>a=[1,2,4] >>>b=[5,7,10] >>>a+b [1,2,4,5,7,10]
>>>nums=[1,2,3] >>>nums*3 [1,2,3,1,2,3,1,2,3]
5.列表排序
reverse() 反转列表中的项
sort() 把列表中的项按照数字排序并按照字母排序
>>>mixed=[5,1,4.0,'Haarold','Carol',7] >>>mixed.sort() >>>mixed [1,4.0,5,7,'Carol','Haarold'] >>>mixed.reverse() ['Haarold','Carol',7,5,4.0,1]
第六章 使用循环重复代码
1.如何重复一段代码一定次数
一.获取数字范围
range()接受一个整数并返回一个数字列表
>>>range(7) [0,1,2,3,4,5,6]
||__如果不想从0开始,那就给range()传递两个参数
>>>range(1,5) [1,2,3,4]
||__让range()按照一定数值(步长)递增选取数字范围,给range()传递三个参数
>>>range(2,20,2) [2,4,6,8,10,12,14,16,18]
开始循环打印选定范围的数字
>>>for i in range(5): ... print i ... 0 1 2 3 4
||__按照降序显示一个范围
>>>range(10,0,-1) [10,9,8,7,6,5,4,3,2,1]
二.命名循环变量
>>>for year in range(1980,2020): ... print "In the {}".format(year) ...
三.遍历列表
>>>cats=['manx','tabby','calico'] >>>for cat in cats: ... print "That's a nice {} you have there!".format(cat) ...
四.循环到特殊选项时候跳到下一个列表项
>>>numbers=[5,2,0,20,30] >>>for num in numbers: ... if num==0: ... print "hi,you gave me a 0" ... contine ... new_number=100.0/num ... print "100/{}={}".format(num,new_number) ... 100/5=20.0 100/2=50.0 hi,you gave me a 0 100/20=5.0 100/30=3.33333333333
五.跳出循环
注意:else语句允许为for循环添加另外一个代码块;
【break语句没有运行的时候,else代码块中的语句会被打印出来】
【for循环创建的变量,在for循环完成后并不会消失,它将是for循环中所用到的最后一个值】
>>>cart=[50.25,20.98,99.99,1.24,.84,60.03] >>>for item in cart: ... print item ... if item>100: ... print "you are going to ..." ... break ...else: ... print "no run ... ..." ... 50.25 20.98 99.99 1.24 0.84 60.03 no run ... ...
2.只有为真的时候重复
一.while循环
>>>age=raw_input("please give me your age in years (eg. 30):") >>>while not age.isdigit(): ... print "I'm sorry ,but {} isn't valid.".format(age) ... age=raw_input("please give me your age in years (eg. 30):") ...print "Thanks! Your age is set to {}".fromat(age)
isdigit只能用在str(字符串)上
二.无限循环
>>>while True: ... text=raw_input("Give me some text,and I'll count the e's. Enter 'q' to quit :") ... if text =='q': ... break ... print text.count('e') ... Give me some text,and I'll count the e's. Enter 'q' to quit :Katie 1
第七章 创建简单的脚本
一.创建一个基本的函数
>>>def hello2(name): ... print "Hello,{}".format(name) ... >>>hello2('hannah') Hello,hannah
二.传递值给函数
>>>def print_total(customer_name,items): ... print "Total for {}".format(customer) ... total=0 ... for ite in items: ... total=total+ite ... print "${}".format(total) ... >>>print_total(items=[4.52,6.31,5.00],cstomer_name='Karen') Total for Karen $15.83
1.设置默认值
>>>def print_welcome(first,last,middle=''): //默认值设置规则:最后定义参数的默认值 ... print "Welcome,{}{}{}!".format(first,middle,last) ... >>>print_welcome(first='James',last="Joe")
2.返回值
||__return可以返回一个值
||__return也可以返回多个值(用逗号隔开即可)【即返回一个元组】
>>>def get_square_and_cube(number): ... square=number**2 ... cube=number**3 ... return square,cube ... >>>result=get_square_and_cube(5) >>>result (25,125) >>>square,cube=get_square_and_cube(3) //将返回的值赋给他们自己的变量【变量个数应该和元组的项个数一致,否则错误】 >>>square 9 >>>cube 27
||__return也可以不返回值,只用来中断程序,返回到主程序
>>>def check_year(year): ... if len(year)!=4: ... print "{} is invalid sa a year.".format(year) ... return ... print "Good, that seems t work as a year!" ... >>>check_year("80") 80 is invalid sa a year.
三.函数中变量的作用域
当传递一个值给函数时,通常是传递值的副本。
四.在函数中组织函数
一个函数把多个函数聚集起来。(通常这个函数叫main())
>>>def main(): ... username=get_username() ... password=get_password() ... authenticated=authenticate(user=username,password=password) ... if authenticate: ... print_timesheet(username) ... add_hours(username) /* *如果想把程序作为脚本来运行,有两种方法来调用 *一.在函数之外调用main()函数 *二.在文件的底部,所有的函数之外,添加下面两行代码。 * if __name__=="__main__": //__name__是一个特殊的变量,在python运行一个文件时候设置。 * main() **/
五.传递可变数目的参数
如果不知道用户需要传递多少个参数,则用到下面两个:
1.**kwargs
>>>def test_args(item_one,item_two,**kwargs): ... print item_one ... print **kwargs ... >>>test_args(item_one="hello",item_two="world",item_three="how are you?") hello {'item_three':'how are you?'} //多余参数储存在字典
2.*args
>>>def test_args(first,second,*args): ... print first ... print args ... >>>test_args(1,2,3,4,5) 1 (3,4,5) //后面三个值存在元组中了
第八章 使用字典匹配键和值
【把一部分数据和另外一部分数据配对的时候,字典很有用。】
一.创建字典
>>>states={} >>>typeof(states) <type 'dict'>
pop() 删除一个键,并返回这个键对应的值。
||__如果没有键和我们给pop()函数的值匹配,python会抛出一个错误。
>>>states={ ... "vip":"rich", ... "mar":"ann", ... "new":"alb", ... } >>>states['abc']="xyz" #访问和设置通过"dict[键]"的形式#如果没有与该键对应的值,将会抛出错误并退出 >>>states.pop("vip") #pop()函数中传递的是键的字符串,和上一行不同。 'rich' >>>states {'mar':'ann', 'new':'alb','abc':'xyz'}
二.获取有关字典信息
has_key() 查看字典内一个键是否存在。
关键词 in 查看键是否存在字典中。
>>>dic={'one'=1,'two'=2,'tree'=2} >>>dic.has_key('one') True >>>'one' in dic True >>>dic.values() [1,2,2] #即使两个值相等,也会被添加到values()返回的列表中
values() 返回字典中所有使用的值的一个列表
keys() 返回字典中所有使用的键的一个列表
三.字典需求的根源解析–字典不看重顺序
python不会按照顺序来保存字典中的项,两个字典中只要键值对是相同的,那么这两个字典是相同的。
如果需求项按照特定的顺序存储的话,那就用列表。