格式化输出,运算符,编码,字符串(索引,切片,大小写转换等等)
格式化输出%s和format{} , 运算符 , 编码 , 字符串(索引,切片,大小写转换,拉长字符,去空格,替换,切割,格式化输出format , count数数 , find查找 , index求索引 , startswith判断字符串是否以xxx开头 , endswith 判断字符串是否以xxx结尾 , 是否是字母和数字组成isalnum数字和字母 , isdigit数字 , isalpha字母)
格式化输出:
例题:(1)
name = input("输入你的名字:")
age = input("输入你的年龄:")
job = input("输入你的工作:")
hobby = input("输入你的爱好:")
print("""------------ info of 周杰伦 -----------
Name : %s
Age : %d
job : %s
Hobbie: %s
------------- end -----------------""" % (name, name, age, job, hobby))
format{}格式化输出
name=input('名字:') age=input('年龄:') hobby=input('爱好:') s='我叫{name},今年{age}岁,喜欢{hobby}'.format(name=name,age=age,hobby=hobby) print(s) '''format格式化输出用的是字典进行占位,用法和%s一样,内容后面要加点然后再用format'''
例题:(2)
name = input("输入名字:")
age= input("输入年龄:")
print("我叫%s, 今年%d岁了" % (name, int(age)))
例题:(3)
print("我.今年%d岁了" % (18))
# %s 处理字符串. 全能的.
# %d 处理数字. 只能接收数字
# 我叫sylar, 我们学习python已经2%了
# 如果你的字符串中.用了%s或者%d这种形式. 那么后面的%, 认为是站位.如果需要用到% . 需要写%%
# print("我叫%s, 我们学习python已经2%%了" % ("sylar"))
# print("游戏加载已经80%%了") # 如果字符串中没有用到站位. 那么%还是你的%
# %f = 小数
运算符
and : 和, 并且. 左右两端必须同时为真(True) 结果才能是真
or : 或, 或者. 左右两端有一个是真,结果就是真
not : 取反 非. 非真既假, 非假既真.
运算顺序 () => not => and => or . 同样的运算符从左往右算
例题:
print(3 > 5 or 4 < 6) Trun
print(1 > 2 and 4 > 5 and 5 < 6 and 7 > 8) False
print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) False
or 如果第一位是非零. 输出第一位. 如果是零输出第二位
and 和or相反
例题:
print (3 and 5 and 0) 结果: 0
print(0 or 0 or 5 or 3) 结果: 5
print(1 or 2 and 3)结果: 1
print(3 and 4 or 8 and 5 or 6) 结果: 4
编码:
ASCII 不能装中文. 8个bit组成.最多有256种可能. 没有中文 1byte
GBK 有中文. 16个bit => 2byte
把ANSI 空余的位置交给各个国家. 交给中国之后. 中国继续编码.-GBK
交给台湾台湾继续编码. BIG5
依然不能国际化
UNICODE 万国码. 目的是把所有国家的文字都进行编码. 占32位. 缺点: 浪费
ASCII码的内容是不能改变的. 编码还应该是原来的编码. 但是unicode占用32个位置. ASCII会强制在前面补24个0. 在网络传输和数据存储上会浪费空间
32个bit => 4个byte
UTF-8: 可变长度的unicode编码, 8的意思是一个字符最少8位
英文: 8bit, 1byte
欧洲: 16bit, 2byte
中文: 24bit, 3byte
ASCII: 8bit 1byte
GBK: 16bit 2byte
unicode:32bit 4byte
UTF-8: 最少8bit, 1byte, 中文: 24bit 3byte
计算机存储系统单位换算
8bit => 1byte
1024byte => 1KB
1024kb = 1MB
1024MB = 1GB
1024GB = 1TB
字符串
索引:
0 1 2 3 45 6 7 8
# s = "今天很萌.明天也萌"
# 字符串中的第几个字符
# 索引语法 字符串[索引] 索引从0开始
# print(s[3])
# print(s[5])
# print(s[0])
# print(s[-1]) # 倒数第一个
# print(s[-5]) # . 倒数第5个\
# 正向 从 0 开始
# 反向 从-1 开始
切片:
# 0 1 2 3 4 56 7 8 9 101112 13 14
# s = "我想吃切糕.切糕没有芝麻好吃!"
# print(s[2:5]) # 切片. 顾头不顾腚. 前面的能取到. 后面的取不到
# print(s[4:1]) # 给两个参数. 默认向右切
# print(s[5:8]) # .切糕
#print(s[:7]) # 从头开始切
# print(s[10:]) # 切到最后
# print(s[:]) # 全都切出来
# print(s[5:99]) # 如果右边的值. 超过了字符串长度. 切到最后
# print(s[-5:]) # 啥也不写. 到最后
# 可以跳着切 步长
s = "abcdef,ghijklmn"
# print(s[0:7:2]) # aceg 每2个切一个
# print(s[1:5:3]) # be
# print(s[-8:-2: 2]) # 倒数的也可以跳着切
# print(s[-1:-6:-1])# 反着取.
首字母大写:capitalize
s = "alex and wusir gaoji"
s1 = s.capitalize()
print (s1)
首字母大写:capitalize
每个单词首字母大写:title()
s = "alex and wusir gaoji"
s2 = s.title() # 标题, 每个单词首字母大写 , 特殊字符, 中文在这里算特殊字符
print(s2)
大小写转换:(大写:upper())(小写:lower())
name = "taiBai"
s1 = name.upper()
print(s1)
s2 = name.lower()
print(s2)
(大写转小写,小写转大写:seapcase())
s = "alexAndEggonAndRiTian"
s1 = s.swapcase()
print(s1)
验证码例题:
verify_code = "FaD3"
verify_code_user = input("请输入验证码:")
if verify_code.upper() == verify_code_user.upper():
print("验证码成功")
else:
print("验证失败")
拉长字符,由xxx进行填充:center(数字,"xxx填充")
s="hu"
s1 = s.center(15, "*")# 拉长成10个字符. 由*进行填充
print(s1)
去空格
去掉左右两边空格:strip()
s = " 麻花 藤. 张x忠, 刘华强 "
s1 = s.strip() # 去掉左右两边的空格, 必须要记住
print(s1)
单独去掉左边或右边
lstrip() # 去掉左边的空格
rstrip() # 去掉右边的空格
去空格例题:
username = input("用户名:").strip()
password = input("密码:").strip()
if username == 'alex' and password == '123':
print("登录成功")
else:
print("失败")
替换:replace
s = "alex,wusir,taibai,eggon"
s1 = s.replace("a", "喜欢")
print(s1)
切割:split
例:
s = "李嘉诚_王健林_马云_刘东强"
lst = s.split("_") # 字符串切割. 切割的结果是列表
print(lst[0])
print(lst[1])
print(lst[2])
print(lst[3])
#也可以切割字
例:
s = "我想吃切糕.切糕没有芝麻好吃!"
s1 = s.replace(".", "")
print(s1)
切几次
例:
s = "a_b_c_d_e_f_g"
lst = s.split("_", 2) # 第二个参数. 切的次数
print(lst)
结果:['a', 'b', 'c_d_e_f_g']
#切割不能从头切到尾
格式化输出{}format
例:
print("{person1}很帅, {person2}信吗?, 不信给你{money}钱".format(person1="旭哥", person2="我们", money=100))
结果:旭哥很帅, 我们信吗?, 不信给你100钱
另一种格式化输出:
print("%s很帅, 你信吗?" % "我")
结果为:我很帅, 你信吗?
count 数数
s = "alex wusir taibai 女神"
print(s.count("ai")) # 计算ai在原字符串中出现的次数 如果没出现返回0
find 查找
s = "明天周末了.你们打算干什么去?"
print(s.find("了")) # 如果你要查找的内容不存在. 返回-1, 如果存在返回索引,find是找到目标在第几位
index 求索引
s = "下周我们要考试了. 你们慌不慌"
print(s.index("慌")) # 如果找不到报错.find找不到是返回-1,index找不到是报错
条件判断:(startswith判断字符串是否以xxx开头 , endswith 判断字符串是否以xxx结尾)
s = "写个啥呢? 哈哈哈"
print(s.startswith("写个啥呢"))
结果:True
# 判断字符串是否以xxx开头
print(s.endswith("哈哈哈"))
结果:True
# 判断字符串是否以xxx结尾
是否是字母和数字组成(isalnum数字和字母 , isdigit数字 , isalpha字母)
s = "abcdefg"
print(s.isalnum()) #数字和字母
print(s.isdigit()) # 数字
print(s.isalpha()) # 字母
s = "壹贰"
# print(s.isnumeric()) # 几乎所有数字
# print(s.isdigit()) # 阿拉伯数字
求字符串的长度
s = "abcde"
ret = len(s) # 内置函数
print(ret) 结果:5
练习, 计算在字符串"I am sylar, I'm 14 years old, I have 2 dogs!" 出现过多少个数字. 个位为单位
s = "I am sylar, I'm 14 years old, I have 2 dogs!"
count = 0
for w in s:
if w.isdigit():
count = count + 1
print(count)