Python标准的数据类型:
Numbers(数字):整型,浮点型
String(字符串)
bool(布尔):True、False
List(列表)
Tuple(元组):只读的列表
Dictionary(字典)
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
a = 100 a = 100 b = 1000000000000000000 c = 12.345 d = 1 + 5j e = 'A' f = 'hello, world' g = True list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print(type(a)) #<class 'int'> print(type(b))#<class 'int'> print(type(c))#<class 'float'> print(type(d))#<class 'complex'> print(type(e))#<class 'str'> print(type(f))#<class 'str'> print(type(g))#<class 'bool'> print(type(list))#<class 'list'> print(type(tuple))#<class 'tuple'> print(type(tinydict))#<class 'dict'>
Python字符串
字符串切片(从指定的开始索引到指定的结束索引)
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) # 654321cba
print(str2[-3:-1]) # 45
str + "TEST" # 连接的字符串
字符串函数方法
str1 = 'hello, world!'
print('字符串的长度是:', len(str1)) #13
print('单词首字母大写: ', str1.title()) #Hello, World!
print('字符串变大写: ', str1.upper()) #HELLO, WORLD!
print('字符串是不是大写: ', str1.isupper())#False
print('字符串是不是以hello开头: ', str1.startswith('hello'))#True
print('字符串是不是以hello结尾: ', str1.endswith('hello'))#False
print('字符串是不是以感叹号开头: ', str1.startswith('!'))#False
print('字符串是不是一感叹号结尾: ', str1.endswith('!'))#True
字符串格式化
print ("My name is %s and weight is %d kg!" % (Zara, 21))
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%f 格式化浮点数字,可指定小数点后的精度
三引号
python中三引号可以将复杂的字符串进行复制:三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
info="""
--------begin-------
name= %s
age= %s
job= %s
home= %s
--------end---------
"""%(name,age,job,home)
print(info)
print("The length of %s is %d" % (s,x))
print("---NAME",name,"-----")#采用逗号拼接
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
编码
字符串前加 u 声明后面的字符串使用unicode编码,,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
python3中,字符串的存储方式都是以Unicode字符来存储的,所以前缀带不带u,其实都一样
str1= u'\u4f60\u597d\uff0c\u4e2d\u56fd' #u表示unicode,中文不乱码
print(str1)#你好,中国
字符串前加 r 声明后面的字符串是普通字符串
r"\n\n\n\n\n\n” #不会转码为换行符
Python 列表
查
fruits = ['grape', '@pple', 'strawberry', 'waxberry']
print(fruits)
print(fruits[0])
print(fruits[-1])
print(fruits[:2])
改
fruits[2]='apple'
增
fruits.append('Google') ## append() 在列表末尾添加元素
fruits.insert(1, 'banana') ##在第1个元素的位置插入
fruits.extend(list2) #在末尾把list2列表的元素加入
删
del fruits[1]
fruits.pop() #移除最后一个元素
fruits.pop(0) #移除第一个元素
fruits.remove('apple') #移除和某个值匹配的项
复制
复制有四种方式,其中有写是指向相同内存地址,有些是重新开辟空间
浅复制:重新开辟空间,但是假如列表中含有列表[a,[b,c],d],[b,c]还是指向同一个栈
import copy
names = ["小明", "小红", "小黑", "小黄", "小白"]
# 浅copy 1.
names1 = copy.copy(names)
# 浅copy 2.
names2 = names[:]
# 浅copy 3. 工厂函数
names3 = list(names)
深复制:列表中,包含列表也能完全复制
import copy
# 深复制
names = ["小明", "小红", "小黑", ["粉色"], "小黄", "小白"]
deep_names = copy.deepcopy(names)
列表常用函数
len(list) 列表元素个数
cmp(list1, list2) 比较两个列表的元素
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(seq) 将元组转换为列表
列表常用方法
list.append(obj)在列表末尾添加新的对象
2 list.count(obj)统计某个元素在列表中出现的次数
3 list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj)从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj)将对象插入列表
6 list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj)移除列表中某个值的第一个匹配项
8 list.reverse()反向列表中元素
9 list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
10 list.clear() 清空列表
遍历列表元素
for fruit in fruits:
print(fruit.title(), end=' ')
print()
生成列表
list1 = [x * x for x in range(1, 11)]
list2 = [m + n for m in 'ABCDEFG' for n in '12345'] #['A1', 'A2', 'A3', 'A4', 'A5', 'B1'...]
range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 11) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(0, 30, 5) # [0, 5, 10, 15, 20, 25]
enumerate() 函数
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i)
print(element)
Python列表脚本操作符
len([1, 2, 3]) #3长度
[1, 2, 3] + [4, 5, 6] #[1, 2, 3, 4, 5, 6]组合
['Hi!'] * 4 #['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
3 in [1, 2, 3] #True 元素是否存在于列表中
元组
元组是不可修改的列表
t = ('a', 38, c, 'd')
print(t)
t[0]
t[:2]
遍历元组元素
for x in (1, 2, 3):
print(x)
元组内置函数
cmp(tuple1, tuple2)比较两个元组元素
len(tuple) 计算元组元素个数
max(tuple) 返回元组中元素最大值
min(tuple) 返回元组中元素最小值
tuple(seq) 将列表转换为元组
list(seq) 将元组转换为列表
元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
len((1, 2, 3)) #3计算元素个数
(1, 2, 3) + (4, 5, 6) #(1, 2, 3, 4, 5, 6)连接
('Hi!',) * 4 #('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
3 in (1, 2, 3) #True元素是否存在
字典
由键值对组成,不允许同一个键出现两次。键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
查
dict['Name']
dict['Age']
dict.keys() # 输出所有键,['Name', 'Age', 'Class']
dict.values() # 输出所有值,['Runoob', 7, 'First']
改
dict['Age'] = 8
增
dict['School'] = "菜鸟教程" # 添加信息
删
del dict['Name'] # 删除键 'Name'
dict.clear() # 清空字典
del dict # 删除字典
遍历字典
for key in dict: #key只是个字符,无特殊意义
print(key, scores[key])
for key, value in dict.items():
print(key, scores[key])
for c in user_0.keys():
print(c)
for d in user_0.values():
print(d)
#键数组
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}
aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
for a,b in alien.items():
print(a)
print(b)
#两个数组合并为字典
a=["green","blue","yellow","red","black"]
b=[11,12,14,15,18]
al={}
for i in range(5):
al[a[i]]=b[i]
print(al)
字典常用函数
len(dict) #计算字典元素个数,即键的总数。
str(dict) #输出字典,以可打印的字符串表示
type(variable) #<class 'dict'>
key in dict #如果键在字典dict里返回true,否则返回false
集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合
>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('a','b','r','a','c','a','d','a','b','r','a')
>>> b = set('a','l','a','c','a','z','a','m')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
三级菜单demo
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{}, } }, '闸北':{ '火车战':{ '携程':{}, } }, '浦东':{}, }, '山东':{}, } Flag = True while Flag: for i in menu: print(i) choice = input("请输入选择[b回退,q退出]:").strip() while Flag: if choice in menu: for k in menu[choice]: print(k) choice2 = input("请输入选择[b回退,q退出]:").strip() if choice2 in menu[choice]: while Flag: for j in menu[choice][choice2]: print(j) choice3 = input("请输入选择[b回退,q退出]:").strip() if choice3 in menu[choice][choice2]: while Flag: for m in menu[choice][choice2][choice3]: print(m) choice4 = input("请输入选择[b回退,q退出]:").strip() if choice4 == 'b': break elif choice4 == 'q': print('goodbye') Flag = False else: print('input err plsase again') elif choice3 == 'b': break elif choice3 == 'q': print('goodbye') Flag = False else: print("input err please again") elif choice2 == 'b': break elif choice2 == 'q': print('goodbye') Flag = False else: print("input err please again") elif choice == 'b': print('on top') break elif choice == 'q': print('goodbye') Flag = False else: print('input err please again') break