Python-03

day03

字符串 str(string)

作用:
    用来记录文字信息
表示方法:
    在非注释中,凡是用引号扩起来的部分都是字符串
    '' 单引号
    "" 双引号
    ''' 三引号
    """ 三双引号
空字符串的字面值表示方式:
    ''
    ""
    ''' '''
    """ """
    注:空字符串的布尔值bool(x)为False
非空字符串的字面值
    'hello'
    "hello"
    ''' hello '''

单引号和双引号的区别:

单引号内的双引号不算结束符
双引号内的单引号不算结束符

示例:
    print("im' hello")

三引号字符串

以''' 或""" 开头,以''',"""结尾的字符串
作用:
    三引号字符串中的换行会自动转换为换行符'\n'
    三引号内可以包含单引号和双引号
示例:
    # 表示如下
        welcome to 北京
        I like python!
        >>> s = 'welcome to 北京\nI like python!'
        >>> print(s)
        welcome to 北京
        I like python!
        >>> s='''welcome to beijing
        ... I like Python'''
        >>> s
        'welcome to beijing\nI like Python'
        >>> print(s)
        welcome to beijing
        I like Python

隐式字符串字面值的拼接

"I am " "bob"
得到的是 s = "I am bob"

常用的ASCII编码:

字符    十进制  十六进制
'0'       48      0x30
'A'       65      0x41
'a'       97      0x61

序列的概念:

字符串就是有序的排列
求序列的长度:
    len(x) 返回字符串中字符的个数

字符串练习:

'1234'  有几个字符 4
'5\'4"' 有几个字符 4
'\"A\x34'   有几个字符 3
'\n\bc\t\r'

raw 字符串(原始字符串)

格式:
    r"字符串内容"
    r'字符串内容'
    r"""字符串内容"""
    r'''字符串内容'''
作用:
    让转义字符'\'无效
示例:
    >>> a = "c:\newfile\test.py"
    >>> print(a)
    c:
    ewfile  est.py
    >>> b = r"c:\newfile\test.py"
    >>> print(b)
    c:\newfile\test.py
    >>>

字符串的运算:

+ 加号运算符用于拼接字符串
+= 用于拼接运算后改变原变量的绑定关系
示例:
    x= "abcd"+"efg"
    print(x) # abcdefg
    x+='123'
    pritn(x) # abcdefg123
* 运算符生成重复的字符串
    x= 'ab' * 2 'abab'
注:
    字符串只能和整数进行相乘
*= 生成重复的字符串并改变原变量的绑定关系
    x = '123'
    x* = 2 # '123123'

练习:

写一个程序,打印出一个高度为4行的矩形方框
要求,输入一个整数,此整数代表矩形的宽度.
如:
    输入矩形宽度: 3
    ***
    * *
    * *
    ***
答案:
    ```
    1. ine = int(input("请输入矩形的宽度:"))
        for i in range(4):
            # 打印第一行和最后一行
            if(i==0 or i == 3):
                for j in range(line):
                    print("*",end="")
                print()
            else:
                #中间行第一和最后一个打印* ,其余打印" "
                for j in  range(line):
                    if(j==0 or j == line-1):
                        print("*",end="")
                    else:
                        print(" ",end="")
                print()
    ```

in / not in 运算符

作用:
    in 用于序列,字典,集合中,用于判断某个值是否存在于容器中,如果存在返回True,否则返回False
说明:
    not in 返回结果与 in 相反
格式:
    对象 in 序列
示例:
    >>> x= "hello python"
    >>> "python" in x
    True
    >>> "hahaha" not in x
    ``True

练习:

写程序输入一个长长的字符串,然后判断你的姓名是否存在于这个字符串中.
    如果存在,则打印: '您的名字出现了"
    否则提示:'没出现你的名字"

Day03-PM

索引 index

概念:
    python 字符串是不可改变的序列
    所有的序列都可以通过索引来获取其中的数据元素
语法:
    字符串[整数表达式]
说明:
    1. 序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
    2. 序列的反向索引是从-1开始的,01代表最后一个,-2代表倒数第二个,一次类推,第一个为-len(s)

示例:
    s="ABCD"
    s[0] # 'A'
    s[-1] # 'D'$ 反向索引
    s[-2] # 'C'
    s[8] # index Error 越界错误

练习:

写程序:,输入一个字符串,打印如下内容:
    1. 打印这个字符串的第一个字符?
    2. 打印这个字符串的最后一个字符?
    3. 如果这个字符的长度是奇数,打印中间这个字符?
    注:
        求字符串的长度的函数len(s)
    答案:
        ```
        str = input("请输入一个字符串:")
        print("第一个字符是:",str[0])
        print("最后一个字符是:",str[-1])
        if(len(str)&1!=0):
            #是奇数 Python中的除法不整除的时候会保留小数 5/2 =2.5
            print("中间的字符",str[int((len(str)//2 ))])
        ```

切片操作:(slice()可以越界)

概念:
    从字符串序列中取出相应的元素重新组成一个字符串序列
语法:
    s[(开始索引b):(结束索引:e):(步长:s))]
注:
    小括号()扩起的部分代表可省略
说明:
    1. 开始索引b代表切片切下的位置,0代表第一个元素,1代表第二个元素,-1代表最后一个元素
    2. 结束索引e是切片的终止索引(但不包含终止点,可以越界)
    3. 步长是切片每次获取玩当前元素后移动的方向和偏移量
        3.1 没有步长,相应于步长为1(默认为1)
        3.2 当步长为整数时,取正向切片,开始索引默认为0,结束索引为最后一个元素的下一个位置
        3.3 当步长为负数时,取反向切片,默认的起始位置为最后一个元素,终止位置为第一个元素的前一个位置
示例:
    s = "abcde"
    a = s[:4] # abcd
    a = s[1:] # bcde
    a = s[0:2] # ab
    a = s[:] # abcde
    a = s[1:1] # ''
    a = s[4:1] # ''
    >>> a = s[4:1:-1]
    >>> a # 'edc'
    a = s[ ::2] # 'ace'
    a = s[4:0:-1] # 'edcb'
    a = s[4::-2] # 'eca'

练习:

1. 写一个程序:输入一个字符串,把字符串的第一个字符和最后一个字符去掉,打印出处理之后的字符串
2. 输入任意一个字符串,判断这个字符串是否是回文
    回文(是指中心对称的文字)示例:
        上海自来水来自海上
        ABCBA
解答:
    ```
    1. 
    str = input("请输入一个字符串:")
    str1 = str[1:-1] # 取出中间部分
    print("源字符串:",str,"现字符串:",str1)
    
    2. 
    str = input("请输入一个字符串")
    # 思路: 分两个str,正str,反str,判断两个str是否相等?
    str1= str[0:int(len(str)//2)]
    str2 = str[-1:int(-len(str)//2):-1]
    if(str1==str2):
        print(str,"是回文数!")
    else:
        print(str,"不是回文数!")
    ```

python3 中能用于字符串的函数

len(x)  返回字符串的长度
max(x)  返回字符串中编码值最大的字符
min(x)  返回最小值的字符

实例:
    s="hello"
    len(s) # 5 
    max(s) # o
    min(h) # e

字符串编码转换函数:

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

示例:
print(order('A') # 65
print(chr(65)) # A

整数转字符串的函数:

bin(i) 将整数转换为二进制字符串
oct(i) 将整数转换为八进制字符串
hex(i) 将整数转换为十六进制字符串
示例:
bin(8) # '0b1000'
oct(9) # '011'
hex(15) # '0xf'

字符串的构造(创建)函数:

str(obj ='')    将对象转换为字符串

帮助函数 help(x)

help(函数名)
help(类型名)
dir(str) # 查看str的所有函数

python3 中常用的字符串方法(method)

方法的调用语法:
    对象.方法名(方法传参)
示例:
    'abc'.isalpha()# True判断'abc'是否是字母
    '123'.isalpha()# 报错
    '123'.isdigital()# 判断字符串中的字符是否全为数字

center()函数

S.center(width[,fill])
width表示填充后的字符串长度
将原字符串居中,左右默认填充空格

count(函数)

 S.coun(sub[,start[,end]] 获取字符串中子串的个数
 start: 开始索引
 end: 结束索引
 示例:
    >>> s= 'AB ABC BCD ABC'
    >>> s.count("AB")
    3

find()函数

S.find(sub[,start[,end]])
获取字符串中子串sub的缩影,失败返回-1
'AB ABC BCD ABC'
>>> s.find("AB")
0
>>> s.find("abcd")
-1
文档参见:

S.replace()函数

S.replace(old,new[,count])
count:表示替换的个数,默认是全部替换
将原字符串的old用new代替生成一个新的字符串
s="ABAABAB"
>>> s.replace("A","a")
'aBaaBaB'
s.replace("A","a",2)
>>> s.replace("A","a",2)
'aBaABAB'

startswith(prefix[,start[,end]])

endswith(suffix[,start[,end]])

详见:
    help(str)

练习1.:

输入一个字符串:
    1. 判断您输入的字符串有几个空格
    2. 将源字符串左右空白字符去掉,打印出有效的的字符的个数
    3. 判断您输入的是否是数字
        3.1 如果是数字,判断你输入的数字是否大于100
解答:
    ```
    1. 
        str1 = input("请输入一个字符串:")
        print("源字符串:",str1,"含有空格数:",s.count(" ")
    2.
        print("源字符串:",str1,"有效字符个数",str1.strip())
    3.
        str = input("请输入一个数:")
        if str1.isdigit():
            # 判断数字是否大于100,如果字符串是整数
            print("大于" if int(str1) > 100 else "小于", "100")
        else:
            print("不是整数!")
    ```

练习:

1. 用字符串* 运算符打印三角形
    要求输入一个整数,此整数代表最长的一行星离左侧的子节数
    如: 
        输入最左侧的距离:3
    打印如下:
        *
       ***
      *****
     *******
2. 输入一个字符串,把输入的字符串中的空格全部去掉,打印出处理后的字符串的长度和字符串的内容
3. 输入三行文字,让这三行文字在一个方框内居中显示
如输入(不要输入中文)
hello!
I'm like python!
I like python
打印如下:
    +-----------------+
    |       hello!     |
    | I'm like python! |
    |   I like python  |
    +-----------------+
解答:
```
1. 
    nums = int(input("请输入一个整数:"))
    line1 = " " * (nums + 3) + "*" * 1
    line2 = " " * (nums + 2) + "*" * 3
    line3 = " " * (nums + 1) + "*" * 5
    line4 = " " * nums + "*" * 7
    print(line1, line2, line3, line4, sep="\n")

2. 
    str1 = input("请输入一个字符串:")
    print(len(str1.strip()), str1.strip())
3. 
    line1 = input("请输入第一行内容:")
    line2 = input("请输入第二行内容:")
    line3 = input("请输入第三行内容:")
    # 获取3行中最大的字符串的长度+ 5形成矩形的长
    max1 = max(max(len(line1), len(line2)), len(line3)) + 5
    line0 = "+" + "-" * (int(max1)) + "+"
    line1 = '|' + line1.center(max1) + '|'
    line2 = '|' + line2.center(max1) + '|'
    line3 = '|' + line3.center(max1) + '|'
    print(line0, line1, line2, line3, line0, sep="\n")
```

你可能感兴趣的:(Python-03)