美文网首页
2018-12-27day4学习总结

2018-12-27day4学习总结

作者: Little茂茂 | 来源:发表于2018-12-27 21:51 被阅读0次

一 、 获取字符

1. 获取单个字符

字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
下标的范围:下标是从0开始依次增加,0对应的第一个字符(0~ 字符串长度-1) 也可以从-1开始依次减少,-1代表最后一个字符(-1~-字符串长度)
例如:'hello':h -> 0,e -> 1 , l -> 2 , l -> 3 ,o -> 4
'\python\u4e00n' ——> p->(1,-7)
a. 语法
字符串[下标] - 获取字符串中的指定下标的字符
b. 说明:
字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
[] - 固定写法
下标 - 需要获取的字符对应的下标:下标不能越界

result = 'how are you!'[0]   # 获取字符串'how are you!'中下标是0的字符,并且赋值给result
print(result)
print('how are you!'[-4])
# print('how are you!'[12])#IndexError:string index out of range索引错误:超出范围的字符串索引

str1 = 'good good study! day day up!'
print(str1[10])
print(str1[9])

控制台显示

h
y
s

2. 获取部分字符(字符串切片)

方法一:
a. 语法:字符串[开始下标:结束下标:步长] ——> 从开始下标开始到结束下标为止,每次下标值加步长去下一个
b. 说明:
字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
[] - 固定写法
开始下标、结束下标 - 下标值(这的下标可以越界)
步长 - 必须是整数(整数和负数都行:如果步长是正数是从开始下标从前往后获取,如果步长是负数是从开始下标从后往前获取)
c. 注意:
当步长为正,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置的前面,否则结果为空串!
当步长为负,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置的后面,否则结果为空串!

不管怎么取,结束下标对应的字符一定取不到

str2 = 'hello python!'
print('结果1是', str2[0:10:2])      # 结束下标对应的字符一定取不到(从开始下标到结束下标#前前前前)
print('结果2是', str2[-1:0:-2])     # 下标0永远对应第一个字符,下标-1永远对应最后一个字符
print('结果3是', str2[-1:-100:-1])   # 下标越界可以取到所有字符
print('结果4是', str2[100:-100:-1])  # 下标越界可以取到所有字符

控制台显示

结果1是 hlopt
结果2是 !otpol
结果3是 !nohtyp olleh
结果4是 !nohtyp olleh

练习:获取一个字符串中所有下标是奇数的字符(顺序)

str3 = input('请输入一串字符:')
print('所有下标是奇数的字符(顺序)为:', str3[1:200000000000000000:2])
print('所有下标是奇数的字符(逆序)为:', str3[-2:-2000000000000000000:-2])

str4 = "{'name':'小明','age':18}"
print(str4[1:-1:1])

控制台输入joqhdqq;ldkqodp显示为

所有下标是奇数的字符(顺序)为: ohq;dqd
所有下标是奇数的字符(逆序)为: dqd;qho
'name':'小明','age':18

方法二:
字符串[开始下标:结束下标] - 步长是1;从开始下标到结束下标前为止,一个一个的取!

print('when i was young!'[2:6])

控制台显示

en i

方法三:(省略开始下标和结束下标)
a. 省略下标
字符串[:结束下标:步长] - 当步长为正数时,从字符串的第一个字符开始取到结束下标前为止; 当步长为负数时,从字符串的最后一个字符开始取到结束下标前为止
b. 省略结束下标
字符串[开始下标::步长] - 当步长为正数时,从字符串的开始下标字符开始取到最后一个字符为止;当步长为负数时,从字符串的开始下标字符开始取到第一个字符为止

str5 = 'when i was young!'
print(str5[:6], str5[:6:-1])
print(str5[2:], str5[2::-1])
print(str5[::], str5[::-1])         # 字符串正序,字符串倒序

控制台显示

when i !gnuoy saw
en i was young! ehw
when i was young! !gnuoy saw i nehw

获取单个字符下标不可以越界,获取多个字符下标可以越界

二 、字符串相关运算

1. 字符串支持的运算符:+ 、* 、> 、< 、== 、!= 、>= 、<=

python中的字符串支持数学运算符中的+和* ,以及所有的比较运算符
a. + :字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起产生一个新的字符串
注意:字符串和数字不能混合相加!
b. * :字符串 * N - N是正整数;字符串重复N次产生一个新的字符串

new_str = 'abc' + '123'
print(new_str)

name = '张三'
message = '吃饭了么?'
print(name + message)

# print('abc' + 123)             TypeError: must be str, not int

new_str = 'abc' * 3
print(new_str)

print(('abc' + '123') * 3)

控制台显示

abc123
张三吃饭了么?
abcabcabc
abc123abc123abc123

c. 比较是否相等:== 和 != 可以判断两个字符串是否相等或者不相等
d. 字符串比较大小:从第一个字符开始依次往后找,找到第一个不相等的字符对,判断他们的编码值的大小,谁的编码值大,对应的字符串就大,之后就不会往后比较了
应用:

  1. 判断是否是小写字母:'a' <= char <= 'z' <==> char >= 'a' and char <= 'z'
    判断是否是大写字母:'A' <= char <= 'Z' <==> char >= 'A' and char <= 'Z'
print('abc' == 'abc')
print('abc' == 'cba')

print('abdce' > 'abcde')

控制台显示

True
False
True

判断一个字符串中第3个字符是否是字母

str1 = 'shk23.ssy23'
char = str1[2]                 # 将第3个字符提出来
print('是否为字母', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否为中文', '\u4e00' <= char <= '\u9fa5')

控制台显示

是否为字母 True
是否为中文 False

2. in 和 not in 操作

字符串1 in 字符串2 -> 判断字符串1(子串)是否在字符串2里面
字符串1 not in 字符串2 -> 判断字符串1(子串)是否不在字符串2里面
结果是布尔值(bool) True 和 False

print('abc' in 'hello abcd')
print('abc' in 'hello abdc')

print('abc' not in 'hello abcd')
print('abc' not in 'hello abdc')

print('A' in 'hello abcd')

控制台显示

True
False
False
True
False

3. len() 函数

len(序列) - 获取序列长度,获取序列中元素的个数
len(字符串) - 获取字符串长度(字符的个数) --- 结果是整数
注意:
一个可以转义的的转义字符的长度为1!
一个编码字符的长度为1!
一个空格字符的长度为1!
手动在键盘上按一个Tab键,一般为4个空格,长度为4;一个\t来表示的Tab,长度为1

print(len('abc'))
str2 = input('请输入:')
last_char = str2[len(str2)-1]
print(last_char)

str3 = '    abc'
str4 = '\tabc'
print(str3)
print(len(str3))
print(str4)
print(len(str4))          # 手动输入的Tab和\t对应的字符长度可能不一样!\t永远是1!

控制台输入jyh显示

请输入:jyh
h
    abc
7
    abc
4

三 、 格式字符串

1. 什么是格式字符串:

在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化
语法:
包含占位符的字符串 %(值1,值2,值3...)
说明:
占位符 - %s (字符串)
%d (整数)
%f (小数) (%.nf 保留小数点后n位小数)
%c (字符) 可以把编码值直接转换打出来
% - 固定写法
() - 固定写法,字符串中只有一个占位符的时候,这个()可以省略
括号中的值 - 值和占位符要一一对应(个数、类型、位置都要对应)

name = input('姓名:')
age = 18
sex = '男'
# 加操作
# message = '我叫XXX,今年xx岁,性别:x,月薪x万'
# message = '我叫’+ name + ',今年'+ '岁,性别:'+ sex
# print(message)

message1 = '我叫%s,今年%d,性别%s,月薪%.2f万' % (name, age, sex, 1.5)
print(message1)

控制台输入“哈哈哈”显示

姓名:哈哈哈
我叫哈哈哈,今年18,性别男,月薪1.50万

练习:输入一个字符串,用一个变量保存输入的字符串的相关信息:XXX的长度为XX,最后一个字符为X

str1 = input('请输入一个字符串:')
message2 = '%s的长度是%d,最后一个字符是%c' % (str1, len(str1), str1[-1])
print(message2)

控制台输入josihod显示

请输入一个字符串:josihod
josihod的长度是7,最后一个字符是d

类型转换

1. 类型转换

语法:
类型名(数据) - 将指定数据转换成指定类型
说明:
类型名 - 任何python支持的,或者自定的类型都可以
数据 - 需要转换的对象(类型名不同要求可能不一样)

2. 转换实例

int(数据) -> 将其他数据转换成整型
float(数据) -> 将其他数据转换成浮点型
bool(数据) -> 将其他数据转换成布尔值
str(数据) -> 将其他数据转换成字符串

age = input('年龄')
print(type(age), age)
print('是否能进入网吧:', int(age) >= 18)

控制台输入13显示

年龄13
<class 'str'> 13
是否能进入网吧: False

a. 转换成整型

a = int(12.9)     # 浮点型可以直接转换成整型,结果直接保留整数
b = int(True)    # 所有布尔值都可以转换成整型,True -> 1;False -> 0
c = int('-12')  # 只有去掉字符串的引号后本身就是一个整数的字符串才能转换成整数
print(a, b, c)

控制台显示

12 1 -12

b.转换成浮点型

d = float(100)    # 所有整数都可以转换为浮点数,在后面加.0
e = float(True)   # 所有布尔值可以转换成浮点数,True -> 1.0 ; False -> 0.0
f = float('12')    # 只有去掉字符串的引号后本身就是一个整数的字符串才能转换成整数
print(d,e,f)

控制台显示

100.0 1.0 12.0

c.转换成布尔类型

python中所有的数据都可以转换成布尔
所有为空为0的值都会转换成False,其他都是True

g = bool(0)
h = bool(-0.0)
i = bool('abc')
j = bool('')
k = bool([])
l = bool({})
m = bool(None)
print(g, h, i, j, k, l, m)

控制台显示

False False True False False False False

4. 转换成字符串类型

python中所有的数据都可以转换成字符串,而且转换的时候就是单纯的在最外面加一个字符串

n = str()
print(n)

控制台显示


输入三个数字,求三个数字的和

num1 = input('请输入第一个数字')
num2 = input('请输入第二个数字')
num3 = input('请输入第三个数字')
print(float(num1)+float(num2)+float(num3))

控制台输入3,4,5显示

请输入第一个数字3
请输入第二个数字4
请输入第三个数字5
12.0

表中的所有字符串相关使用方法都是:字符串.方法名()

  1. capitalize()
    字符串.capitalize() - 将指定的字符串的第一个字符转换成大写字母,返回写的字符串
    注意:只有第一个字符是字母时才有效
str1 = 'abc'
print(str1.capitalize())
  1. 字符串对齐方式
    居中对齐 center(width,fillchar) - 居中,width决定新的字符串的长度,fillchar就是用来填充多出来的位置的字符
    左对齐 ljust(width,fillchar) - 左对齐,width决定新的字符串的长度,fillchar就是用来填充多出来的位置的字符
    右对齐 rjust(width,fillchar) - 右对齐,width决定新的字符串的长度,fillchar就是用来填充多出来的位置的字符
str2 = 'abc'
print(str2.center(8, '*'))
  1. count()
    字符串1.count(字符串2) - 在字符串1中统计字符串2出现的次数
print('abcaujnaoka'.count('a'))
  1. isalpha
    字符串.isalpha() - 判断字符中是否全是字母
    注意:非ASCII码表中的字符检测不出来!
print('ah胡sjk'.isalpha())
  1. join
    字符串1.join(字符串2) - 将字符串1插入到字符串2中的每个字符之间
str3 = '*'.join('hyu')
print(str3)
  1. split

字符串1.splite(字符串2)

print('12,89.09'.split('*'))

print('aaaaa'.split('1'))

练习:输入进班顺序,然后自动产生对应的学号,py1809XXXX

num = input('请输入你的学号')
num1 = num.zfill(4)
print('你的学号为py1809%s'% num1)

相关文章

  • 2018-12-27day4学习总结

    一 、 获取字符 1. 获取单个字符 字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位...

  • 2018-12-27day4作业

    Python字符串内建函数 1. capitalize() 字符串1.capitalize() ——> 将字符串的...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • 习惯

    好的学习习惯,才能有效的学习,每天有计划的去学习,每天都要有总结,总结做过的事情,总结学到的东西,总结学习的方法,...

  • 要做就做第一名

    前几天刚学会了一个学习的公式:体验→感受→分享→总结。 生活要学会总结,总结是最好的学习,可以说没有总结的学习不叫...

  • GNU Make / Makefile 学习资料

    GNU Make学习总结(一)GNU Make学习总结(二)这篇学习总结,从一个简单的小例子开始,逐步加深,来讲解...

  • java基础参考资料

    JavaWeb学习总结(一)——JavaWeb开发入门 JavaWeb学习总结(二)——Tomcat服务器学习和使...

  • 2018年2月计划

    1. 课程学习,以及总结笔记 《关系课程》学习50节,总结笔记。 《中国史纲》学习50节,总结4篇笔记。 《pyt...

  • 跟着麦子学英语(一)

    学习,总结,在学习! 这也许就是学习的过程吧!学习起来了,总结经验,然后推到,在重新开始学习! ...

  • 《Thinking in UML》学习总结

    《Thinking in UML》学习总结 @(总结)[思考|学习|记录] @[toc] 简要 最近看完了这本书,...

网友评论

      本文标题:2018-12-27day4学习总结

      本文链接:https://www.haomeiwen.com/subject/kzodlqtx.html