4.python基础Python对大小写敏感,缩进的好处就是强迫你写出缩进较少的代码缺点就是复制代码功能失效了。1)数据类型和变量Python可以处理的数据类型:整数;浮点数;字符串;布尔值(tureorfasle)布尔值可以用and、or、not运算;空值(none,不等于零)变量:变量名必须是大小写英文、数字和_的组合,且不能用数字开头常量:就是不能变的量2)字符串和编码字符编码:捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。字符ASCIIUnicodeUTF-8A01000001000000000100000101000001中x0100111000101101111001001011100010101101Python的字符串对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:ord('A')65chr(66)'B'以Unicode表示的str通过encode()方法可以编码为指定的bytes'ABC'.encode('ascii')b'ABC''中文'.encode('utf-8')b'\xe4\xb8\xad\xe6\x96\x87'反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:b'ABC'.decode('ascii')'ABC'b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')'中文'要计算str包含多少个字符,可以用len()函数:len('ABC')3len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:len(b'ABC')3len(b'\xe4\xb8\xad\xe6\x96\x87')6由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:#!/usr/bin/envpython3#-*-coding:utf-8-*-格式化%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。常见的占位符有:%d-整数%f-浮点数%s-字符串%x十六进制整数如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:s1=72s2=85r=100*(s2-s1)/s1print('小明成绩提升了%.1f%%'%r)3)使用list和tupleListPython内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示:classmates=['Michael','Bob','Tracy']classmates['Michael','Bob','Tracy']变量classmates就是一个list。用len()函数可以获得list元素的个数:len(classmates)3用索引来访问list中每一个位置的元素,记得索引是从0开始的:classmates[0]'Michael'classmates[1]'Bob'如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:classmates[-1]'Tracy'以此类推,可以获取倒数第2个、倒数第3个:classmates[-2]list是一个可变的有序表,所以,可以往list中追加元素到末尾:classmates.append('Adam')classmates['Michael','Bob','Tracy','Adam']也可以把元素插入到指定的位置,比如索引号为1的位置:classmates.insert(1,'Jack')classmates['Michael','Jack','Bob','Tracy','Adam']要删除list末尾的元素,用pop()方法:classmates.pop()'Adam'classmates['Michael','Jack','Bob','Tracy']要删除指定位置的元素,用pop(i)方法,其中i是索引位置:classmates.pop(1)'Jack'classmates['Michael','Bob','Tracy']要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:classmates[1]='Sarah'classmates['Michael','Sarah','Tracy']Tuple另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:classmates=('Michael','Bob','Tracy')现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。作业:请用索引取出下面list的指定元素:#-*-coding:utf-8-*-L=[['Apple','Google','Microsoft'],['Java','Python','Ruby','PHP'],['Adam','Bart','Lisa']]#打印Apple:print(?)#打印Python:print(?)#打印Lisa:print(?)L=[['Apple','Google','Microsoft'],['Java','Python','Ruby','PHP'],['Adam','Bart','Lisa']]print(L[0][0])print(L[1][1])print(L[2][2])4)条件判断if条件判断1:执行1elif条件判断2:执行2elif条件判断3:执行3else:执行4判断程序s=input('birth:')birth=int(s)ifbirth2000:print('00前')else:print('00后')作业:小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:低于18.5:过轻18.5-25:正常25-28:过重28-32:肥胖高于32:严重肥胖用if-elif判断并打印结果:#-*-coding:utf-8-*-height=1.75weight=80.5bmi=???if???:PassHeight=1.75Weight=80.5Bmi=weight/height^2Ifbmi32:Print(‘严重肥胖’)Elifbmi28:Print(‘肥胖’)Elifbmi25:Print(‘过重‘)Elifbmi18.5Print(‘正常’)ElsePrint(’过轻‘)Pass5)循环For...in循环,依次把list或tuple中的每个元素迭代出来,看例子:names=['Michael','Bob','Tracy']fornameinnames:print(name)再比如我们想计算1-10的整数之和,可以用一个sum变量做累加:sum=0forxin[1,2,3,4,5,6,7,8,9,10]:sum=sum+xprint(sum)range(101)就可以生成0-100的整数序列,计算如下:sum=0forxinrange(101):sum=sum+xprint(sum)while循环第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:sum=0n=99whilen0:sum=sum+nn=n-2print(sum)Break在循环中,break语句可以提前退出循环。例如,本来要循环打印1~100的数字:continue在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。6)使用dict和setdictPython内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:d={'Michael':95,'Bob':75,'Tracy':85}d['Michael']95Setset和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合:s=set([1,2,3])s{1,2,3}