Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- ##廖雪峰py3笔记
- ## '//'这是获得相除后的整数部分
- ##a = 10//3
- ##print (a)
- ## '/'获得相除后的结果,为浮点数,结果能整除也也是浮点数
- ##b = 10/3
- ##print(b)
- ##c = 9/3
- ##print (c)
- ##输入输出
- ##name = input('please enter your name:')
- ##print('hello,',name)
- ##结果:
- ##please enter your name:jianweiwei
- ##hello, jianweiwei
- ##编码
- ##美国字母数据是用的ascii编码,占用一个字节,unicode 是世界公用编码,占用4个字节,Utf_8是新的
- ##国际编码标准,可以根据字符所的编码难易程序,来分配对应的长度,如,在Utf-8中,英文字母是占用1个字节,
- ##中文占用3个字节。
- ##py字符串
- ##对于单个字符的编码,ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
- ##ord('a')#97
- ##print(ord('a'))
- ##print(ord('中'))#20013
- ##print(chr(88))#X
- ##print(chr(25991))#文
- ##py的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节,如果要在网络上传输,或者保存到
- ##保存到磁盘上,就需要把str变为以字节为单位的bytes.
- ##对bytes类型的数据用带b前缀的单引号或双引号表示:
- ##x = b'ABC'#表示bytes类型的数据,每个字符只占一个字节,‘ABC’表示str字符串,用Unicode编码
- ##print(x)#结果:b'ABC'
- ##以Unicode表示的str通过encode()(编码)方法可以编码为指定的bytes,例如:
- ##x = 'ABC'.encode('ascii')
- ##print(x)#结果b'ABC',表示把str类型的'ABC'编码为b'ABC'的以字节为单位的bytes类型的
- ##x = '中文'.encode('utf-8')
- ##print(x)#结果:b'\xe4\xb8\xad\xe6\x96\x87',把中文变成了bytes.
- ##x = '我爱大树'.encode('utf-8')
- ##print (x) #b'\xe6\x88\x91\xe7\x88\xb1\xe5\xa4\xa7\xe6\xa0\x91'
- ##纯英文的str可以用ASCII编码为bytes,含有中文的str可以用utf-8编码为bytes,含有中文的str无法用ASCII编码,因为
- ##中文编码范围超过了ASCII的。在bytes中,无法显示为ASCII的字节,用\x##表示,
- ##反过来,如果我们从网络或磁盘上读取了节节流,那么读的数据就是bytes。要把bytes转为str,yi
- ##需要用decode()方法
- ##x = b'ABC'.decode('ascii')
- ##print (x)#结果ABC,说明已经把字节的b'ABC'转化为str的'ABC'
- ##x = b'\xe6\x88\x91\xe7\x88\xb1\xe5\xa4\xa7\xe6\xa0\x91'.decode('utf-8')
- ##print (x) #我爱大树'
- ##len()用来计算str字符串的字符数,还可以来用计算bytes数据的字节数。
- ##print (len(b'ABC'))#3说明,一个bytes占用一个字节,而一个英文字符占用1个字节。一个中文占用3个字节
- ##print (len('ABC'))#3
- ##print (len(b'\xe6\x88\x91\xe7\x88\xb1\xe5\xa4\xa7\xe6\xa0\x91'))#12
- ##py源码也是文本文件,当源码中包含中文时,在保存源码时,就需要务必指定保存为utr-8可以在文件开头时写上
- ## #!/usr/bin/env python3
- ## #-*- coding:utf-8 -*-
- ##上面第一行是为了告诉Linux/osx系统,这是一个py可执行程序,在windows可以不用写,第二行是说用utf-8读取代码。
- ##py中的格式化,用%实现。
- ##strHi = 'hello,%s'%'world'#在前面字符串中的%s被后面%后的字符串替换。
- ##print (strHi)
- ##当要替换的内容比较多时,后面的%号用括号括起来,用,进行分隔。
- ##常见的点位符有:
- ##%d 整数
- ##%f 浮点数
- ##%s 字符串
- ##%x 16进制整数
- ##其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数。
- ##x = '%2d-%02d' % (3,1)
- ##print (x)# 3-01
- ##x = '%.2f' % 3.1415926
- ##print (x)#3.14
- ##当为了表示在字符中的一个普通的'%',可以用%%来进行转义,
- ##练习
- ##x = (85-72)/72*100
- ##print('小明的成绩提升了%.1f%%'%x) #小明的成绩提升了18.1%
- ##py中的list
- ##classmates = ['a','b','c','d','e']#用[]表示。
- ##x = len(classmates)#用len()函数可以得到list的长度,前面也可以得到str,bytes的长度,字节数量
- ##print(x)#5
- ##print(classmates[2])#可以得到指定位置上的元素c。
- ##print(classmates[len(classmates)-1])#list最后一个元素用len(list)-1来表示位置。
- ##print(classmates[-1])#e,也可能用-1来表示最后一个元素,同理[-2]表示最后第二个。
- ##classmates.append('f')#把f加到最后一个位置上
- ##classmates.insert(1,'0')#把0加入到索引为1的位置。
- ##classmates.pop()#删除最后一个元素。
- ##classmates.pop(3)#删除指定位置为3的元素。
- ##classmates[2] = 'k'#把索引位置为2的元素换为'k'
- ##print(classmates)
- ####list中也可以添加另一个list
- ##classmates.insert(1,[1,3,4])
- ##print(classmates)
- ##print(classmates[1])
- ##
- ##a = []
- ##print(len(a))#0,表示空的list
- ##tuple元组,有序列表,一旦初始化就不能修改,这样数据更安全,所以能用tuple不用list
- ##classmates = ('x','y','z')
- ##print(classmates[0])#'x'
- ###由于tuple不能被修改,所以list中的insert,pop,等一些修改,替换的方法在元组中都不能用。
- #当定义的为一个元素时
- ##t = (1)#这时与数据运算中()会有歧义,Py规定这时按数学运算记,t为1.而不是元组。可以改变。
- ##tupleDemo = ('1','23',[22,33])#表示一个元组里包含一个list,这时元组的元素还是不能改变,但是元组中的list
- #元素的内容是改变的,应该加以区分。
- ####练习
- ##L = [['apple','google','microsoft'],['java','py','puby','php'],['adam','bart','lisa']]
- ##print(L[0][0])
- ##print(L[1][1])
- ##print(L[2][2])
- ##条件判断:if,和java同,就不再详细记录主要是注意格式,缩进。
- ##if x :
- ## print()
- ##elif y :
- ## if l :
- ## print()
- ## elif m :
- ## print()
- ## else :
- ## print()
- ##else :
- ## print()
- ##for循环,py中的for循环与java中的超级for循环类似,把要循环的对象分别赋值给变量。
- ##ziMu = ['a','b','c','d']
- ##for zi in ziMu :
- ## print(zi) #a b c d
- ##range(i)生成一个从0到小于i的一个整数序列。
- ##sum = 0
- ##for ii in range(100):
- ## sum = sum+ii
- ##print (sum)
- ##while循环
- ##while x:
- ## print()
- ## if l:
- ## break
- ##dict全称是dictionary字典,在java中被称为map,有健值对。查找速度快,是能过健值查找,比list快。
- ##d = {'a':111,'b':222,'c':333,'d':444}
- ##d['a']#111.
- ###d[f]因为没有f这个健,所以会报错,因此可以用下面方法:
- ##if 'f' in d :
- ## print(d['f'])
- ###或
- ##d.get('f')#当’f'不存在时,会返回None
- ###要删除一个key,用
- ##d.pop('c')#同时,'c'对应的value值也会被删除掉。
- ##list与dict相比,dict的特点:
- #1.查找与插入速度快,不会随着key的增加变慢。
- #2.要占用大量的内存,
- #list则查找与插入时间会随元素数量的增加而增加。但内存占用相对较少。
- #dict的key不能改变,不然得到的value的内存位置就会改变,value也会改变。因此作为key的类型为
- #不可以改变的类型,str,整型,但list不能作为key.
- ####set
- ###也是 组key的集合,但不存储value,像在dict中一样,key同样不能重复。要创建set,需要提供一个list作为
- ###输入集合
- ##s= set([1,2,3,4,5,3443])
- ##print(s)#{1, 2, 3, 4, 5, 3443},可以看到是大括号,list是[]。同时,set中的元素是无序的。
- ###set会自动过滤list中的重复元素。
- ##q = set([1,1,1,3,3,3,2,2,222222,5,5,])
- ##print(q)#{1, 2, 3, 5, 222222}可以看到,重复元素被过滤了,
- ##q.remove(222222)#
- ##print(q)#{1, 2, 3, 5}用remove(key)来删除一个key
- ###因为set中的元素不能重复,所以可以为两个序列取交集,并集操作。
- ##s1 = set([1,2,3])
- ##s2 = set([2,3,4])
- ###取交集
- ##print(s1 & s2)#{2, 3}
- ###取并集
- ##print(s1 | s2)#{1, 2, 3, 4}
- ###set与dict一样,不可以放入可变对象,因为无法判断两个可变对象是否相等。
- ###尝试把list放入set
- ###s1[0] = [1,2,3]#TypeError: 'set' object does not support item assignment
- ###print (s1[0])
- ###不可变对象:
- ###str是不可变对象,list是可变对象。
- ##a = ['b','a','d','e','c']
- ##a.sort()
- ##print(a)#['a', 'b', 'c', 'd', 'e'],a变成有序的了,说明内容可变。
- ##a = 'abc'
- ##a.replace('a','A')
- ##print (a)#abc,说明a没有变,但是没有变为是可以使用replace()方法呢。
- ##a = 'abc'
- ##b = a.replace('a','A')
- ##print(b)#Abc,可以理解为:a只是一个变量,指向一个内存地址,其中放着字符串'abc',a.replace('a','A')
- ###方法没有改变'abc',而是重新生成一个新的字符串'Abc',b指向了这个新的字符串,a还是指向'abc'
- ####函数
- ##x = -2
- ##abs(x)#求绝对值,当传入的参数的个数不对,会报Typeerror错误。
- ##y = 5
- ##max(x,y)
- ###数据类型转换
- ##print(int('123'))#123,把str类型的’123‘转换为整数123
- ##print(float('12.34'))#12.34
- ##print(str(12.34))#'12.34',
- ##print(bool(1))#True
- ##print(bool(''))#False
- ###像abs()函数中的abs函数名称实际是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于
- ###给函数起了个别名。
- ##a = abs
- ##print(a(-30))
- ##b = max
- ##print(b(18,80))
- ####练习
- ##print(str(hex(30)))#0x1e,把30转换成16进制表示的字符串。
- ####函数的定义
- ###Py中函数定义用def 函数名(参数):函数体,return 返回值
- ##def my_abs(x):
- ## if x>=0:
- ## return x
- ## else :
- ## return -x
- ##print(my_abs(-10))
- ###py中可以传入多个参数,并且有多个返回值。
- ##def manyData(a,b,c):
- ## x = b+c
- ## y = a+b
- ## z = a+c
- ## return x,y,z
- ##print(manyData(1,2,3))#返回的多个参数是以元组的形式返回的。
- ###return,当return后,函数就被结束了执行,当return None,返回就是为空,也可以写成return
- ###空函数:
- ###pass,当函数体为空时,可以用pass结束,返回为None,用pass语句什么都不做,点位符用。当还没有想
- ###想好函数体怎么写是,用pass.
- ##def getAge(age):
- ## if age>=10:
- ## pass
- ##getAge(13)
- ###当调用 一个函数时,传入的参数是一个错误的类型,或参数的个数不对时,就会报TypeError错误。
- ##def my_abs1 (x):
- ## if not isinstance(x,(int,float)):
- ## raise TypeError('bad operand type')
- ## if x>=0:
- ## return x
- ## else :
- ## return -x
- ####print(my_abs1('11'))#当传入的参数类型不正确时,就会报raise 后面的定义的错误。
- ##print(my_abs1(-11))
- ##函数的参数
- #位置参数
- def power(x,n):
- s = 1
- while n>0:
- s = s*x
- n = n-1
- return s
- print(power(12,3))#这里的x,n都是被指定好位置的,叫位置参数。调用时,要依次传入参数。
- #默认参数
- def moren(x,n = 3):
- s = x+n
- return s
- print (moren(1))#4,这里可以看到,函数定义了两个参数,但调用函数时,只传入了一个参数,n没有
- #传入参数值,但也没有报错,原函数里的 n=3就是默认参数,当不传入n的参数值时,就使用默认值,
- #而传入n的参数值时,就会使用传入的参数。
- print(moren(1,10))#11
- print(moren(3))
- #默认参数一般放在函数非默认参数的后面,默认参数一般为变化量不大的参数。
- #默认参数必须指向不变的对象,上面n = 3,是把n 指向3这个不变的数字。
- #当默认参数指向一个可变的对象时:
- def kebian(b = []):
- b.append('X')
- return b
- print(kebian())#['X']
- print(kebian())#['X', 'X'],可以看到,当默认参数指向一个可变对象时,执行同样语句,内容确
- #有变化,这是什么原因呢:因为变量b指向对象[]的引用地址,地址不会变,但[]中的内容是可变的,
- #当第一次执行参数时,[]list,内容就变成了['x'],再次执行时,就会往同一地址指定的[]中再加入一
- #次'x',这样就会导入不希望出来的结果。
- #可变参数
- def kebian(*nums):#接收时用'*'加一个变量名,表示接收可变参数。
- s = 0;
- for num in nums:
- s = s+num
- return s
- print(kebian(1,3,4,3,2,3,3))#可变参数就是用来表示参数个数不确定的函数。传入的参数,是由
- #list或tuple演变简写成这种样式的。
Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数的更多相关文章
- 【python】 [基础] 数据类型,字符串和编码
python笔记,写在前面:python区分大小写1.科学计数法,把10用e代替,1.23x10·9就是 1.23e9 或者 0.00012就是1 ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- Python基础数据类型之字符串
Python基础数据类型之字符串 一.Python如何创建字符串 在python中用引号将一些文本包起来就构成了字符串(引号可以是单引号.双引号.单三引号,双三引号,它们是完全相同的) >> ...
- Python基础学习Day7 基础数据类型的扩展 集合 深浅copy
一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...
- Python学习1 基础数据类型
一.字符串 1.去除首尾字符 str_test = 'Hello World!' str_test.split()#将字符串分割为列表str_test. ...
- Java学习 (七)基础篇 变量
变量 变量顾名思义,就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单位,其要素包括变量名.变量类型和作用域 type varName [=val ...
- python学习之基础入门,安装,字符串,数据转换,三元运算符
python基础 我们要开始学习新的编程语言了,加油~~ python是“世界上最好的语言”,学习它当然是认为它是最好的所以我们才学(人生苦短我学python),python运用于不同的领域,采集分析 ...
- Lua学习----Lua基础数据类型
前言 Lua有6中数据类型,分别是nil(空).boolean(布尔).number(数字).string(字符).table(表).function(函数) 在Lua中可以使用type函数来返回一个 ...
- Python基础 数据类型 (字符串、列表、字典、元组、集合、堆、栈、树)
数据类型有整型.布尔.字符串.列表.字典.元组.集合.堆.栈和树. 1.整型: 整型就是数字 数字表示 python2 64位机器,范围-2^63~2^63-1 超出上述范围,python自动转化为l ...
- java学习笔记(基础篇)—变量与表达式
一:局部变量和实例变量 定义变量是指设定变量的数据类型和变量的名字,Java语言要求变量遵循先定义,再初始化,然后使用的规则. 作用域:指它的存在范围,只有在这个范围内,程序代码才能访问它. 变量的生 ...
随机推荐
- Openstack+Kubernetes+Docker微服务实践之路--Docker和Registry2
渐入佳境,我们开始比较具体的工作,由于Docker是一个基础组件,所以本文的主题是Docker和Registry2. 底层系统基于Centos7,先在一台云主机上安装Docker,Docker的安装非 ...
- MariaDB 在 Windows 下 noinstall 版本的安装和配置
1. 下载并解压 noinstall 压缩包,假设解压到 D:\APP\mariadb-10.0.17-winx64 目录 下载地址(MariaDB 10.0.17 Stable):llarian.n ...
- 隐藏原生html5 video controls
隐藏原生html5 video controls 凤凰视频焦点项目mobile html5播放器测试时bug,由于没有用原生的controls而是自己写的custom controls,虽然设置了co ...
- Thread.join()方法
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B.t.join() ...
- 让Java和MySQL连接起来
Java 连接 MySQL 需要驱动包,可以下载菜鸟教程提供的 jar 包:http://static.runoob.com/download/mysql-connector-java-5.1.39- ...
- Image放大缩小在放进Imageview
// 拿到要缩小放大的Bitmap obitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.ic_launcher) ...
- 【转】 C++的精髓——虚函数
虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原 ...
- simpson法求积分 专题练习
[xsy1775]数值积分 题意 多组询问,求\(\int_l^r\sqrt{a(1-{x^2\over b})}dx\) 分析 double f(double x) { return sqrt(a* ...
- js基本类型 引用类型
参考 https://segmentfault.com/a/1190000005794070 http://blog.csdn.net/yummy_go/article/details/5050468 ...
- SPSS数据分析—因子分析
我们知道主成分分析是一种降维方法,但是其本质上只是一种矩阵变换的过程,提取出来的主成分并不都具有实际含义,而这种含义往往是我们所需要的,接下来的因子分析可以解决这个问题 因子分析可以看做是主成分分析的 ...