一、字符格式化输出

占位符 %s s = string

%d  d = digit 整数

%f  f = float 浮点数,约等于小数

Ctrl+问好  整段注释

在命令窗口输入  exit(),退出当前运算,进入初始盘符。

Chcp 936 在命令窗口改字符编码。

如果不采用格式化输出,写一个用户交互程序

name = input("Name:")
age = int(input("Age:"))
job = input("Job:")
salary = input("Salary:")if salary.isdigit():  # 判断长的是否像数字salary = int(salary)
else:# print("must input digit")exit("must input digit")  # 退出程序print(name, age, job, salary)

采用格式化输出为:

name = input("Name:")
age = int(input("Age:"))
job = input("Job:")
salary = input("Salary:")if salary.isdigit():  # 判断长的是否像数字salary = int(salary)
else:# print("must input digit")exit("must input digit")  # 退出程序# print(name, age, job, salary)msg = '''
------------- info of %s ----------------
Name:%s
Age:%s
Job:%s
Salary:%s
You will be retired in %s years
--------------- end -------------
''' % (name, name, age, job, salary, 65-age)print(msg)

二、数据类型初识

1. 数字

1.1 整数  int(integer)   整型(int)  长整型(longint)

in python3 已经不区分整型与长整型,统一都叫整型

in C语言里,需要声明,比如 int age 22 , long age

1.2  float(浮点型)

1.3  复数

1.4  布尔 只有2种状态,分别是  真 True    假 False

salary.isdigit()

计算机中, 一切皆为对象

世界万物,皆为对象,一切对象皆可分类

2.字符串拼接

2.1 创建字符串

var1 = 'hello world!'
var2 = 'python RAlvin'

对应操作

#1 重复输出字符串

print('hello'*2)

#2 [] , [:] 通过索引获取字符串中字符,这里和列表的切片操作是相同的

print('helloworld'[2:])

#3 in 成员运算符 - 如果字符串中包含给定的字符返回 True

print('el' in 'hello')
print(123 in [23, 45, 123])#列表

#4 % 格式字符串

print('%s is a good teacher' % 'alex')

# 5  +  字符串拼接

a = '123'
b = 'abc'
print(a+b)
a = '123'
b = 'abc'c = ''.join([a, b])
print(c)
a = '123'
b = 'abc'c = '----'.join([a, b])
print(c)#123----abc

python的内置方法

#string的内置方法

st = 'hellokitty'
st.count('l')
print(st.count('l'))# l的个数 2
print(st.capitalize())#Hellokitty
print(st.center(50, '-'))  # --------------------hellokitty--------------------
print(st.encode())
print(st.endswith('ty'))#以某个字符串结尾,有返回值
print(st.startswith('he'))#判断是否以某个内容开始print(st.count('l'))# l的个数 2
print(st.capitalize())#Hellokitty
print(st.center(50, '-'))  # --------------------hellokitty--------------------
print(st.encode())
print(st.endswith('ty'))#以某个字符串结尾,有返回值
print(st.startswith('he'))#判断是否以某个内容开始
st = 'he\tllokitty'
print(st.expandtabs(tabsize=10))
st = 'hellokitty'
print(st.find('t'))# 查找到第一个元素,并将索引值返回print(st.find('t'))# 查找到第一个元素,并将索引值返回
st = 'hellokitty {name} is {age}'
print(st.format(name='alex', age=37))
print(st.format_map({'name': 'alex', 'age': 37}))print(st.format(name='alex', age=37))
print(st.format_map({'name': 'alex', 'age': 37}))
st = 'hellokitty {name} is {age}'
print('abc456'.isalnum())
print('AF00'.isdecimal())
print('1234'.isdigit())#true
print('1234.99'.isdigit())#false
print('1234.99uu'.isnumeric())
print('34abc'.isidentifier())#false 判断非法字符
print('Abc'.islower())#只要有一个大写,就false
print('Abc'.isupper())#只要有一个小写,就false
print(' e'.isspace())#判断是否是空格
print('My Title '.istitle())#每个单词的首写字母  要大写
print('My Title '.lower())#大写变小写
print('My Title '.upper())#所有变大写
print('My Title '.swapcase())#大写变小写,小写变大写
print('My Title '.ljust(50, '*'))#只在左面
print('My Title '.rjust(50, '*'))#只在右面
print('   My Title\n'.strip())#去掉空格  也可以去掉\t  \n
print('ok')
print('1234.99'.isdigit())#false
print('1234.99uu'.isnumeric())
print('34abc'.isidentifier())#false 判断非法字符
print('Abc'.islower())#只要有一个大写,就false
print('Abc'.isupper())#只要有一个小写,就false
print(' e'.isspace())#判断是否是空格
print('My Title '.istitle())#每个单词的首写字母  要大写
print('My Title '.lower())#大写变小写
print('My Title '.upper())#所有变大写
print('My Title '.swapcase())#大写变小写,小写变大写
print('My Title '.ljust(50, '*'))#只在左面
print('My Title '.rjust(50, '*'))#只在右面
print('   My Title\n'.strip())#去掉空格  也可以去掉\t  \n
print('ok')
print('My Title '.lstrip())#
print('My Title '.rstrip())#
print('My Title '.replace('Title', 'lesson'))#
print('My Title Title '.replace('Title', 'lesson'))#
print('My Title Title '.replace('Title', 'lesson', 1))#print('My Title Title '.replace('Title', 'lesson'))#
print('My Title Title '.replace('Title', 'lesson', 1))#
print('My Title '.rfind('t'))
print('My Title Title'.split(' '))
print('My Title Title'.split('i'))#以什么为分割对象
print('My Title Title'.split('i', 1))#以什么为分割对象
print('My Title Title'.rsplit('i', 1))#之分割一次,以右为准print('My Title Title'.split(' '))
print('My Title Title'.split('i'))#以什么为分割对象
print('My Title Title'.split('i', 1))#以什么为分割对象
print('My Title Title'.rsplit('i', 1))#之分割一次,以右为准
print('My title Title'.title())#变成标题

一些重要的字符串内置方法  在上述标红了

程序: 三级菜单

要求:

1.打印省、市、县三级菜单

2.可返回上一级

3.可随时退出程序

menu = {'北京': {'朝阳': {'国贸': {'CICC': {},'HP': {},'工商银行': {},'CCTV': {}},'望京': {'陌陌': {},'奔驰': {},'360': {}},'三里屯': {'youyiku': {},'apple': {}}},'昌平': {'沙河': {'old boy': {},'ataibaozi': {}},'天通苑': {'链家': {},'我爱我家': {}},'回龙观': {}},'海淀': {'五道口': {'谷歌': {},'网易': {},'sohu': {},'sogou': {},'快手': {}},'中关村': {'youku': {},'iqiyi': {},'汽车之家': {},'新东方': {},'qq': {}}}},'上海': {'浦东': {'陆家嘴': {'CICC': {},'高盛': {},'摩根': {}}},'闵行': {},'静安': {}},'山东': {'济南': {},'德州': {'乐陵': {'丁务镇': {},'城区': {}},'平原': {}}}
}back_flag = False
exit_flag = Falsewhile not back_flag and not exit_flag:for key in menu:print(key)choice = input('1>>:'). strip()if choice == 'q':exit_flag = Trueif choice in menu:while not back_flag and not exit_flag: #让程序停在第二层for key2 in menu[choice]:print(key2)choice2 = input('2>>:').strip()if choice2 == 'b':back_flag = Trueif choice2 == 'q':exit_flag = Trueif choice2 in menu[choice]:while not back_flag and not exit_flag:for key3 in menu[choice][choice2]:print(key3)choice3 = input('3>>:').strip()if choice3 == 'b':back_flag = Trueif choice3 == 'q':exit_flag = Trueif choice3 in menu[choice][choice2]:while not back_flag and not exit_flag:for key4 in menu[choice][choice2][choice3]:print(key4)choice4 = input('4>>:').strip()print('last level')if choice4 == 'b':back_flag = Trueif choice4 == 'q':exit_flag = Trueelse:back_flag = Falseelse:back_flag = Falseelse:back_flag = False

改进版本

menu = {'北京': {'朝阳': {'国贸': {'CICC': {},'HP': {},'工商银行': {},'CCTV': {}},'望京': {'陌陌': {},'奔驰': {},'360': {}},'三里屯': {'youyiku': {},'apple': {}}},'昌平': {'沙河': {'old boy': {},'ataibaozi': {}},'天通苑': {'链家': {},'我爱我家': {}},'回龙观': {}},'海淀': {'五道口': {'谷歌': {},'网易': {},'sohu': {},'sogou': {},'快手': {}},'中关村': {'youku': {},'iqiyi': {},'汽车之家': {},'新东方': {},'qq': {}}}},'上海': {'浦东': {'陆家嘴': {'CICC': {},'高盛': {},'摩根': {}}},'闵行': {},'静安': {}},'山东': {'济南': {},'德州': {'乐陵': {'丁务镇': {},'城区': {}},'平原': {}}}
}current_layer = menu
# parent_layer = menuparent_layers = []  #保存所有父级,最后一个元素永远都是父亲级while True:for key in current_layer:print(key)choice = input('>>:').strip()if len(choice) == 0:continueif choice in current_layer:# parent_layer = current_layer  #改之前相当于父亲parent_layers.append(current_layer)#在进入下一层之前,把当前层(也就是下一层父级)追加到列表中,下一次#loop,当用户选择b,就可以直接取列表的最后一个值出来就可以current_layer = current_layer[choice]elif choice == 'b':# current_layer = parent_layer  #把子层改为父亲层if parent_layers:current_layer = parent_layers.pop()#去除列表的最后一个值,因为它就是当前层的父级else:print('无此项')

Name = Alex

Age = 22

Print(“my name is %s“ %name)#字符串格式化输出(最好用这个)

或者print”my name is %s”%name

Print(“my name is”,name,”and I am ”,age, ”yearsold”)#逗号拼接

Print(“my name is”+name+”and I am ”+age+”years old”)#加号拼接

但是经常不这样用,效率低,用加号相当于计算机开辟了5快内存

3.列表和元组

3.1列表

列表的增删改查操作

a = ['wuchao', 'xiaoli', 'sanpang', 'ligang', 'jinxing']
# print(a)
# #增删改查
# #查   切片  取值范围左包括右不包括
# #如果想取到最后一个值,在不知道元素个数的情况下,冒号后什么也不加
# print(a[1:4])
#
# print(a[1:])
# print((a[1:-1]))#取到最后一项的前一项
#
# #跳着取
# print(a[1:-1:1])#从左到右 一个一个取
# print(a[1:-1:2])#从左到右 隔一个取
# print(a[1::2])
# print(a[3::-2])
# #print(a[1:-1:-2]) 这个是错的  既然从右往左走,需要从右边的元素开始取
# b = a[3::-1]
# print(b)
# print(a[-2::-1])#增 append insert
#a.append('xuepeng')#默认插到最后一个位置
#print(a)
# a.insert(1, 'xuepeng')#将数据插入到任意一个位置
# print(a)#改
# a[1] = 'yinxing'
# print(a)
# a[1:3] = ['a', 'b']
# print(a)#删  remove pop  del
# a.remove('wuchao')#== a.remove(a[0])  只是删除具体的内容  只是作为一个整体进行去删
# print(a)# a.pop(1)
# b = a.pop(1)#pop是按照索引删除,比remove多了一个return值功能
# print(a)
# print(b)# del a[0]
# print(a)
# del a
# print(a)#运行结果会出错

列表的另外一种操作方法

a = list((1, 2, 3))
print(a)

其他操作

1.count  的操作

t = ['to', 'be', 'or', 'not', 'to', 'be']. count('to')
print(t)

2.extend操作

#extend
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
print(b)

3.index操作

a = ['wuchao', 'xiaoli', 'sanpang', 'ligang',  'jinxing']
print(a.index('xiaoli'))

若a里有两个重复的名字 则 可以采用切片的方法

a = ['wuchao', 'xiaoli', 'sanpang', 'ligang', 'xiaoli', 'jinxing']
first_xl_index = a.index('xiaoli')
print('first_xl_index', first_xl_index)
little_list = a[first_xl_index+1:]
second_xl_index = little_list.index('xiaoli')
print('second_xl_index', second_xl_index)
xl_index_a = first_xl_index + second_xl_index+1
print(xl_index_a)

4.reverse 颠倒  没有返回值

#reverse
a = ['wuchao', 'xiaoli', 'sanpang', 'ligang', 'xiaoli', 'jinxing']
a.reverse()
print(a)

5.sort排序  没有返回值(默认从小往大排)

x = [4, 6, 2, 1, 7, 9]
x.sort()
print(x)

从大往小排

x = [4, 6, 2, 1, 7, 9]
x.sort(reverse=True)
print(x)

作业  购物车程序

product_list = [('mac', 9000),('kindle', 800),('car', 9000000),('book', 105),('bike', 2000)
]
saving = input('please input your saving money:')
shopping_car = []if saving.isdigit():saving = int(saving)while True:# print(product_list)# for i in product_list:#     print(i)#     print(product_list.index(i), i)# for i in enumerate(product_list):#     print(i)# for i in enumerate(product_list, 1):#     print(i)#打印商品for i, v in enumerate(product_list, 1):print(i, '>>', v)# 引导用户选择商品choice = input('选择购买商品编号[退出:q]:')# 验证输入是否合法if choice.isdigit():choice = int(choice)if choice > 0 and choice <= len(product_list):# 将用户选择商品通过choice取出来p_item = product_list[choice-1]# 如果钱够,用本金减去商品价格,并把商品放入购物车if p_item[1] < saving:saving -= p_item[1]shopping_car.append(p_item)else:print('余额不足,还剩%s' % saving)print(p_item)else:print('编码不存在')elif choice == 'q':print('-------您已经购买如下商品----------')# 循环遍历购物车的商品,购物车存放的是已买商品for i in shopping_car:print(i)print('你还剩%s元钱' % saving)break
else:print('invalid input')

3.2元组

a, b = [2,3]
print(a)
print(b)

简单的赋值操作,输出结果

2

3

4.字典

字典是python中唯一的映射类型,采用键值形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如数字,字符串,元组。

字典是除列表外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。二着之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

可以看出a的内存地址

创建字典:

字符串存取

dic = {'name': 'Alex', 'Age': '35', 'hobby': 'girl', 'is handsome': True}
print(dic)
print(dic['name'])

整型存取

dic = {1: 'Alex', 'Age': '35', 'hobby': 'girl', 'is handsome': True}
print(dic)
print(dic[1])

键是不可变类型,运行出错

dic = {[1, 2]: 'Alex', 'Age': '35', 'hobby': {'girl_name': '铁锤', 'Age': '45'}, 'is handsome': True}print(dic['hobby'])

值 可以是可变的

dic = {1: 'Alex', 'Age': '35', 'hobby': {'girl_name': '铁锤', 'Age': '45'}, 'is handsome': True}print(dic['hobby'])

字典的另外一种创建方式

dic1 = dict((('name', 'Alex'),))
print(dic1)
dic1 = dict([['name', 'Alex'],])
print(dic1)

注意:对括号要求不太高

字典的另外一种创建方式

dic6 = dict.fromkeys(['host1', 'host2', 'host3'], 'text')
print(dic6)  # {'host3': 'text', 'host2': 'text', 'host1': 'text'}dic6['host2'] = 'abc'
print(dic6)  # {'host3': 'text', 'host1': 'text', 'host2': 'abc'}
dic6 = dict.fromkeys(['host1', 'host2', 'host3'], ['text1', 'text2'])
print(dic6)  # {'host2': ['text1', 'text2'], 'host1': ['text1', 'text2'], 'host3': ['text1', 'text2']}dic6['host2'][1] = 'text3'
print(dic6)  # {'host3': ['text1', 'text3'], 'host2': ['text1', 'text3'], 'host1': ['text1', 'text3']}

字典的操作

1.增

dic1 = {'name': 'Alex'}
dic1['Age'] = 18
print(dic1)
dic1 = {'name': 'Alex'}
dic1['name'] = 18
print(dic1)

dic.setdefault 函数 如果字典里有,不动,如果字典里没有,添加上去

dic1 = {'name': 'Alex'}
dic1['age'] = 18
print(dic1)dic1.setdefault('age', 34)
print(dic1)
dic1 = {'name': 'Alex'}
dic1['age'] = 18
print(dic1)dic1.setdefault('hobby', 'girl')
print(dic1)

注意dic.setdefault 函数的返回值

dic1 = {'name': 'Alex'}
dic1['age'] = 18
print(dic1)ret = dic1.setdefault('age', '34')
print(ret)ret2 = dic1.setdefault('hobby', 'girl')
print(dic1)
print(ret2)

2.查

dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
print(dic3['name'])
print(dic3.keys())
print(type(dic3.keys()))

运行结果Alex
dict_keys(['age', 'name', 'hobby'])
<class 'dict_keys'>

可以对其进行转化为列表形式

dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
print(dic3['name'])
print(dic3.keys())
print(type(dic3.keys()))
print(list(dic3.keys()))

拿取值和键值对

dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
print(dic3['name'])
print(dic3.keys())
print(type(dic3.keys()))
print(list(dic3.keys()))
print(list(dic3.values()))# 拿取值
print(list(dic3.items()))# 拿取键值对

3.改

dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
# dic3['name'] = 'alvin'
# # print(dic3)
dic4 = {'sex': 'male', 'hobby': 'girl', 'age': 36}
dic3.update(dic4)
print(dic3)
dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
dic4 = {'1': '111', 'name': '222'}
dic3.update(dic4)
print(dic3)

4.删

dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
del dic3['name']#删掉的是键值对
print(dic3)
dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
dic3.clear()
print(dic3)
dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
# dic3.clear()#清空字典
print(dic3.pop('age'))# 有返回值
print(dic3)
dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
# dic3.clear()
a = dic3.popitem()#随机删除一个键值对
print(a, dic3)
dic6 = dict.fromkeys(['host1', 'host2', 'host3'], 'text')
print(dic6)  # {'host3': 'text', 'host2': 'text', 'host1': 'text'}

字典的其他操作

5.d.copy() 对字典d进行浅复制,返回一个和d有相同键值对的新字典

6.字典的嵌套

av_catalog = {'欧美': {'www.youporn.com': ['很多免费的,世界最大的', '质量一般'],'www.pornhub.com': ['很多免费的,也很大', '质量比youporn高点'],'letmedothistoyou.com': ['多是自拍,高质量图片很多', '资源不多,更新慢'],'x-art.com': ['质量很高,真的很高', '全部收费,屌丝请绕过']},'日韩': {'tokyo-hot': ['质量怎样不清楚,个人已经不喜欢日韩范了', '听说是收费的']},'大陆': {'1024': ['全部免费,真好,好人一生平安', '服务器在国外,慢']}}av_catalog['大陆']['1024'][1] += ',可以用爬虫爬下来'
print(av_catalog['大陆']['1024'])
#  output
['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

7.sorted(dict):返回一个有序的包含字典所有key的列表

dic = {5: '555', 2: '222', 4: '444'}print(sorted(dic))#[2, 4, 5]
print(sorted(dic.values()))#['222', '444', '555']
print(sorted(dic.items()))#[(2, '222'), (4, '444'), (5, '555')]

8.遍历

dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
# for i in dic3:
#    # print(i)  #默认打印键
#     print(i, dic3[i])# 推荐用这种方式,效率高
dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
# for i in dic3.items():
#     print(i)
dic3 = {'age': 18, 'name': 'Alex', 'hobby': 'girl'}
for i, v in dic3.items():print(i,v)

还用我们上面的例子,存取这个班学生的信息,如果通过字典来完成

dic = {'zhangsan': {'age': 23, 'sex': 'male'},'李四': {'age': 33, 'sex': 'male'},'wangwu': {'age': 27, 'sex': 'female'}}
print(dic)

不可变类型:整型,字符串,元组

可变类型:列表,字典

程序员最忌讳的事情:写重复代码

三、循环loop

有限循环 ,次数限制

无限循环=死循环

continue 结束本次循环,继续下一次循环

break跳出整个当前的循环

下面是for循环举例

# for i in range(1, 101):
#     if i % 2 == 1:
#         print("loop:", i)# for i in range(1, 101, 2):
#     print("loop:", i)# for i in range(100):
#     if i < 50 or i > 70:
#         print(i)

用for循环加break语句 写一个用户登录程序

_user = "majinghui"
_password = "123"for i in range(3):username = input("Username:")password = input("Password:")if username == _user and password == _password:print("welcome %s login..." % username)break  # 跳出,循环,中断else:print("invalid username or password")

上式程序,如果3次用户都输入错误,就不完美,所以如果3次都输入错误,给出输出提示,如下(采用标志位)

_user = "majinghui"
_password = "123"
passed_authentication = Falsefor i in range(3):username = input("Username:")password = input("Password:")if username == _user and password == _password:print("welcome %s login..." % username)passed_authentication = True  # 真,成立break  # 跳出,循环,中断else:print("invalid username or password")
if not passed_authentication:print("要不要脸,臭流氓")

上个程序也可以更简洁,如下:

_user = "majinghui"
_password = "123"
# passed_authentication = Falsefor i in range(3):username = input("Username:")password = input("Password:")if username == _user and password == _password:print("welcome %s login..." % username)# passed_authentication = True   # 真,成立break  # 跳出,循环,中断else:print("invalid username or password")
# if not passed_authentication:
else:print("要不要脸,臭流氓")

只要上面的for循环正常执行完毕,中间没被打断,就会执行else语句。break for过后,就不会执行最后面的else语句,在Python里,for后面可以跟else,但不能跟elif。

2.无限循环

while True:print("当山峰没有棱角的时候")

上述程序改为有限循环

counter = 0
while True:if counter > 2**3:breakcounter += 1print("当山峰没有棱角的时候")

用while创建用户登陆程序

_user = "majinghui"
_password = "123"
# passed_authentication = False
counter = 0while counter < 3:username = input("Username:")password = input("Password:")if username == _user and password == _password:print("welcome %s login..." % username)# passed_authentication = True   # 真,成立break  # 跳出,循环,中断else:print("invalid username or password")
# if not passed_authentication:counter += 1
else:print("要不要脸,臭流氓")

上述程序继续改进

_user = "majinghui"
_password = "123"
# passed_authentication = False
counter = 0while counter < 3:username = input("Username:")password = input("Password:")if username == _user and password == _password:print("welcome %s login..." % username)# passed_authentication = True   # 真,成立break  # 跳出,循环,中断else:print("invalid username or password")
# if not passed_authentication:counter += 1if counter == 3:keep_going_choice = input("你还想玩吗?[Y/N]")if keep_going_choice == "Y":counter = 0
else:print("要不要脸,臭流氓")

在pycharm每行处单击,可以设置断点,但是在执行时点击如下的调试按钮。

此按钮进行一步一步调试

2.2 continue语句

continue 结束本次循环,继续下一次循环

break 跳出整个当前的循环

for i in range(10):if i < 5:continueprint(i)for j in range(10):print("layer:", j)
for i in range(10):if i < 5:continueprint(i)
for i in range(10):if i < 5:continueprint(i)for j in range(10):print("layer:", j)if j == 6:break
for i in range(10):if i < 5:continueprint(i)for j in range(10):print("layer:", j)if j == 6:breakbreak

标志位退出两层循环

for i in range(10):if i < 5:continueprint(i)for j in range(10):print("layer:", j)if j == 6:exit_flag = Truebreakif exit_flag:breakbreak

四、字符编码

二进制

------->ASCII : 只能存英文和拉丁字符。一个字符占一个字节,8位

--------->gb2312:只能6700多个中文,1980

------------>gbk1.0 : 存了2万多字符,1995

--------------->gb18030:2000,27000中文

----------------->unicode: utf-32:一个字符占 4个字节

----------------->unicode: utf-16:一个字符占 2个字节或2个以上,65535,

----------------->unicode: utf-8:一个英文用ASCII码来存,一个中文占3个字节

in python2 默认是ASCII码

in python3  字符默认unicode,  文件默认编码是utf-8   encode在编码的同时,会把数据转成bytes类型

decode在解码的同时,会把bytes类型转成字符串

b = byte = 字节类型 = 2进制【0-255】

s = 'i am 特斯拉'
s_to_gbk = s.encode('gbk')
print(s_to_gbk)

输出:b'i am \xcc\xd8\xcb\xb9\xc0\xad'

GBK 需要转换为UTF-8格式流程

1、首先通过编码【decode】转换为unicode编码

2、然后通过编码【encode】转换为utf-8的编码

week1:字符格式化输出,数据类型,for循环,break,continue,标志位相关推荐

  1. python 表格格式输出_Python笔记---DAY3:格式化输出、for循环、列表操作

    1.引号使用: 多行变量用三引号 python单双引号相同,当命令内容中有引号时注意最外层引号的使用 2.格式化输出: name=input("name:") age=int(in ...

  2. python中continue格式_python自学(3)--for 、 while、 break、continue、字符格式化输出...

    一.循环语句 1.for 语句 有限循环 ,次数限制 格式: for i in range (3): 例子: _username = "zhichengfang" _passwor ...

  3. 格式化输出,while循环,运算符,初识编码

    1.pycharm的使用 快捷操作例如 shift + enter 无论光标在哪,都可以迅速切换到下一行 ctrl + / 将全选内容添加为注释 2.格式化输出 可以将编码中想要改变的量先用占位符%s ...

  4. python循环从0到x_Python3 从零单排0_变量格式化输出流程控制循环

    1.Python从零单排简介 第一次接触python是前年,那次偶遇并没有发生什么有趣的故事.后来越发觉得计算机语言对于IT从事着来说是必不可少的技能,语言都不会可不敢妄称自己是IT行业从事者,所以后 ...

  5. Python 格式化输出和while循环的两个小练习

    练习1.模拟登陆判断(3次机会) r_name = 'xianyu' r_password = '123456'i = 3 # 用来控制循环次数while i > 0:name = input( ...

  6. 增强for循环 break continue

    增强for循环 java引入了一种主要用于数组或集合的增强型for循环 java增强for循环语法格式如下 for(声明语句:表达式) {//代码句子 } 声明语句:声明新的局部变量,该变量的类型必须 ...

  7. 20.10-20.15 shell:for,while循环,break,continue,exit

    20.10 for循环 shell脚本可以算是一种简易的编程语言了,脚本中的循环也是不能缺少的.常用到的循环有for循环和while循环. for循环 语法:for 变量名 in 循环的条件; do ...

  8. C++(7)--for循环,break,continue语句

    for循环 1.for循环 2.break 语句 3.continue语句 4.while,do-while,for 循环的异同 5.for循环demo 嵌套循环-打印图形 6.python 中的fo ...

  9. 第二十二章 : 格式化输出

    格式化输出 In this chapter, we continue our look at text related tools, focusing on programs that areused ...

最新文章

  1. latex 插图解释_大O符号-只需插图和视频即可解释
  2. 山西DOT NET俱乐部
  3. 基础知识巩固四(问题部分)
  4. PowerDesigner 16安装注意事项
  5. 公众号H5 VUE获取CODE
  6. 升级oracle spu,关于Oracle数据库PSU/SPU/BundlePatch的补丁号变化
  7. php处理base64数据,php基于base64解码数据与图片的转换
  8. /usr/include/sys/types.h基本系统数据类型
  9. MABN论文的译读笔记
  10. C#:办公用品管理软件项目总结
  11. QQ空间相册批量下载【原图】
  12. MPChart的柱状图BarChart
  13. 在250美元5天城市
  14. webscraper改写案例分析
  15. 2021年全球高级相变材料(PCM)收入大约1513.7百万美元,预计2028年达到3220.4百万美元
  16. LayaAir之制作迷宫
  17. 解决Error in file(con, “w“) : cannot open the connection问题
  18. 受贸易战影响,H1B签证开始大量RFE了?
  19. JAVA开发与运维(配置中心Apollo的使用)
  20. Python批量爬取王者荣耀英雄高清壁纸

热门文章

  1. android6.0数据恢复,安卓6.0以上提取技术和微信恢复研究.pdf
  2. 职业生涯规划常用测试工具
  3. day18-java
  4. 最新《IT营Angular5 Angular4.X入门实战》
  5. 140版本 boost_看完这篇,相信对UB4.0 boost这双鞋你会有新的感受!
  6. 赛门铁克网络版杀毒软件SEP布署小记
  7. WEB 前端常用字体和色值查询
  8. Python之按键模拟软件
  9. 数据挖掘:FP-Growth算法 (Python实现)
  10. 模拟伯努利分布的C语言程序(算法)