python笔记4 - 索引,切片,字符编码转换函数,字符串的属性方法,字符串格式化表达式,占位符,基于字典的字符串格式化,循环语句

2017/9/28

索引,切片,字符编码转换函数,字符串的属性方法,字符串格式化表达式,占位符,基于字典的字符串格式化,循环语句

 

========================================================================

索引index:

  python 字符串是不可以改变的"字符"序列

语法:

  字符串[整数值]

说明:

  序列都可以用索引(index)来访问序列的中对象

  序列正向的索引是从0开始的,第二个索引是从1,...,最后一个为len(s)-1

  序列的反向索引是从-1开始的,-2代表倒数第二个...,最后一个是-len(s)

实例1:

  s = "abcdefg"

  s[0] >>>a              s[4] >>>e

实例2:

  s[-1]>>>g              s[-4]>>>d

 

========================================================================

切片slice(分片)

字符传中,从字符串序列中去除相应的元素,重新组成一个新的字符串序列

切片分为正向切片和反向切片,

当步长为负数时为反向切片

 

语法:

字符串[开始索引b:结束索引e:(步长s)]  #包括索引b,不包括索引e  

注:小括号扩起的部分代表可以省略

 

实例:

s = ["ABCDE"]

>>>s[2:4]        >>'CD'     #包括索引2,单是不包括索引4,和range(a,b)生成序列类似,包括a,不包括b

>>>s[2:5]        >>'CDE'

>>>s[1:]         >>'BCDE'

>>>s[0:len(s)] >>'ABCDE'

>>>s[1:]         >>'BCDE'

>>>s[:len(s)]  >>'ABCDE'

 

>>>s[0:5:2]      >>'ACE'

>>>s[::2]        >>'ACE'

>>>s[1:5:2]      >>'BD'

 

>>s[-1:-6:-1]    >>'EDCBA'

>>s[:-6:-1]      >>'EDCBA'

>>s[::-1]        >>'EDCBA'

>>S[-2:-6:-1]    >>''

实例:

s = ABCDE

S1 = ABCDE|EDCBA

S1 = s + '|'+ s[::-1]   #切片中的反向步长能够实现字符的反向排序

 

========================================================================

 

python3中常用的序列函数(当有部分字符时,会转换成编码数再进行比较)

len(s)     返回长度

max(x)     返回序列中最大的元素

min(x)     返回序列中最小的元素

 

========================================================================

 

字符编码转换函数:

ord(s)     返回一个字符的编码值(ascii/unicode值)

chr(i)     返回i这个编码值所对应的字符

实例:

ord('a')   >>>97         #ascii的编码

ord('A')   >>>65         #ascii的编码

ord('0')   >>>48         #ascii的编码

chr(10000)   >>>铅笔       #unicode编码

chr(10001)   >>>钢笔       #unicode编码

 

整数转为字符串函数

bin(i)    将整数转换为二进制字符串

oct(i)    将整数转换为八进制字符串

hex(i)    将整数转换为十六进制字符串

实例:

0x7d0 >>>2000(十进制)

otc(2000) >>>0o3720(八进制)

bin(20000)>>>0b11111010000

 

字符串转换函数

str(x)  将对象转为字符串

int(x)

float(x)

complex(x)

bool(x)

 

实例:

int(3.14)    >>3

int("3.14")  >>错误 ,这里"3.14"是一个字符

bool("\0")   >>True    #这个字符虽然看不见(不在屏幕打印任何东西),单确确实实存在

max(5)       >>错误

========================================================================

字符串的属性方法:

对象.属性

例:

"123".isnumeric()    >>>True   语法正确,123是str类型   

"abc".isnumeric()    >>>False

2.isnumeric          >>>bug    语法错误,2是int类型,这里需要加上""转换为字符串再进行判断

 

字符串常用的方法(假设字符变量名为s)

      方法                                 说明

    s.isdigit()                     判断字符串是否全为数字

    s.isalpha()                    判断字符串是否全为字符(英文字符)

    s.islower()                    判断字符串是否全为小写字符    

    s.isupper()                    判断字符串是否全为大写字符

    s.isspace()                    判断字符串是否为空白字符

    s.isnumeric()                  判断字符串是否为数字(ascii)

 

------------------------------------------------------------------------------------------

 

    s.center(width[,fill])         将原字符串居中,左右默认填充空格

    s.conunt(sub[,start[,end]])    获取一个字符串中sub的个数

    s.find(sub[,start[,end]])      获取字符串中sub的索引,失败返回(找到的话返回下标,未找到返回-1)

    s.strip()                      返回去掉左右空白字符的字符串                     

    s.lstrip()                     返回去掉左空白字符的字符串 

    s.rstrip()                     返回去掉右空白字符的字符串

    s.title()                      生成每个单词首字符大写的字符串

    s.upper()                      生成将英文转换为大写的字符串

    s.lower()                      生成将英文转换为小写的字符串

    s.replace(old,new[,count]),    将原字符串old用new代替,生成一个新的字符串

 

实例:

' '.isspace       >>>True

'\t\n\r'.isspace  >>>True

"abc".center(10)      >>>'   abc    '

"abc".center(10,'@')  >>>'@@@abc@@@@'

'asdasdsf'.count('asd')    >>>2  (相似 "abc" in "abcdefg":  ,但是其只是bool运算,值返回布尔值)

"abcdabcd".conut("a",4,7)  >>>1

"abcdababc".find('ab')     >>>0

"abcdababc".find('aba')    >>>4  (找到的话返回下标,未找到返回-1)

"abcdababc".find('kb')     >>>-1

‘    nihai你好     ’.strip()  >>>'nihai你好'

"hello world".title()           >>>"Hello World"

"hello world".upper()           >>>"HELLO WORLD"

"hello world".lower()           >>>"hello world"

"my name is xiaoyuxiu".replace('xiaoyuxiu','nihaonihao')   >>>'my name is nihaonihao'

"ab abc abcd AB".replace('ab','AB',2)                      >>>'AB ABc abcd AB'

 

注意:

注1:空白字符是指 水平制表符\t 换行符\n 空格' '等不可见字符 

注2:帮助手册 help(str)

注3:这里只会生成新的字符串,而不是改变原来变量绑定的字符内容

 

实例:

print('abc\tabc')

print(len('abc\tabc'))

 

print('abcabc')

print(len('abcabc'))

 

print('abc abc')

print(len('abc abc'))

 

tudoudaxia@can:~/lolclear7$ python3 yuan.py

abc abc

7

abcabc

6

abc abc

7

========================================================================

字符串格式化表达式:生成一定格式的字符串

运算符:

  语法:格式字符串 % 参数值

        格式字符串 % (参数值1,参数值2,...)

实例1:

  fmt = "姓名:%s,年龄:%d"      ####### %s,%d 格式化占位符

  name = "xiaoyuxiu"

  age = 23

  print(fmt % (name,age))

>>>姓名:xiaoyuxiu,年龄:23

 

实例2:

"aa %s cc" % "bb">>>'aa bb cc'

 

========================================================================

占位符:

占位符类型码          意义

    %s               字符串(人类识别)

    %r               字符串,使用repr()转义,而不是str()(机器识别,比如会对 ' 进行转义,变成 \'(repr()将表达式变成字符,eval()将字符变成表达式)

    %c               整数转为单个字符

    %d               十进制整数

    %o               八进制整数

    %x               十六进制整数(字符a-f小写)

    %X               十六进制整数(字符A-F大写)

    %e               指数型浮点数(e小写),如2.9e+10

    %E               指数型浮点数(E大写),如2.9E+10

    %f,%F            十进制浮点数形式

    %g,%G            十进制形式浮点或指数浮点自动换行

    %%               等同于一个字符%

 

实例:

'%o' % 9       >>>11

'%x' % 200     >>>c8

'%X' % 200     >>>C8

'%c' % 10000   >>>'?'

'%e' % 25400000   >>>'2.540000e+07'

'%E' % 25400000   >>>'2.540000E+07'

'%f' % (2.9*10**8)  >>>'290000000.000000'

'%d' %   10   >>>10

'%d%%' % 10  >>>10%            #百分号已经不是百分号,而是一个新的转义符号,如果要表示一个百分号,需要两个百分号连在一起完成表示

总结:

%后面的数用%前面的格式重新输出

 

========================================================================

基于字典的字符串格式化:

"%(name)s 今年 %(age)d 岁" % {"age":23,"name":"xiaoyu"}

#不必进行位置对应,"age""name"会按前面的名字进行对其

 

 

占位符合类型码之间的格式语法

-号左对齐

+号右对齐(显示正负号)

0 补零

width 宽度

pricision 精度(仅限在浮点数中使用)

 

实例:

"%d" % 123 >>>'123'

"%10d" % 123>>>'       123'          #补成10个字符,字符右对齐

"%-10d" % 123>>>'123       '         #补成10个字符,字符左对齐

"%010d" % 123>>>'0000000123'          #补成10个宽度,空白的地方0补齐

"%7.2f" % 1.2345678>>>'   1.23'      #7补成宽度,2表示精度

 

========================================================================

循环语句:根据一定的条件,重复的执行一个或多个语句包括:while语句 和 for语句。 

 

while:

语法:while 真值表达式:

        语句1

         ...

      else:

        语句2

         ...

 

语法说明:

   else子句可以省略

执行顺序:

  1.线判断真值表达式是否为True

  2.如果第1步为True,则执行语句1后跳到第1步,否则跳到第3步

  3.执行else子句

  4.结束while语句的执行

 

实例1:

打印1~10的整数

n =1

while n <= 10:

    print(n)

    n += 1

 

实例2:

n =1

while n <= 10:

    print(n)

     n += 1

bug:IndentationError: unexpected indent

解析:n自增语句缩进,未与p对齐

 

实例3:

n=1

while n<=10:

    print(n)

    n += 1

else:

    print("循环条件不成立")

print("我是最后一条语句")

 

实例4:

n=1

while n<=10:

    print(n)

    n += 1

else:

    print("循环条件不成立")

print("我是最后一条语句")

bug:SyntaxError: invalid character in identifier

分析:括号用的是中文,如果正确,括号下面会出现横线提示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值