day03_python_1124

01 昨日内容回顾
while 条件:
循环体

如何终止循环:
1,改变条件。
2,break。
3,exit() quit() 不推荐。

关键字:
break continue
while else:循环只要不被break打断,则执行else语句。

格式化输出:做一个字符串的公共模板,让某些位置的元素变成动态可传的。
% 占位符, 数据类型:s 字符串 d:数字 f r。
坑:
如果想要格式化输出中表示% 则应该 %%。

运算符:
or and not
优先级: () > not > and > or

1,运算符两边都是比较运算
1 > 2 and 3 < 4 or 4 < 7 and 3 < 9
按照优先级顺序从左至右依次计算。
2,运算符两边都是数字
x or y if x is True,return x else return y.
3,混合:运算符两边是数字或者比较
1 and 3 or 3 < 4 and 5 : 3

编码:
什么是编码?
人类能识别的文字 与 0101010 的对应关系表。
ascii:是最早的编码本,只包含:数字,字母,特殊字符。
a : 0000 0010 一个字符用1个字节表示
Unicode:万国码。将全世界所有的文字都包含进来。
早期:一个字符用2个字节表示
a : 0000 0000 0000 0100
中:0000 0000 0001 0000
升级:一个字符用4个字节表示
a : 0000 0000 0000 0100 0000 0100 0000 0100
中:0000 0000 0001 0000 0000 0100 0000 0100
浪费资源。

utf-8的编码本:最少用8位一个字节表示一个字符
a: 0000 0010 一个字节表示一个字符
欧:0000 0010 0000 0010 两个字节表示一个字符
中:0000 0010 0000 0010 0000 0010 三个字节表示一个字符

补充:数字,字母,特殊字符 映射的是ascii。

gbk:国标。
数字,字母,特殊字符 映射的是ascii。
本国语言。
中:0000 0010 0000 0010 两个字节。
'python骑士'
# gbk:10个字节。
# utf-8:12个字节。

8bit == 1 bytes
1024bytes == 1 Kb
1024 Kb == 1 Mb
1024 Mb == 1 Gb
02 作业讲解

03 int
用于计算
1,二进制与十进制之间的转换。
2,bit_lenth()

04 bool
05 str

03 int

i = 9
# print(i.bit_length()) # 获取十进制转化成二进制的有效位数 *

二进制 十进制
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4

二进制转化成十进制
0010 1101 --->
0*2**7+0*2**6+1*2**5+0*2**4+1*2**3+1*2**2+0*2**1+1*2**0
1*2**5+1*2**3+1*2**2+1*2**0 = 32 + 8 + 4 + 1 = 45

十进制转化成二进制 : 对2取余,逆向排列
42 ——-> 0010 1010

04 bool

# bool 值 True False

# str ---> bool 非空即True  (包括'0')
# s1 = 'fdsa范德萨了f'
# s2 = ''
# print(bool(s2))
# s1 = ''
# if s1:
# print('非空')
# else:
# print('此数据为空')

# bool ---> str 无意义
# b1 = True
# print(str(b1),type(str(b1)))

05 str

# s = 'python骑士计划3期'
#按照索引取值
# s1 = s[0]
# # print(s1,type(s1))
# # s2 = s[1]
# # print(s2)
# # s3 = s[-1]
# # print(s3)
# # 按照切片取值,顾头不顾尾
# s4 = s[:6]
# print(s4)
# s6 = s[6:10]
# print(s6)
# s7 = s[6:-2]
# print(s7)
#切片+步长
# s8 = s[:5:2]
# print(s8)
# s9 = s[7::2]
# print(s9)
# s10 = s[-1:-4:-1]#只要倒叙取值就要加上方向步长
# [起始索引:结尾索引+1:步长]
# print(s10)
# print(s[:5:-1]) # 字符串的常用操作方法 (都是形成新的字符串,与原字符串没有关系)
# s = 'taibai'
#capitalize() 首字母大写
# s1 = s.capitalize()
# print(s1)
# center()将字符串居中可以设置总长度,可以设置填充物
# s2 = s.center(50)
# s3 = s.center(50,'*')
# print(s2,s3)
#尝试
# s = 'qwert'
# s1 = s.center(10,'*')
# print(s1)
#若无法居中,放置在偏左一位 #swapcase 大小写翻转
# s = 'TaiBai'
# s1 = s.swapcase()
# print(s1) #title 非字母隔开的每个单词的首字母大写
# s = 'mo lu9nihao*xiexie'
# s1 = s.title()
# print(s1) #upper()全部转化为大写,lower()全部转化为小写
# s = 'taibaiJinXing'
# s1 = s.upper()
# s2 = s.lower()
# print(s1)
# print(s2) # usename = input('请输入姓名')
# password = input('请输入密码')
# code = 'AeTrd'.upper()
# your_code = input('请输入验证码:').upper()
# if your_code == code:
# if usename == 'mo' and password == 'love':
# print('登陆成功')
# else:
# print('用户名或者密码错误')
# else:
# print('验证码错误') #startswith,endswith判断True,False
# s = 'alexeaaa'
# print(s.startswith('a'))
# print(s.startswith('alex'))
# print(s.startswith('e',2,))#可切片 # find : 通过元素找索引,找到第一个就返回(可切片),找不到返回-1
# index 通过元素找索引,找到第一个就返回(可切片),找不到报错
# s = 'waibaijinxing'
# print(s.index('a'))
# print(s.find('a'))
# print(s.find('a',2,))#找第二个a
# print(s.find('X'))
# print(s.index('X')) # s = ' \nbarry\t '###???
# s7 = s.strip()
# print(s7)
#
# print(s)
#strip:默认去除字符串前后两端的空格,换行符,制表符 ***
# strip(char)
# lstrip() rstrip() 自己试 # s = ' sadf '
# print(s.strip())
# print(s.lstrip())
# print(s.rstrip()) '''
# 应用举例:
# username = input('请输入姓名:').strip()
# password = input('请输入密码:').strip()
# if username == 'alex' and password == '123':
# print('登录成功')
# else:
# print('用户名或者密码错误')
'''
#ss = 'qqwalex wusir barrure'
# s8 = ss.strip('qwre')#???
# print(s8) #split str ---> list 默认以空格分割
# s = 'wusir alex taibai'
# ss = 'wusir:alex:taibai'
# sss = 'taibai:alex:wusir:xiaohu:日天'
# s1 = ':wusir:alex:taibai'
# l1 = s.split()
# l2 = ss.split(':')
# l3 = sss.split(':', 1)
# l4 = s1.split(':') # 分割出的元素要比分隔符数+1
# print(l4)
# print(l3)
# print(l2)
# print(l1) # join (list(必须全部都是字符串组成的列表) ---> str 只是其中一种用途)
# s = 'alex'
# # s1 = ['wusir','alex','taibai']
# # s2 = '_'.join(s)
# # s3 = ''.join(s1)
# # print(s2)
# # print(s3) # s = 'Alex 是老男孩的创始人之一,Alex也是一个屌丝,Alex'
# replace
#replace要替换的没有不会报错,正常跳过
# s1 = s.replace('Alex','日天')
# s2 = s.replace('Alex','日天',1)
# print(s1)
# print(s2) # format 格式化输出 ***
# 第一种方式:
# s = '我叫{}, 今年{}, 性别{}'.format('小虎', 25, '女')
# print(s)
# 第二种方式
# s = '我叫{0}, 今年{1}, 性别{2},我依然叫{0}'.format('小虎', 25, '女')
# print(s)
# 第三种方式
# s = '我叫{name}, 今年{age}, 性别{sex},我依然叫{name}'.format(age=25, sex='女',name='小虎',)
# print(s) #is系列
# name = 'taibai123'
# print(name.isalnum())#字符串由字母或数字组成
# print(name.isalpha())#字符串只由字母组成
# print(name.isdigit())# 字符串只由数字组成 # money = input('>>>')
# # if money.isdigit():
# # money = int(money) # count 计算字符串中某个字符出现的次数
# s = 'dsuhafafjanifuadfkhrifndvnvcjirvdn'
# print(s.count('a'))
# print(s.count('a',1,)) # 公共方法(内置函数)
# s = 'sdf d5456dfesfe1'
# print(len(s)) #s的长度(空格也算) # s = '太白金星' # print(s[100])
"""
太 s[0]
白 s[1]
金 s[2]
....
"""
# index = 0
# while index < len(s):
# print(s[index])
# index +=1 # for 循环
    for 与 else 配合,中间有break不执行else
    PS:函数遇return就结束
'''
结构:
for 变量 in iterable:
pass
'''
# for i in s:
# print(i) '''
太nb
白nb
金nb
星nb
'''
# for i in s:
# print(i+'nb')
上一篇:Codeforces 868D Huge Strings - 位运算 - 暴力


下一篇:Codeforces Round #443 (Div. 2) C 位运算