12-27 day4获取字符,字符串相关运算,格式字符串,类型转换


1.getchar --获取字符

1.获取单个字符

  • 字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置
    下标是从0开始依次增加,0对应的是第一个字符(0 -- 字符串长度-1);
    也可以从-1开始依次减少,-1对应的是最后一个字符(-1 -- 字符串长度)
    例如:'hello' -> h->(0,-5 ) e->(1,-4) l->(3,-3) l->(4,-2) o->(4,-1)

  • a.语法:
    字符串[下标] - 获取字符串中指定下标对应的字符

  • b.说明:

  • 字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量、字符串变量
    [] - 固定写法

  • 下标 - 需要获取的字符对应的下标,注意:这儿的下标不能越界

result = 'how are you!'[0]  #获取字符中下标是0的字符并赋值给变量result
print(result)   #h
print('how are you!'[-4])  #y

print('how are you!'[14]) #IndexError: string index out of range 下标越界

str1 = 'good good study!day day up!'
print(str1[10],str1[-2])  #s p

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

方法1.

  • a.语法:
    字符串[开始下标;结束下标;步长]

  • b.说明:
    -从开始下标开始获取到结束下标前为止,每次下标值加上步长获取下一个

  • 字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量、字符串变量
    [ ;] - 固定写法

  • 开始下标、结束下标 - 下标值(这儿的下标可以越界)

  • 步长 - 必须是整数,正数和负数都行,
    如果步长是正数,是从开始下标开始从前往后获取;
    如果步长是负数,是从开始下标开始从后往前获取

  • c.注意:
    当步长为正,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置前面。否则结果为空
    当步长为负,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置后面。否则结果为空

  • 不管怎么取,结束下标一定取不到!

str1 = 'hello python!'
print(str1[0:-1:2])     #hlopto
print(str1[0:10:-2])    #null,结果为空
print(str1[-1:0:-2])    #!otpol
print(str1[-1:-10:2])   #null
print(str1[-1:-100:-2]) #!otpolh,结束下标越界
print(str1[100:-100:-2])#!otpolh,下标越界

#练习:获取一个字符串中所有下标是奇数的字符(顺序)
print(str1[1:100:2])   #el yhn

方法二:(省略步长)

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

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

方法三:(省略开始下标和结束下标)

  • a.省略开始下标
    字符串[:结束下标:步长]
    -当步长是正数,从字符串的第一个字符开始取到结束下标为止;
    -当步长是负数,从字符串的最后一个字符开始取到结束下标为止;
  • b.省略结束下标
    字符串[开始下标::步长]
    -当步长是正数,从开始下标开始取到字符串最后一个字符为止;
    -当步长是负数,从开始下标开始取到字符串第一个字符为止;
print('when i was young '[:6])   #when i
print('when i was young!'[:6:-1]) #!gnuoy sawprint('when i was young!'[:6:-1]print('when i was young!'[:6:-1])
print('when i was young!'[0:])  #when i was young!
print('when i was young!'[:]) #when i was young!
print('when i was young!'[::-1])   #!gnuoy saw i nehw  字符串倒序


2.字符串相关运算

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

  • a.Python中的字符串支持数学运算符中的 + *,以及所有的比较运算符

  • 加 + : 字符串1+字符串2 --将字符串1和字符串2拼接在一起产生一个新的字符串
    注意:字符串和数字不能混合相加!

  • 乘 * : 字符串 * N --N是正整数;字符串重复N次产生一个新的字符串

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

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

str1 = 'abc'
print(str1 * 3)  #abcabcabc

  • c.比较是否相等
    == , != 可以判断两个字符串是否相等或者不相等

  • d.字符串比较大小:从第一个字符开始依次往后找,找到第一个不相等的字符对,判断它们编码值的大小,
    谁的编码值大,对应的字符串就大,不会再往后比较了

应用
1.判断是否是小写字母:
‘a’<=char<='z'(只有Python支持这种写法。Pythonnb.) --> char>= ‘a’< and char<='z'

print('abc'=='abc')  #True
print('abc'=='bac')  #False

print('dcb' > 'abcde')  #True

2.判断一个字符串中第三个字符是否是字母

str2 = 'sa1hif329'
char = str2[2] #取出第三个字符
print('是否是字母','a'<=char<='z' or 'A'<=char<='Z')  #是否是字母 False
print('是否是中文','\n4e00' <= char <= '\n9fa5')      #是否是中文 False

2. in 和not in 操作

字符串1 in 字符串2 -> 判断字符串1是否是字符串2的子串
字符串1 not in 字符串2 -> 判断字符串1是否不是字符串2的子串

print('abc' in 'helloabc')  #True
print('abc' in 'ahellobc')  #False ,顺序必须相同
print('abc' not in 'helloabc')  #False
print('abc'not in 'ahellobc')  #True

3. len函数、

len(序列) - 获取序列长度,获取序列中元素的个数
len(字符串) - 获取字符串的长度,就是字符的个数

  • 注意:
    一个可以转义的转义字符长度是1;
    一个编码字符长度是1;
    一个空格字符长度是1;
    手动在键盘上按一个tab一般是4个空格,长度是4;一个\t表示的tab长度是1

print(len('ashfov')) #6

str1=input('请输入:')    #输入abcd
last_char =str1[len(str1)-1]   #最后一个字符
print(last_char)           #d

str1='  abc'
str2='\tabc'
print(len(str1),len(str2)) #5 4  本机设置的一个tab是2个空格


3.formstring 格式字符串

1.什么是格式字符串

  • 在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化

2. 语法:

包含占位符的字符串%(值1,值2,值3,···)

3 说明:

  • 占位符 -
    %s (字符串)
    %d (整数)
    %f (小数) (%.nf 保留小数点后n位小数)
    %c (字符)(可以将数字转换成字符)

  • % -- 固定写法

  • () -- 固定写法,字符串中只有一个占位符的时候,这个()可以省略

  • 括号中的值 - 值和占位符要一一对应(个数、类型、位置都要对应)

name = input('姓名:')
age = 18
sex = '男'
message = '我叫%s,今年%d,性别%s,月薪%.1f万'%(name,age,sex,1.5)
print(message)
  • 练习:输入一个字符串,用一个变量保存输入的字符串的相关信息,XXX的长度是XX,最后一个字符是X
str1 = input('请输入一个字符串:')
length = len(str1)
char = str1[len(str1)-1]
message ='%s的长度是%d,最后一个字符是%s'%(str1,length,char)
print(message)


4.typeconversion 类型转换

1、基本语言

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

2.转换实例

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

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

1.转换成整型

a = int(12.8) #12  浮点数可以转换成整数,直接保留整数部分
b = int(True)   #bool可以转换成整数,True->1 ,Fasle->0
c = int('12')    #只有去掉字符串的引号后本身就是一个整数的字符串才能转化成整型
print(a,b,c)

2.转换成浮点型

a = float(100)   #所有的整数都可以转换成浮点数,在后面加.0
b = float(True) #所有的bool都可以转换成浮点数,True->1.0  False->0.0
c = float('12.9') #去掉字符串的引号后本身就是一个数字的字符能转化成浮点型
print(a,b,c)

3.转换成布尔类型

  • Python中所有的数据都可以转换成布尔
  • 所有为空、为0的值都会转换成False,其他全是True
a = bool(0)
b = bool(0.0)
c = bool('')
d = bool ([])
e = bool({})
f = bool(None)
print(a,b,c,d,e,f)  #False False False False False False

4.转换成字符串类型

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

  • 练习:输入3个数字,求着3个数字的和

num1 = input('输入3个数字')
num2 = input()
num3 = input()
print('三个数字的和是:',float(num1)+float(num2)+float(num3))

未完待续。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • 1.什么是字符串 序列,有序,不可变的。用单引号或者双引号括起来的任意字符集。 2.字符串中的字符 a.普通字符:...
    发家致富靠养猪阅读 628评论 1 7
  • 字符串 1.什么是字符串 序列:有序,不可变的。用单引号或者双引号括起来的任意字符(集)。 2.字符串中的字符 a...
    落幕丶丶阅读 796评论 0 0
  • 一.认识字符串 什么是字符串(str)字符串是python中一种常用的有序但是不可变的容器类的数据类型,可以同时存...
    2ez4ddf阅读 472评论 0 0
  • “我受伤了,为什么受伤的总是我”她在电话的那一头抱怨到。 “怎么回事”,我问到。 “我没有完成任务,罚的”她...
    少年背抵黄昏说天黑有我阅读 200评论 0 0
  • 三苏祠,小船,阳光
    走看看阅读 228评论 0 0