昨日内容回顾
格式化输出
%s %d
%%编码
- ascii: 只能显示英文,特殊字符,数字
- 万国码unicode: 最开始16位,中文不够,用32位,占用4个字节
- 升级: utf-8 utf-16 utf-32
utf-8: 最少用一个字节,8位表示一个英文;欧洲16位,两个字节;亚洲24位,三个字节 - gbk: 中国人发明的,只能用于中文和ascii码中的文字
作业讲解
判断逻辑语句的True, False
print(1>1 or 3<4 or 4<5 and 2>1 and 9>8 or 7<6 ) #True print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6) #False print(1>2 and 3<4 or 4>5 and 2>1 or 9<8 and 4>6 or 3<2) #False
求出下列逻辑语句的值
print(8 or 3 and 4 or 2 and 0 or 9 and 7) #8 print(0 or 2 and 3 and 4 or 6 and 0 or 3) #4 print(5 and 9 or 10 and 2 or 3 and 5 or 4 or 5) #9
下列结果是什么
print(6 or 2>1)# 6 print(3 or 2>1) # 3 print(0 or 5<4) # False print(5<4 or 3) # 3 print(2<1 or 6) # 6 print(3 and 2>1) # True print(0 and 3>1) # 0 print(2>1 and 3) # 3 print(3>1 and 0) # 0 print(3>1 and 2 or 2<3 and 3 and 4 or 3>2) #2
- 简述变量命名规范
- 由数字,字母,下划线组成
- 不能以数字开头
- 不能使用python中的关键字
- 不要使用中文
- 常量名要大写
- name = input(">>>") name变量是什么数据类型
str类型 - if条件语句的基本结构
- while循环语句基本结构
写代码:计算1-2+3...+99中除了88以外的所有数的总和
#第一种 count = 0 sum = 0 while count<99: count += 1 if count==88: continue if count%2 == 0: sum -= count else: sum += count print(sum) #第二种 count = 0 sum = 0 flag = -1 while count<99: count += 1 if count==88: continue else: flag = -flag sum += count*flag print(sum)
用户登陆(三次输错机会)且每次输错误时显示剩余错误次数
count = 1 while count<=3: name = input('请输入用户名:') passwd = input('请输入密码:') if name == 'xkzhai' and passwd == '1234': print('登录成功') break else: print('用户名或密码错误,还有' + str(3-count) + '次机会') count += 1 username = "xkzhai" password = "1234" i = 3 while i > 0: name = input("请输入你的账号:") i -= 1 if name == username: passwd = input("请输入你的密码:") if passwd == password: print("验证成功.正在登陆......") print('''恭喜你登陆成功! 欢迎用户进入 用户名 :%s 密码 :%s '''%(name,passwd)) break else: print("密码错误,请重新输入") print("你还有" + str(i) + "次机会") if i == 0: print("你的机会已经没了!") answer = input('再试试?Y or N') if answer == 'Y': i = 3 else: print("请输入正确的用户名!") print("你还有" + str(i) + "次机会") if i == 0: print("你的机会已经没了!") answer = input('再试试?Y or N') if answer == 'Y': i = 3
数据类型
int: 用于计算
- bool: True,False,用户判断
- str: 存储少量数据,进行操作
- list: 存储大量数据,[1,2,3,'xkzhai','1234',[2,3,4]]
- 元组: 只读,(1,2,3,'第三')
- dict: 字典,键值对,{'name' : 'xkzhai', 'age' : 16}
集合: {1,2,3,'abc'}
int
i = 1
print(i.bit_length())
'''
bit_length
1 0000 0001 1
2 0000 0010 2
3 0000 0011 2
'''
bool
#bool True False
# int ----> str
i = 1
s = str(i)
# str ----> int
s = '234'
i = int(s)
# int ----> bool, 只要是0就是False, 非零就是True
i = -1
b = bool(i)
print(b)
# bool ----> int, True ---> 1, False ---> 0
'''
while True:
pass
#效率高
while 1:
pass
'''
# str ----> bool, 非空字符串都是True
s = ''
print(bool(s))
s = '0'
print(bool(s))
str
字符串索引与切片
s = 'ABCDEFGH' print(s[0]) # A print(s) # ABCDEFGH #切片:顾头不顾尾 print(s[0:3]) # ABC print(s[-1]) # H print(s[0:]) # ABCDEFGH print(s[0:-1]) # ABCDEFG print(s[0:0]) # 空 print(s[:]) # ABCDEFGH #s[首:尾:步长] print(s[0:6:2]) # ACE print(s[4:0:-1]) # EDCB print(s[4::-1]) # EDCBA print(s[4::-2]) # ECA print(s[-1::-1]) # HGFEDCBA print(s[::-1]) # HGFEDCBA
字符串操作
s = 'abcdEfg' print(s.capitalize()) #首字母大写,Abcdefg print(s.upper()) #全大写,ABCDEFG print(s.lower()) #全小写,abcdefg #验证码不区分大小写 str = 'acEQ' str0 = input('请输入验证码,不区分大小写: ') if str.upper() == str0.upper(): print('成功') else: print('验证码输入错误') #大小写翻转 print('abCD'.swapcase()) # ABcd #每个隔开(特殊字符或数字)的单词首字母大写 str = 'alex_tom*john' print(str.title()) # Alex_Tom*John #居中,字符填充 s = 'alexTOM' print(s.center(20,"*")) # *****alexTom***** # 公共方法 s = 'alex找Tom' print(len(s)) # 8 #判断以什么开头 s = 'alexTOM' print(s.startswith('ale')) # True print(s.startswith('exT',2,5)) # True print(s.startswith('exTOM',2,5)) # False #find查找元素,返回最小下标,int型,找不到则返回-1 s = 'alexMTOM' print(s.find('MT')) # 4 #index查找元素,找不到报错 print(s.index('F')) # 报错 #strip默认删除前后空格 s = ' alexMTOM ' print(s) # alexMTOM print(s.strip()) # alexMTOM #rstrip, lstrip s = '* a*lexMTOM%' print(s.rstrip(' *%')) # * a*alexMTOM s = 'alexxk zhai' print(s.count('xx')) # 1 #split str ---> list s = ';alexxk;zhai;tom' print(s.split()) # [';alexxk;zhai;tom'] print(s.split(';')) # ['','alexxk','zhai','tom'] print(s.split('a')) # [';','lexkk;zh','i;tom']
format,格式化,三种写法
s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('xkzhai',26,'iter','xkzhai') print(s) name = input('请输入名字:') s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,26,'iter') print(s) name = input('请输入名字:') s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=26,name=name,hobby='iter') print(s)
replace
s = '线性系统理线性论代数基础' print(s.replace('线性','非线性')) # 非线性系统理非线性论代数基础 print(s.replace('线性','非线性',1)) # 非线性系统理线性论代数基础
for循环,类似于java中的增强for循环
s = '123abc' for i in s: print(i) # 1 2 3 a b c s = 'xs鲁棒控制理论sx' if 'xs' in s: print('有敏感词')
作业
用变量name = "aleX leNb"完成如下操作
1)移除name变量对应的值两边的空格,并输出处理结果
2)移除name变量左边的'al',并输出处理结果
3)移除name变量右边的'Nb',并输出处理结果
4)移除name变量开头的'a'与最后的'b',并输出处理结果
5)判断name变量是否是以'al'开头,并输出结果
7)将name变量对应的值中的所有'l' 替换为'p',并输出结果
8)将name变量对应的值中的第一个'l'替换成'p',并输出结果
9)将name变量根据'l'分割,并输出结果
10)将name变量根据第一个'l'分割,并输出结果
11)将name变量对应的值变大写,并输出结果
12)将name变量对应的值变小写,并输出结果
13)将name变量对应的值首字母'a'大写,并输出结果
14)计算name变量中'l'出现的次数,并输出结果
15)计算 name变量中前四位'l'出现的次数,输出结果
16)从name变量中找到"N"对应的索引(如果找不到,则报错)
17)从name变量中找到'X le'对应的索引,并输出结果
18)请输出name变量的第2个字符
19)输出name变量的前3个字符
20)输出name变量的后2个字符
21)输出name变量'e'所在的索引位置
22)获取子序列,去掉最后一个字符, 如:oldboy 获取oldbo字符串s = '132a4b5c'
1)通过切片形成新字符串'123'
2)通过切片得到'a4b'
3)通过切片得到'1245'
4)通过切片得到'3ab'
5)通过切片得到'c'
6)切片得到字符串'ba3'使用while和for循环分别打印字符串s='asdfer'中每个元素
实现一个整数加法计算器
如: content = input('请输入内容:'), 用户输入: 5+9或 5+ 9 或 5 + 9,先进行分割再计算计算用户输入的内容中有几个整数