python——字符串

    xiaoxiao2023-09-30  163

    1、字符串的创建

    字符串是 Python 中最常用的数据类型,创建字符串只要给变量指定一个字符类型的值即可。可以使用以下方法: 使用单引号定义字符串

    a = 'sun'

    使用双引号定义字符串

    b = "cloud"

    使用""" 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符

    c= """ ... 天气好热 ... 没有风 ... 也没有云 ... """

    示例:

    >>> a = 'sun' # 定义a >>> b = "cloud" #定义b >>> c= """ # 定义c ... 天气好热 ... 没有风 ... 也没有云 ... """ >>> print(a) #输出a sun >>> print(b) #输出b cloud >>> print(c) #输出c 天气好热 没有风 也没有云 >>>

    2、字符串的特性

    1 索引
    字符串是字符的有序集合,可以通过其位置来获得具体的元素。在 python 中,字符串中的字符是通过索引来提取的,索引从 0 开始。python 可以取负值,表示从末尾提取,最后一个为 -1,倒数第二个为 -2,即程序认为可以从结束处反向计数。

    索引是从0开始,使用:变量名称[索引] 来得到字符串中的字符

    >>> name = 'shang' # 定义字符串,共有5个字符,其索引为0 1 2 3 4 >>> print(name[0]) # 输出第一个字符 s >>> print(name[2]) # 输出第三个字符 a >>> print(name[-1]) # 输出第最以后一个字符 g >>> print(name[5]) # 该字符串中没有索引 5 出现报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range >>>
    2 切片

    切片可以提取相应部分数据,通常右边界不包括在提取字符串内。 格式: 变量名称[start:stop:step] 从start开始到stop结束,步长为stop print(name[0:3]) #输出提取的从索引0 到索引2 的所有字符(不包括右边界3) print(name[0:4:2]) #输出提取的从索引0 到索引3 的所有字符,步长为2 print(name[:]) # 左右边界都为空,默认提取所有的字符 print(name[2:]) # 右边界为空,表示提取从索引2到结束的字符 print(name[:3]) # 左边界为空,表示提取从头开始到索引2 为止的字符 print(name[::-1]) # 字符串反转

    输出结果示例:

    >>> name = 'shang' >>> print(name[0:3]) sha >>> print(name[0:4:2]) sa >>> print(name[:]) shang >>> print(name[2:]) ang >>> print(name[:3]) sha >>> print(name[::-1]) gnahs >>>
    3 重复

    格式 : 变量 * 重复次数

    >>> name = 'shang' #定义变量 >>> name * 10 # 重复10次 'shangshangshangshangshangshangshangshangshangshang' # 结果显示 >>>
    4 连接

    格式 : 变量1 + 变量2

    >>> name = ' shang ' # 定义变量 >>> addr = ' shanxi ' # 定义变量 >>> name + addr # 变量连接 ' shang shanxi ' # 显示结果 >>>
    5 成员操作符

    in : 是成员为真 not in : 不是成员为真 可以判断指定字符是不是包含在字符串中(是否为组成字符串的成员),输出值为真true和假false

    >>> name = ' shang ' # 定义变量 >>> 'sh' in name # 判断字符sh 包含在变量中 True # 输出结果True >>> 'haha' in name # 判断字符haha 包含在变量中 False # 输出结果False >>> 'sh' not in name # 判断字符sh 不包含在变量中 False #输出结果False >>> 'haha' not in name #判断字符haha 不包含在变量中 True # 输出结果True >>>
    6 for遍历字符串的每一个字符

    使用for 语句可以循环输出字符串中的每一个字符

    [kiosk@foundation47 0523]$ cat name.py name = 'shang' # 定义变量 for i in name : print (i) [kiosk@foundation47 0523]$ python3 name.py # 运行输出每一字字符 s h a n g

    练习 :

    题目要求: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左) 读都是一样的整数。 1 字符串特性:

    [kiosk@foundation47 day 02]$ cat 2.5.py str = input('please input : ') print( str[::-1] == str ) **测试:** [kiosk@foundation47 day 02]$ python3 2.5.py please input : 12345 False [kiosk@foundation47 day 02]$ python3 2.5.py please input : 1234321 True [kiosk@foundation47 day 02]$

    2 其他方法: shell 脚本实现:

    #!/bin/bash read -p '请输入数字 : ' NUM num=$NUM MUN=0 while [ "$num" -gt "0" ] do ((MUN=$MUN*10+$num)) ((num=$num/10)) done if [ "$MUN" -eq "$NUM" ] then echo "$NUM 是回文数 !!" else echo "$NUM 不是回文数 !!" fi

    结果演示:

    [root@foundation47 shell]# sh huiwenshu.sh 请输入数字 : 123 123 不是回文数 !! [root@foundation47 shell]# sh huiwenshu.sh 请输入数字 : 1234321 1234321 是回文数 !!
    7 字符串的常用方法

    使用格式 : 字符串.函数名称

    istitle() #判断字符串是否为标题(标题首字母大写) 输出为True 或者False isupper() #判断字符串是否为全部大写 输出为True 或者False islower() #判断字符串是否为全部小写 输出为True 或者False lower() #将字符串转化成小写 upper() #将字符串转化成大写 title() # 将字符串转化成标题格式

    示例:

    >>> 'shang'.istitle() False >>> 'Shang'.istitle() True >>> 'shang'.isupper() False >>> 'shang'.islower() True >>> 'SAHANG'.islower() False >>> 'SAHANG'.isupper() True >>> 'shang'.title() 'Shang' >>> 'shang'.upper() 'SHANG' >>> 'SHANG'.lower() 'shang' >>> endswith('str') #判断是否以str结尾输出结果为True或者False startswith('str') #判断是否以str开头输出结果为True或者False isdigit() #判断字符串是否全部由数字组成 isalpha() #判断字符串是否全部由字母组成 isalnum() #判断字符串是全部由字母和数字组成

    示例:

    >>> filename = 'daojishui.sh' >>> filename.endswith('.sh') True >>> filename.startswith('dao') True >>> filename.isdigit() False >>> '1234'.isdigit() True >>> filename.isalpha() False >>> 'hahahah'.isalpha() True >>> 'hahahah'.isalnum() True strip() #去除左右两边的空格,空格为广义的空格 包括:\t \n lstrip() #去除左边的空格,空格为广义的空格 包括:\t \n rstrip() #去除右边的空格,空格为广义的空格 包括:\t \n #同时也可以在括号中指定字符,将左右两边的指定字符串去除

    示例:

    >>> s = ' \t\t sehahahase \n\n\t' #定义字符串变量 >>> s.strip() #去除左右两边的空格 'sehahahase' >>> s.lstrip() #去除左边的空格 'sehahahase \n\n\t' >>> s.rstrip() #去除右边的空格 ' \t\t sehahahase' >>> ss='sehahahase' # 定义变量 >>> ss.strip('se') #去除两边的指定字符 'hahaha' >>> ss.lstrip('se') #去除左边的指定字符 'hahahase' >>> ss.rstrip('se') #去除右边的指定字符 'sehahaha' >>>

    练习:

    变量名定义是否合法: 1.变量名可以由字母 数字 下划线组成 2.变量名只能以字母和或者下划线开头

    while True: name=input('NUM : ') if name == 'exit' : print('即将退出') break if name[0].isalpha() or name[0] == '_' : for i in name[1:]: if not (i.isalnum() or i == '_'): print('变量不合格') break else : print('变量合格') else : print('变量不合格')

    字符串的对齐:

    center(num,'*') #预留为值num个 指定字符串居中,剩下的以* 天填充,不指定默认以空格填充 ljust(num,'*') #预留为值num个 指定字符串居左,剩下的以* 天填充,不指定默认以空格填充 rjust(num,'*') #预留为值num个 指定字符串居右,剩下的以* 天填充,不指定默认以空格填充

    示例:

    >>> 'shang'.center(40) ' shang ' >>> 'shang'.center(40,'*') '*****************shang******************' >>> 'shang'.ljust(40,'*') 'shang***********************************' >>> 'shang'.rjust(40,'*') '***********************************shang' >>> 'shang'.rjust(40,) ' shang' >>> 'shang'.ljust(40) 'shang ' >>>

    字符串的搜索和替换: find 找到子字符串,并返回最小的索引

    >>> s = 'shanghello' #定义字符串 >>> s.find('s') #搜索s并返回最小索引 0 >>> s.find('h') #搜索s并返回最小索引,存在两个h 返回的是最小的索引 1 >>> s.find('h',4,6) # 指定索引范围内搜索h 并返回最小索引 5

    replace(old,new) 替换字符串中的old内容为new

    >>> s = 'shang' >>> s.replace('s','f') 'fhang' >>>

    字符串的统计:

    count(子字符串) #统计子字符串出现的次数 len(字符串) #统计字符串的长度

    示例:

    >>> s = 'shanxixianyang' >>> s.count('x') 2 >>> s.count('a') 3 >>> len(s) 14 >>> len('hahaha') 6 >>>

    字符串的分离和连接:

    split(分隔符) #以指定的分隔符将字符串分隔成几部分 符号.join(分隔后的字符串) #用符号将分隔后的字符串重新连接起来

    示例:

    >>> date = '2019.05.24' # 定义字符串 >>> date1 = date.split('.') # 以.为分隔符进行分离 >>> date1 ['2019', '05', '24'] # 分离后的结果 >>> date1[1] #分离后支持索引 '05' >>> date1[:] ['2019', '05', '24'] >>> date1[::-1] ['24', '05', '2019'] >>> '-'.join(date1) #用-进行连接分离后的字符串 '2019-05-24' >>> '/'.join(date1) # 用/进行连接分离后的字符串 '2019/05/24' >>>

    练习:

    1 题目描述: 给定一个句子(只包含字母和空格), 将句子中的单词位置反转, 单词用空格分割, 单词之间只有一个空格,前后没有空格。 “hello xiao mi”-> “mi xiao hello”

    sentence=input('please input : ') sentence1=sentence.split(' ') sentence2=sentence1[::-1] print(' '.join(sentence2))

    效果演示:

    [root@foundation47 day 02]# python3 2.7.py please input : hello xiao mi mi xiao hello [root@foundation47 day 02]# python3 2.7.py please input : it is hot hot is it [root@foundation47 day 02]#

    2 设计一个程序,帮助小学生练习10以内的加法 - 随机生成加法题目; - 学生查看题目并输入答案; - 判别学生答题是否正确? - 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);

    i = 0 m = 0 import random print('如果要退出请输入 q') while True: num1 = random.randint(0, 10) num2 = random.randint(0, 10) print('%d + %d = ' % (num1, num2)) anwser = input('答案是:') if anwser == 'q': break if int(anwser) == num1 + num2: m += 1 print('回答正确') else: print('回答错误') i += 1 if i == 0: print('还未开始答题') else : p = m / i print('共计答题%d ,正确%d , 正确率%.2f%%' % (i, m, p * 100))

    3 小学生算术能力测试系统: 设计一个程序,用来实现帮助小学生进行百以内的算术练习, 它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目; 练习者根据显示的题目输入自己的答案, 程序自动判断输入的答案是否正确并显示出相应的信息。

    i = 0 m = 0 import random while i < 10: op = ['+', '-', '*', '/'] act = random.choice(op) num1 = random.randint(0, 100) num2 = random.randint(0, 100) if act == '+' : anwser = input('%d + %d = ' % (num1, num2)) if int(anwser) == num1 + num2: m += 1 print('回答正确') else: print('回答错误') elif act == '-' : anwser = input('%d - %d = ' % (num1, num2)) if int(anwser) == num1 - num2: m += 1 print('回答正确') else: print('回答错误') elif act == '*' : anwser = input('%d * %d = ' % (num1, num2)) if int(anwser) == num1 * num2: m += 1 print('回答正确') else: print('回答错误') else: anwser = input('%d / %d = ' % (num1, num2)) if int(anwser) == num1 / num2: m += 1 print('回答正确') else: print('回答错误') i+=1 p = m / 10 print(' 正确%d , 正确率%.2f%%' % (m, p * 100))
    最新回复(0)