python基础(二),python基础

python基础4,python基础

内容概要:

 

一、递归

递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数

递归特性:

  • 必须有一个明确的结束条件
  • 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
  • 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

示列1:求10!的值。

 1 #方法一递归实现
 2 #/usr/bin/env python
 3 # -*- coding:utf-8 -*-
 4 #Author:W-D
 5 def sumn(n):
 6     if n<=2:#递归结束条件
 7         return n
 8     else:
 9         return (n * sumn(n-1))#调用函数本身
10 print(sumn(10))
11 结果:
12 3628800
13 
14 方法二:for循环实现
15 a=1
16 for i in range(1,11):
17     a=a*i
18 print(a)
19 结果:
20 3628800

示列二:使用递归的方式来生成斐波那契数列(斐波那契数列就是前面给两个数相加得到后面一个数,依次往后)

图片 1

 1 #/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:W-D
 4 def feola(n1,n2):
 5     n3=n1+n2
 6     if n1>500:#结束条件为数大于500
 7         return
 8     print("{}".format(n1))#打印值
 9     feola(n2,n3)#自身调用
10 feola(0,1)
11 结果:
12 0
13 1
14 1
15 2
16 3
17 5
18 8
19 13
20 21
21 34
22 55
23 89
24 144
25 233
26 377

View Code    

二、匿名函数lambda

 匿名函数,顾名思义就是不需要显示的定义函数名的函数,但是在语法上受限于一个表达式。

语法:

1 函数名=lambda 参数:代码

示列:

 1 #/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:W-D
 4 f=lambda x,y:x+y#匿名函数表达式
 5 print(f(3,2))#调用
 6 结果:
 7 5
 8 
 9 #换个姿势用普通方式定义
10 def my_add(x,y):
11     return x+y
12 print(my_add(3,2))#调用
13 结果:
14 5

 

内容概要: 一、递归
递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数 递归特性:
必须有一个明确…

python基础一,python基础

关于内存分配问题

 1 ##字符串新定义则开辟新的一块内存空间
 2 >>> str1 = 'hoho'
 3 >>> str2 = str1
 4 >>> id(str1),id(str2) #查看内存对象地址,观察内存地址,即str2新开辟了内存空间
 5 (140297199501752, 140297199501752) #这里看到是一样的是由于python的一个内部机制导致的,如果字符串足够大的话就会是不一样的,不用纠结
 6 >>> str2 = 'heihei'
 7 >>> str1
 8 'hoho'
 9 >>> str2
10 'heihei'
11 >>> id(str1),id(str2) #看,内存地址是不是变了
12 (140297199501752, 140297214622552) 
13 
14 ##非字符器,如列表,元组,字典赋值定义后其实只是把新的变量名(可以理解为标签)指向同一内存地址,以字典为例,如下所示
15 >>> dic1 = {'name':'hoho'}
16 >>> dic2 = dic1
17 >>> id(dic1),id(dic2)
18 (140297199190088, 140297199190088)
19 >>> dic1 = {'name':'hoho'}
20 >>> dic2 = dic1
21 >>> id(dic1),id(dic2) #查看内存对象地址,发现是一样的,故修改dic2事实上dic1也跟着修改了
22 (140297199191752, 140297199191752)
23 >>> dic2['name'] = 'heihei'
24 >>> dic2
25 {'name': 'heihei'}
26 >>> dic1
27 {'name': 'heihei'}

 

列表,元组及字典的复制问题(浅复制与深复制 copy模块的使用)

1、列表及元组可使用切片实现浅复制,也可使用 copy模块使用浅复制(包括字典)

2、使用copy.deepcopy() 实例深复制

 1 >>> import copy
 2 >>> list1 = [1,2]
 3 >>> list2 = list1
 4 >>> list2[0] = 2 #list2改了,list1跟着变了
 5 >>> list1
 6 [2, 2]
 7 >>> list3 = list1[:] #浅复杂,利用数组切片做浅复制
 8 >>> list3 = copy.copy(list1)
 9 >>> id(list1),id(list2),id(list3) #这里就可看到地址空间是不一样的
10 (140297199250696, 140297199250696, 140297199247560)
11 >>> 
12 >>> list4 = [1,[2]] ##复杂结构必须用深复制
13 >>> list5 = list4[:]
14 >>> list5
15 [1, [2]]
16 >>> list5[1][0] = 6
17 >>> list4
18 [1, [6]]     #从这里可以看到内层的列表事实是没复制的,list4也跟着变了
19 >>> list6 = copy.deepcopy(list4) #这里使用深复制
20 >>> list6[1][0] = 8
21 >>> list6
22 [1, [8]]
23 >>> list4
24 [1, [6]] #这里就可以看出已经复制的了

 

常用内置函数

python内置函数是非常多的,记住常用的就行了,但会知道怎么查看有哪些内置函数,函数的帮助

正常情况下分3步走

整形

图片 21
>>> s,y = divmod(7,3) ## divmod
返回数据,值为(商,余数),可用于分页 2 >>> s,y 3 (2, 1) 4
>>> a = -2 5 >>> abs(-2) #abs取绝对值 6 2 7
>>> len(str(-2)) #取速度长度 8 2 View Code

浮点

图片 31
>>> a = 7.0 2 >>> divmod(a,3) 3 (2.0, 1.0) 4
>>> a = 7.235 5 >>> a.__round__(2) #四舍五入 6
7.24 7 >>> a.__trunc__() #取整 8 7 View Code

字符串

图片 4 1
>>> str1 = ‘this is a string’ 2 >>> ‘is’ in
str1 #成员判断 3 True 4 >>> str1[1:3] # 切片操作与索引 5
‘hi’ 6 >>> len(str1) #长度 7 16 8 >>>
str1.find(‘is’) #查找字符串,返回索引值 9 2 10 >>>
str1.find(‘is’,3,9) 11 5 12 >>> str1.find(‘iss’)
#没有找到返回-1 ,如是index则会报错 13 -1 14 >>>
str1.index(‘is’,3) 15 5 16 >>> str1.index(‘iss’) 17 Traceback
(most recent call last): 18 File “<stdin>”, line 1, in
<module> 19 ValueError: substring not found 20 >>> str1 =
‘ aaa’ 21 >>> str1.strip() 去空白,换行,回车 22 ‘aaa’ 23
>>> str1.lstrip() 24 ‘aaa’ 25 >>> str1.rstrip() 26 ‘
aaa’ 27 >>> str1 = ‘duiqi’   #对齐操作 28 >>>
str1.ljust(20) 29 ‘duiqi ‘ 30 >>> str1.ljust(20,’*’) 31
‘duiqi***************’ 32 >>>
str1.rjust(20,’*’) 33 ‘***************duiqi’ 34
>>> str1.center(20,’*’) 35
‘*******duiqi********’ 36 >>> str1 = ‘this is a
string’ 37 >>> str1.split()  ##分割操作 38 [‘this’, ‘is’,
‘a’, ‘string’] 39 >>> str1.splitlines() 40 [‘this is a
string’] 41 >>> list1 = [1,2,3] 42 >>>
‘->’.join([str(i) for i in list1]) #连接操作 43 ‘1->2->3’
44 >>> str1 45 ‘this is a string’ 46 >>>
str1.count(‘is’) #计数 47 2 48 >>>
str1.replace(‘is’,’os’) #替换 49 ‘thos os a string’ 50 >>>
str1.replace(‘is’,’os’,1) #替换,只替换1个 51 ‘thos is a string’ 52
53 str1.startswith(‘sub’) #以什么开头 54 str1.endswith(‘sub’)
#以什么结尾 55 str1.lower() #转为小写 56 str1.upper() #转为大写 View Code

列表与元组(元组不可修改)

图片 5 1
>>> lst1 = [‘a’] 2 >>> lst1.append(‘b’) #新增 3
>>> lst1 4 [‘a’, ‘b’] 5 >>> lst2 = [‘c’,’d’] 6
>>> lst1.extend(lst2) #扩展新增 7 >>> lst1 8 [‘a’,
‘b’, ‘c’, ‘d’] 9 >>> lst1.insert(0,’z’) #插入 10
>>> lst1 11 [‘z’, ‘a’, ‘b’, ‘c’, ‘d’] 12 >>>
lst1.pop() #去除末尾 13 ‘d’ 14 >>> lst1 15 [‘z’, ‘a’, ‘b’,
‘c’] 16 >>> lst1.remove(‘z’) #删除指定元素 17 >>>
lst1 18 [‘a’, ‘b’, ‘c’] 19 >>> lst1 = [‘a’, ‘b’, ‘c’, ‘d’]
20 >>> lst2 = lst1.copy() # 浅复制 python3才有 21
>>> lst2 = lst1.copy() 22 >>> lst2 23 [‘a’, ‘b’, ‘c’,
‘d’] 24 >>> lst2.clear() #清空列表 25 >>> lst2 26
[] 27 >>> del lst2 #删除列表 28 >>> lst1 29 [‘d’,
‘c’, ‘b’, ‘a’] 30 >>> lst1.sort() #排序 31 >>> lst1
32 [‘a’, ‘b’, ‘c’, ‘d’] 33 >>> lst1.append(‘a’) 34
>>> lst1.count(‘a’) #计数 35 2 36 >>> lst1 37 [‘a’,
‘b’, ‘c’, ‘d’, ‘a’] 38 >>> len(lst1) #长度 39 5 40
>>> lst1.index(‘a’) #索引 41 0 42 >>>
lst1.index(‘a’,1) #索引 43 4 View
Code

字典

图片 6 1
>>> dic1 = {‘key1’ : ‘a’,’key2′ : ‘b’} 2 >>>
dic1.get(‘key1’) #取字典值,没取到默认返回None,也可指定 3 ‘a’ 4
>>> dic1.get(‘key3’) 5 >>> dic1.items() 6
dict_items([(‘key2’, ‘b’), (‘key1’, ‘a’)]) #返回元组列表 7
>>> list(dic1.items()) 8 [(‘key2’, ‘b’), (‘key1’, ‘a’)] 9
>>> dic1.keys() #返回keys列表 10 dict_keys([‘key2’,
‘key1’]) 11 >>> dic1.values()       #返回值列表 12
dict_values([‘b’, ‘a’]) 13 >>> dic2 = dic1.copy() #浅复制
14 >>> dic2 15 {‘key2’: ‘b’, ‘key1’: ‘a’} 16 >>>
dic1[‘key3’] = ‘c’ #赋值(修改) 17 >>> dic1 18 {‘key2’: ‘b’,
‘key1’: ‘a’, ‘key3’: ‘c’} 19 >>>
dic1.pop(‘key1’) #删除指定的key 20 ‘a’ 21 >>> dic1 22
{‘key2’: ‘b’, ‘key3’: ‘c’} 23 >>> dic1.get(‘key1′,’a’)
#取值,没有返回’a’ 24 ‘a’ 25 >>> dic1 26 {‘key2’: ‘b’, ‘key3’:
‘c’} 27 >>> dic1.setdefault(‘key1′,’a’)
#设置默认(貌似没什么用) 28 ‘a’ 29 >>> dic1 30 {‘key2’: ‘b’,
‘key1’: ‘a’, ‘key3’: ‘c’} 31 >>> dic3 = {‘name’:’update’} 32
>>> dic1.update(dic3) #更新 33 >>> dic1  34
{‘key2’: ‘b’, ‘name’: ‘update’, ‘key1’: ‘a’, ‘key3’: ‘c’} 35
>>> del dic3 #删除 36 >>> dic1 37 {‘key2’: ‘b’,
‘name’: ‘update’, ‘key1’: ‘a’, ‘key3’: ‘c’} 38 >>>
len(dic1) #长度 39 4 View
Code

 

关于内存分配问题 1 #
#字符串新定义则开辟新的一块内存空间 2 str1 = ‘ hoho ‘ 3 str2 = str1 4
id(str1),id(str2) # 查看内存对…

python基础(二),python基础

python基础六,python基础

python基础1,python基础

一、Python安装
1、下载安装包

2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】–》【属性】–》【高级系统设置】–》【高级】–》【环境变量】–》【在第二个内容框中找到
变量名为Path 的一行,双击】 –> 【Python安装目录追加到变值值中,用 ;
分割】
如:原来的值;C:\python27,切记前面有分号

二、Hello World程序
1、在linux 下创建一个文件叫hello.py,并输入

print(“Hello World!”)
然后执行命令:python hello.py ,输出

2、指定解释器

上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python
解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py
,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python
print “hello,world”

如此一来,执行: ./hello.py 即可。

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

三、变量
1、声明变量:
#_*_coding:utf-8_*_
name = “Guo”
上述代码声明了一个变量,变量名为: name,变量name的值为:”Guo” 

2、变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’,
‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’,
‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’,
‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

3、变量的赋值:
name = “Guo”
name2 = name
print(name, name2)

name = “tg”
print(name, name2)

四、字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information
Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用
8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示
255 个符号。

1、关于中文

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312
支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的
GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK
到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集
(DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

2、显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode
是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由
16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…

所以,python解释器在加载 .py
文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文
#!/usr/bin/env python
print “你好,世界”

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print “你好,世界”

3、pycharm添加模板:
pycharm添加模板:File –> Settings –> Editor –> File and Code
Templates –> Python Script
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: gtg

五、注释
  当前行注视:# 被注释内容
  多行注释:””” 被注释内容 “””

六、用户输入
#!/usr/bin/env python
#_*_coding:utf-8_*_
#name = raw_input(“What is your name?”) #only on python 2.x
name = input(“What is your name?”)
print(“Hello ” + name )

输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass(“请输入密码:”)
# 打印输入的内容
print(pwd)

用户输入格式化字符串代码:

name = input("you name:")
age = int(input("you age:"))
work = input("you word:")

msg = '''infomation of user %s:
---------
name:%s
age:%d
work:%s
---end---
''' % (name, name, age, work)
print(msg)

%s:字符串    %d:整数    %f:浮点数

 

七、模块初识:
1、getpass模块:
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
代码:(pycharm下不好使)
import getpass
username = input(“username:”)
password = getpass.getpass(“password”)
print(username,password)

2、os模块:
import os
os.system(“df -h”)
os.mkdir(“pythondir”) linux上创建目录
cmd_res = os.popen(“df -h”).read() 把命令执行结果保存到变量中

3、sys模块:
import sys
print(sys.path)

八、if else语句:
1、用户名密码代码:

user = "gtg"
passwd = "123"

username = input("your name:")
password = input("your password:")

if user == username and passwd == password:
print("Welcom Login")
else:
print("username or password ERROR")

2、猜数字游戏代码:

age = 26
for i in range(10):
if i < 3:
guess_num = int(input("guess number is:"))
if guess_num == age:
print("OK")
break
elif guess_num > age:
print("BIG")
else:
print("SMALL")
else:
print("QUIT")
break

猜数字游戏代码优化代码:

age = 26
count = 0
for i in range(10):
if count < 3:
guess_num = int(input("guess number is:"))
if guess_num == age:
print("OK")
break
elif guess_num > age:
print("BIG")
else:
print("SMALL")
else:
continue_confirm = input("want to continue:")
if continue_confirm == 'y':
count = 0
continue
else:
print("QUIT")
break
count +=1

 

一、Python安装
1、下载安装包 2、安装
默认安装路径:C:\python27 3、配置环境变量 【右键计算…

变量

变量的另一种赋值方式

user = 'ljb'
passwd = 'ljb123'
user,passwd = 'ljb','ljb123'

 

 

一、id

比较的数值,输出结果为True 或者 False

is比较的是内存地址

 

id 查看内存地址

 

内存地址相当与门牌号a = 1000

b = 1000

print(a == b)

# == 比较的是数值

#is 比较的是内存地址。

# print(a is b)

#查看内存地址id()

# print(id(a))

# print(id(b))

常量

变量用大写

MYSQL_CONNECTION = '192.168.1.1'

 

二、小数据池

#数字: -5 ~ 256 节省空间。

 

#字符串: 1,如果含有特殊字符,不存在小数据池。

# 2,str(单个) * int int > 20 不存在小数据池。

 

#其他都不存在小数据池。

pyc文件

导入模块后会在相应目录生成pyc文件,pyc文件为字节码文件
python调用模块过程
首先调用模块之后会生成pyc的字节码文件,然后解释器通过识别这个二进制的字节码文件来执行py程序

注:
py2 上直接在当前目录生成pyc文件
py3上 会创建__pycache__目录下面生产cpython-35.pyc 这样的类似文件

 

三、编码

存储和传输是0101,但是不可以使用Unicode编码进行传输

python3中的编码:python3中str在内存中的编码方式是Unicode。python3中的str不能直接存储和发送。

bytes的编码方式是非Unicode(UTF-8,GBK,GB2312….)

对于英文:str表现形式: s = ‘kuoiea’ 
内部编码为:Unicode
byte表现形式s = b’kuoiea’
内部编码形式为非unicode

对于中文:str表现形式: s = ‘中国’ 
内部编码为:Unicode
byte表现形式s = b’\xe4\xb8\xad\xe5\x9b\xbd’
内部编码形式为非unicode

encode编码:将str类型转换成byte类型
decode解码:将byte类型转换成str类型

# s = 'fdsagsadfsad方式打开家乐福;按时fdsafdsa'
#ip地址 端口等等
# s1 = input('你好')
# s1
# s = 'laonanhai'
# s1 = b'laonanhai'
# print(type(s))
# print(type(s1))


# s = 'alex'  # str
# s1 = s.encode('utf-8')  # bytes
# encode 编码 :str --- > bytes
# s = 'hello girl'
# s1 = s.encode('utf-8')
# print(s1)

# s = 'hello girl'
# s1 = s.encode('gbk')
# print(s1)
# s = '中国'
# s1 = s.encode('utf-8')
# print(s1)

# s = '中国'
# s1 = s.encode('gbk')
# print(s1)

 

一、id
比较的数值,输出结果为True 或者 False is比较的是内存地址 id 查看内存地址
内存地址相当与门牌号a = 1000 b…

数据类型

1 数字

int long float 复数

2 布尔值

True or False
1 or 0
判断1和0 代表True和False
>>> 1 == True
True
>>> 0 == False
True

3 字符串

字符串常用功能:
• 移除空白

• 分割

• 长度

• 索引

• 切片

username = input(‘inout you username’)

username.strip() #移除空白

name = ‘ljb,kkk,lll’

name.split(‘,’)  #拆分

name[2:4] #切分,取第3个到第4个字符

name.center(40,’-‘) #长度为40,居中显示name的字符,两边用-填补

name.isdigit #判断输入的字符书否为数字

name.isalnum() #判断是否有特殊字符

name.startwith(‘dsfdsa’) #判断字符串是否以dsfdsa 开头

name.endwith(‘sdfaf’) #判断字符串是否以sdfaf 结尾

name.find(‘l’) #查找字符串中的l字符,打印字符的位置,不存在显示-1

>>> name = 'langjianbin'
>>> name.find('m')
-1
>>> name.find('j')
4
>>>

  

方法举例

图片 7#!/usr/bin/env
python # -*- codind:utf-8 -*- #Author:ljb #user =
input(‘username:’) #if user.strip() == ‘ljb’: #去空白 #
print(‘welcome’) #name = ‘ljb,langjb,langjianbin’ #name1 =
name.split(‘,’) #以逗号分割为列表 #print(name1)
#print(‘|’.join(name1)) #以|来合并为一个字符串 name = ‘lang jian bin’
print(name.center(40,’-‘)) #居中 print( ” in name)
#判断字符串中是否有空格 print(name.capitalize()) #字符串的首字符大写
msg = “Hello ,my name is {Name},age is {Age}”
print(msg.format(Name=’ljb’,Age=33)) #format格式输出 msg2 =
‘lang{0}Age{1}’ print(msg2.format(‘jianbin’,22)) #format另一种方式
#age = input(‘Your age:’) #if age.isdigit(): #判断是否为数字 # age =
int(age) # print(age) #else: # print(‘invalid data’) name4 = ‘adsfdg’
name5 = ‘AAADDSFDA’ print(name4.isalnum()) #判断是否有特殊字符#!@等
print(name4.endswith(‘dg’)) print(name4.startswith(‘sadSF’))
print(name4.upper()) print(name5.lower()) View Code

 

+  在字符串中连接

下面的例子表示三个字符串连接起来,但是计算机将这三个字符串分配了三个内存空间,这样很占用资源,因此在写py程序中注意尽量少用这样的拼接字符串

>>> print ('hello' + '\n' + 'how are you')
hello
how are you

4 列表

列表的常用操作

• 索引

• 切片

• 追加

• 删除

• 长度

• 切片

• 循环

• 包含

name = [‘ljbv’,’dsfg’,’222′]

插入
name.insert(2,’kkk’)  #第3个位置插入kkk

追加
name.append(‘aaa’) #在列表末尾追加aaa

删除
name.remove(‘dsfg’) #删除列表中未dsfg的元素

del删除内存中的数据
del name[4:6]       #批量删除(不仅仅试用于列表,其他的字典
元组等均可以使用del)

练习
1 写一个列表,列表里包含本组所有成员

2 往中间插入两个临组成员名字

3 取出第3-8的人列表

4 删除第7个人

5 把刚才加入的两个人一次性删除

6 把组长的名字加上组长备注

7 要求你隔一个人打印一个人

 

图片 8#!/usr/bin/env
python # -*- codind:utf-8 -*- #Author:ljb ”’ 1
写一个列表,列表里包含本组所有成员 2 往中间插入两个临组成员名字 3
取出第3-8的人列表 4 删除第7个人 5 把刚才加入的两个人一次性删除 6
把组长的名字加上组长备注 7 要求你隔一个人打印一个人 ”’ group_list =
[‘ljb0′,’ljb1′,’ljb2′,’ljb3′,’ljb4′,’ljb5′,’ljb6′,’ljb7’]
print(‘本组成员列表:’) print(group_list )
print(‘插入两个临组成员名字:’) group_list.insert(4,’zhangsan’)
#中间插入两个临组成员 group_list.insert(5,’lisi’)
#中间插入两个临组成员 print(group_list) print(‘取出第3-8的人列表:’)
print(group_list[2:8]) #打印第3-8个人列表 print(‘删除第7个人’)
group_list.remove(group_list[6]) #删除第7个人 print(group_list)
#一次性删除刚才加入的两个人 print(‘把刚才加入的两个人一次性删除’) del
group_list[4:6] print(group_list) #组长名字添加备注
print(‘把组长的名字加上组长备注’) group_list.remove(‘ljb0′)
group_list.insert(0,’ljb0_zuzhang’) group_list[0] = ‘ljb0_zuzhang’
print(group_list) #间隔打印人员 print(‘要求你隔一个人打印一个人’)
print(group_list[0::2]) #首尾步长 print(group_list[::2]) for i in
group_list[0::2]: print(i) View
Code

 

判断列表中是否存在某元素

name = [1,2,3,9,8,65,4,9,10]

#print ('9 in name')
if 9 in name:
    print ('9 in name')

if 9 in name:
    num = name.count(9) #计数9出现的个数
    print ('9 num is ',num)


name.index(9) # 寻找第一个位置的9

 

 

name.extend(name2) #扩展进新的列表中

name.reverse() #反向显示列表

name.sort() #只能在2中排序,3中不支持此种排序方式

name.pop(2) #删除2的数值

name.copy() #只能拷贝列表的一层,如果修改列表中的列表时,两个列表都变化

如果需要完全copy的话需要到倒入copy模块

import copy

name4 = copy.depcopy(name)

列表赋值 给第二个变量时相当于做了软链接

 

len(name) #列表长度

常用操作练习

 

图片 9#!/usr/bin/env
python # -*- codind:utf-8 -*- #Author:ljb import copy list1 =
[‘ljb’,1,2,34,9,[88,44,88,99],9,34,’lang’,’zhangsan’] print(list1)
list2 = list1.copy() #拷贝list1 list3 = copy.deepcopy(list2)
#深层次拷贝,修改嵌套中的列表时不受影响 list2[0] = ‘LJB’
#修改list2中一个值,list1中不会变 list2[5][0] = 888888
#修改嵌套列表中一个值,list1和list2中都会变化(因为拷贝的是一个共享的内存段)
print (list2) print (list3) for i in range(list1.count(9)):
first_9=list1.index(9) list1[first_9] = 9999999
#列表中找到9并修改为999999 print(list1) for i in
range(list1.count(34)): first_34 = list1.index(34)
#list1.remove(list1[first_34]) list1.pop(first_34)
#列表中找到34然后删除 print(list1) print(list2) list2.reverse()
#反向显示 #list3 = sorted(list2) #不能sorted 在py3中 #print(list3)
print(list2) list1.extend(list2) #list2扩展添加到list后面 print(list1)
View Code

 

 

 

5元组

 

r = (1,2,3,4,5) #只读列表
r.count()   #统计元组中元素的个数
r.index()   #元素的索引位置

 

 

6字典

字典的常用操作
• 索引

• 新增

• 删除

• 键、值、键值对

• 循环

• 长度

init_db.has_key #py2.x
key in init_db #py3.x

在字典的循环中尽量少使用这这这样的循环,此种方式占用资源比较大

for k.v in dict1:
    print(k,v)
#如果需要用户循环的话采用
for k in dict1:
    print (k,dict1[k])

 

练习

图片 10#!/usr/bin/env
python # -*- codind:utf-8 -*- #Author:ljb #字典定义 init_db = {
1:{ ‘name’:’ljb’, ‘age’:22, ‘addr’:’HeBei’ }, 2:{ ‘name’:’zhangsan’,
‘age’:33, ‘addr’:’Beijing’ } } print(init_db) print(init_db[1])
#打印key为1的value init_db[1][‘name’] = ‘langjb’ #修改一个value
name的值为langjb init_db[1][‘qq’] = ‘12345678’ #添加一个字段
init_db[1].pop(‘addr’) #删除addr的字段 v = init_db.get(1)
#获取key为1的值 print(v) dic2 = { ‘name’:’12dsfasdga’, 1:{
‘name’:’langjainbin’ } } init_db.update(dic2)
#将dic2中的值更新到init_db中 print(init_db) print(init_db.items())
print(init_db.values()) print(init_db.keys()) #init_db.has_key(1)
#only 2.X #1 in init_db # 3.X equal init_db.has_key(1)
print(init_db.setdefault(‘3′,’langjianbin’))
#取一个key值,如果不存在就设置为’langjianbin’,如果存在则输出
print(init_db) print(init_db.fromkeys([1,2,34,4,5,6]),’ddddd’)
#fromkeys(seq[,values])函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
#for key in init_db: # print(key,init_db[key]) View Code

 

 

 

运算

算术运算符 (+,-,*,/,%,**,// 取整数返回商的整数部署)

比较运算符(==,!=,<>,>,<,>=,<=)

赋值运算符(=,+=,-=,*=,/=,%=,**=,//=)

逻辑运算符(and,or,not)

成员运算符( in,not in )

身份运算符(is,is not)

位运算符

& 按位与

| 按位或

^ 按位异或

~ 按位取反

>> 左移运算

<< 右移运算

 

运算优先级

 图片 11

 

 

while True循环

练习

循环100次自动退出循环,在第50-60次之间不打印

#!/usr/bin/env python
# -*- codind:utf-8 -*-
#Author:ljb
counter = 0
while True:
    counter += 1
    if counter >50 and counter <60:
        continue
    print('循环次数',counter)
    if counter == 100:
        print('循环100次结束,跳出循环')
        break

 

变量
变量的另一种赋值方式 user = ‘ ljb ‘ passwd = ‘ ljb123 ‘ user,passwd = ‘
ljb ‘ , ‘ ljb123 ‘ 常量 变量用大写 MYSQL_CONNEC…

相关文章