######Python(三)字符串####

    xiaoxiao2024-12-03  55

    ####字符串#### 1)字符串的创建: 字符串是python中最常见的数据类型,创建字符串只要给变量指定一个字符类型的值即可。

    字符串的定义 1.使用单引号定义字符串

    a = 'westos'

    2.使用双引号定义字符串

    b = "redhat"

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

    c = """ westos redhat student """

    ###字符串的特性### 1)索引 字符串是字符的有序集合,可以通过其位置获得具体元素;python中,字符串中的字符通过索引来提取,索引从0开始; python可以取负值表示从末尾提取,最后一个位-1(即程序认为可以从结束处反向计数) 索引丛0开始,使用变量名称[索引]得到字符串中的字符

    [kiosk@foundation46 bin]$ ./python3 ##运行脚本 Python 3.6.4 (default, May 23 2019, 18:41:28) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> s = 'westos' ##定义字符串共六个字符,索引0,1,2,3,4,5 >>> print(s[0]) ##输出的一个字符 w >>> print(s[2]) ##输出第二个字符 s >>> print(s[-1]) ##倒数,输出倒数第一个字符 s >>> print(s[-2]) ##倒数,输出倒数第二个字符i o >>> print(s[6]) ##该字符中没有索引6 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range

    2)切片 切片可以提取相应部分数据,通常右边界不包括在提取字符串内 变量名[start:stop:step] 从start开始到stop -1结束 步长为step

    print(s[0:3]) ##输出提取的从索引0到索引2的所有字符(不包括右边界3) print(s[0:4:2]) ##输出提取的从索引0到索引4的所有字符,步长为2 print(s[:]) #左右边界都为空,显示所有的字符 print(s[:3]) #左边界为空,显示前3个字符 print(s[::-1]) #字符串的翻转 print(s[1:]) #除了第一个字符之外的其他全部字符

    3)重复 变量 * 重复次数

    s = westos >>> print(s * 3) ##重复3次 westoswestoswestos

    4)连接 变量1 + 变量2

    >>>s = 'westos' >>> c = 'redhat' >>> c + s 'redhatwestos'

    5)成员操作符: in : 是成员为真 not in : 不是成员为真 #可以判断指定字符是不是包含在字符串,输出值为真或假

    >>>s = 'westos' >>> c = 'redhat' >>> 're' in c ##判断字符re 是否包含在c 变量 True ##包含,输出true >>> 're' in s##判断字符re 是否包含在s 变量 False ##不包含,输出False >>> 'we' in s True >>> 'we' in c False

    6)for遍历字符串的每个字符 使用for语句可以循环输出字符串中的每个字符

    name = 'westos' for i in name : print(i)

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

    方法一: num = input('请输入一个数字:') if num == num [::-1]: print('是回文数') else: print('不是回文数') 方法二: num = input('Number:') print(num == num [::-1]) ##数字的正序和倒序一样(#切片的方式做) 运行: Number:121 True Number:-121 False

    2.其他方法实现

    ##字符串的常用方法## 1)格式:字符串,函数名称

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

    2)

    endswith('str') ##判断是否以‘str’结尾 startswith('str') #判断是否以‘str’开头 isalpha() ##判断字符串是否全部由字母组成 isalnum() ##判断字符串是否全部由字母和数字组成 isdigit() ##判断字符串是否全部由数字组成

    3)

    strip() ##取出左右两边的空格,空格为广义的空格 包含:\t \n lstrip() ##取出左边的空格,空格为广义的空格 包含:\t \n rstrip() ##取出右边的空格,空格为广义的空格 包含:\t \n 还可以在括号中指定字符,去掉指定字符两边的空格

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

    while True: s = input('请输入变量名:') if s == 'exit': #输入exit 退出 print('退出') break #索引判断如果以字母或—开头 if s[0].isalpha() or s[0] == '_': for i in s[1:]: #切片判断除了第一个字符的字 if not(i.isalnum() or i == print('%s变量名不合法' %(s)) break else: print('%s变量名合法' %(s)) else: print('%s变量名不合法' %(s)) 运行结果: 请输入变量名:efe3 efe3变量名合法 请输入变量名:er@q er@q变量名不合法 请输入变量名:_q1 _q1变量名合法 请输入变量名:1sdf 1sdf变量名不合法

    ##字符串的对齐##

    center(30,'#') ##预留值为30个,指定字符居中指定用#填满( 默认以空格填充) ljustr(30,'#') ##预留值为30个,指定字符居左指定用#填满 rjustr(30,'#') ##预留值为30个,指定字符居右指定用#填满

    ##字符的搜索和替换##

    s = 'hello world hello' #定义一个变量 find找到子字符串,并返回最小的索引 print(s.find('hello')) print(s.find('world')) print(s.rfind('hello')) 替换字符串中的hello(旧值)为westos(新值) print(s.replace('hello','westos'))

    ##字符串的统计## count(子字符串) ##统计子字符串出现的次数 len(字符串) ##统计字符串的长度 ##字符串的分离和连接## split(分隔符) ##以指定的分隔符将字符串分离 (分离后支持索引) 符号.jion(分隔后的字符串) ##用符号将分离后的字符串连接

    s = '172.25.254.250' s1 = s.split('.') ##以.位分隔符进行分离 print(s1[::-1]) ##支持索引,除了最后一个全部打印 date = '2019-05-24' date1 = date.split('-') ##以-位分隔符进行分离 #连接 通过指定的连接符,连接每个字符串 print(''.join(date1)) ##连接date1 print('/'.join(date1)) ##用/进行连接 print('~~'.join('hello'))##用~~进行连接

    题目描述:

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

    输入描述:

    输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

    输出描述:

    对于每个测试示例,要求输出句子中单词反转后形成的句子

    示例1:

    输入 hello xiao mi

    输出 mi xiao hello

    方式一 #接受一个句子 sentence = input('请输入一个句子:') #将句子用空格分离 sentence1 = sentence.split(' ') #用切片的方式将句子反转 sentence2 = sentence1[::-1] #用空格符连接 sentence3 = ' '.join(sentence2) print(sentence3) 方法二 print(' '.join(input().split()[::-1])) 设计一个程序,帮助小学生练习10以内的加法 详情: - 随机生成加法题目; - 学生查看题目并输入答案; - 判别学生答题是否正确? - 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点); import random wrong = 0 #定义答错的变量 right = 0 #答对 的变量 while True: #建立一个无限循环的程序 #两个随机数的范围 num1 = random.randint(0,10) num2 = random.randint(0,10) print('%d + %d = ' %(num1,num2)) #将随机的加数输出 answer = input('请输入答案:') #输入答案 if answer == 'exit': #如果输入exit退出 break elif int(answer) == num1 + num2: ##如果答案= num1 + num2: print('回答正确') right +=1 #回答正确,回答正确的变量上加一 else: print('回答错误') #否则回答错误,错误变量加一 wrong +=1 z = wrong + right #定义总答数 = 正确 + 错误 p = right/z #正确率= 正确题数/总题数 print('总共答题%d,正确%d,错误%d,正确率%.2f%%' %(z,right,wrong,p * 100) ) 运行结果: 9 + 9 = 请输入答案:18 回答正确 总共答题1,正确1,错误0,正确率100.00% 8 + 7 = 请输入答案:16 回答错误 总共答题2,正确1,错误1,正确率50.00% 9 + 6 = 请输入答案:15 回答正确 总共答题3,正确2,错误1,正确率66.67% 10 + 3 = 请输入答案:13 回答正确 总共答题4,正确3,错误1,正确率75.00% 3 + 0 = 请输入答案:exit 小学生算术能力测试系统: 设计一个程序,用来实现帮助小学生进行百以内的算术练习, 它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目; 练习者根据显示的题目输入自己的答案, 程序自动判断输入的答案是否正确并显示出相应的信息。 import random wrong = 0 #答错 right = 0 #答对 z = wrong + right while z <9: #建立一个无限循环的程序 op = ['+','-','*','/'] act = random.choice(op) ##随机执行加、减、乘、除 #两个随机数的范围 num1 = random.randint(0,10) num2 = random.randint(0,10) if act == '+': answer = input ('%d + %d = ' %(num1,num2)) if int(answer) == num1 + num2: print('回答正确') right +=1 else: print('回答错误') # wrong +=1 elif act == '-': answer = input ('%d - %d = ' %(num1,num2)) if ((int(answer) == num1 - num2) and (num1>num2)) : print('回答正确') right +=1 else: print('回答错误') wrong +=1 elif act == '*': answer = input ('%d * %d = ' %(num1,num2)) if int(answer) == num1 * num2: print('回答正确') right +=1 # else: print('回答错误') wrong +=1 elif act == '/': answer = input ('%d / %d = ' %(num1,num2)) if (answer == num1 / num2) and (num1!=0,num2!=0): print('回答正确') right +=1 else: print('回答错误') wrong +=1 z = wrong + right p = right/z print('总共答题%d,正确%d,错误%d,正确率%.2f%%' %(z,right,wrong,p * 100))

    #######列表###### 序列是python中最基本的数据结构 列表是最常用的数据类型 数组:存储同一种数据类型的集合 scores = [12,23,45] 列表(打了激素的数组):可以存储任意数据类型 ##列表的创建## 创建一个列表,只需要以逗号作为分隔符将不同数据项隔开并使用[ ] 括起来就可以

    >>> list = [1,23,2,5] #创建列表 >>> list [1, 23, 2, 5] >>> list1 = [1.3,4,'redhat',True, list] ##列表可以嵌套,并包含不同类型 >>> list1 [1.3, 4, 'redhat', True,[1, 23, 2, 5]]

    ##列表的特性##

    ervice = [‘http’,‘ftp’,‘ssh’]

    1.索引 正向索引和反向索引

    >>> list1 = [1.3,4,'redhat',True,list] ##创建一个列表 >>> list1 [1.3, 4, 'redhat', True, [1, 23, 2, 5]] 正向索引 >>> list1[0] ##从左到右索引 第一个元素 1.3 >>> list1[4] [1, 23, 2, 5] 反向索引 >>> list1[-1] ##从右到左索引 第一个元素 [1, 23, 2, 5] >>> list1[-3] 'redhat' 切片 >>> list1 = [1.3,4,'redhat',True,list] ##创建一个列表 >>> list1 [1.3, 4, 'redhat', True, [1, 23, 2, 5]] >>> list1[:] ##查看所有元素 [1.3, 4, 'redhat', True, [1, 23, 2, 5]] >>> list1[::-1] ##列表元素反转 [[1, 23, 2, 5], True, 'redhat', 4, 1.3] >>> list1[1:] ##查看除了第一个元素的列表元素 [4, 'redhat', True, [1, 23, 2, 5]] >>> list1[1:3] ##查看一到三之间的元素 [4, 'redhat'] >>> list1[:3] ## 查看前三个元素 [1.3, 4, 'redhat'] >>> list1[3:] ##查看第三个以后的元素 [True, [1, 23, 2, 5]] >>> 重复 >>> list1 [1.3, 4, 'redhat', True, [1, 23, 2, 5]] >>> list1 * 3 #将list1重复3次 [1.3, 4, 'redhat', True, [1, 23, 2, 5], 1.3, 4, 'redhat', True, [1, 23, 2, 5], 1.3, 4, 'redhat', True, [1, 23, 2, 5]] 连接 >>> list1 [1.3, 4, 'redhat', True, [1, 23, 2, 5]] >>> list = ['tom',10] >>> list ['tom', 10] >>> list + list1 ['tom', 10, 1.3, 4, 'redhat', True, [1, 23, 2, 5]] >>> 成员操作符 in ##判断元素是否属于该列表,属于为True,不属于为False not in ##判断元素是否不属于该列表,属于为True,不属于为False

    1.假定有下面这样的列表: names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’] 输出结果为:‘I have fentiao, fendai, fensi and apple.’

    names = ['fentiao', 'fendai', 'fensi', 'apple'] name1 = ('I have ' + ' '.join(names[:-1]) + 'and apple') #用空格连接字符串 print(name1)

    2.题目:输入某年某月某日(yyyy-MM-dd),判断这一天是这一年的第几天

    ##列表元素的增加## append():追加一个元素到列表

    >>> list ['tom', 10] >>> list.append('westos') >>> list ['tom', 10, 'westos']

    extend():拉伸 追加多个元素到列表中

    >>> list ['tom', 10, 'westos'] >>> list.extend(['redhat',10]) >>> list ['tom', 10, 'westos', 'redhat', 10, ]

    insert() 在指定索引处插入元素

    >>> list ['tom', 10, 'westos', 'redhat', 10, 'redhat', 10] >>> list.insert(1,'python') >>> list ['tom', 'python', 10, 'westos', 'redhat', 10, 'redhat', 10] >>> list.insert(3,'linux') >>> list ['tom', 'python', 10, 'linux', 'westos', 'redhat', 10, 'redhat', 10] >>>

    ###列表元素的删除## pop( ) ##默认删除列表的最后一个元素,可以在括号内索引指定删除的元素,删除的元素可以被变量指定接受

    >>> list ['tom', 'westos', 'redhat', 10] >>> list.pop() 10 >>> list.pop() 'redhat' >>> list.pop(0) 'tom' >>> a = list.pop(0) ##pop删除的元素由a接受 >>> a 'westos' >>>

    remove:删除列表元素,通过指定元素的内容删除并且删除的元素不能被变量接受

    >>> list ['tom', 'python', 10, 'linux', 'westos', 'redhat', 10, 'redhat', 10] >>> list.remove('linux') >>> a = list.remove('linux') >>> a >>> list ['tom', 'python', 10, 'westos', 'redhat', 10, 'redhat', 10] >>> list.remove('redhat') >>> list ['tom', 'python', 10, 'westos', 10, 'redhat', 10]

    #从内存中删除一个数据

    >> list ['tom', 'python', 10, 'westos', 10, 'redhat', 10] >>> del list[1] >>> list ['tom', 10, 'westos', 10, 'redhat', 10] >>> del list[3] >>> list ['tom', 10, 'westos', 'redhat', 10]

    ##列表元素的查看## count()查看元素在列表中出现的次数

    >>> s = ['hello','tom','hello','tony','hello'] >>> s ['hello', 'tom', 'hello', 'tony', 'hello'] >>> s.count('hello') 3

    index(元素,start,stop):查看指定元素的索引值,返回最小索引值(可以指定索引范围)

    >>> s ['hello', 'tom', 'hello', 'tony', 'hello'] >>> s.index('tom') 1 >>> s.index('hello') ##默认返回最小索引值 0 >>> s.index('hello',1,4) ##指定索引范围查看 2

    ##列表元素的排序## 默认是按照Ascii码进行排序的 sort( ) ##正序 sort (reverse=True) ##倒序 sort(key=str.upper) ##忽略大小写

    >>> s = ['Q','a','R','f','e','D','x','G'] >>> s ['Q', 'a', 'R', 'f', 'e', 'D', 'x', 'G'] >>> s.sort() ##查看排序,默认方式排序 >>> s ['D', 'G', 'Q', 'R', 'a', 'e', 'f', 'x'] >>> s.sort(reverse=True) ##倒序 >>> s ['x', 'f', 'e', 'a', 'R', 'Q', 'G', 'D'] >>> s.sort(key=str.upper)##忽略大小写 >>> s ['a', 'D', 'e', 'f', 'G', 'Q', 'R', 'x']

    随机打乱排序 import random ##安装随机模块 random.shuffle( 列表) ## 打乱列表中的元素顺序

    >>> import random >>> a = list(range(10)) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> random.shuffle(a)##打乱列表中的元素顺序 >>> a [6, 3, 5, 8, 1, 7, 4, 0, 9, 2] >>> s = ['Q','a','R','f','e','D','x','G'] >>> s ['Q', 'a', 'R', 'f', 'e', 'D', 'x', 'G'] >>> random.shuffle(s) ##打乱列表中的元素顺序 >>> s ['a', 'x', 'e', 'D', 'G', 'R', 'Q', 'f']

    题目:输入三个整数x,y,z,请把这三个数由小到大输出

    ##列表元素的修改## 通过索引值,重新赋值

    >>> s ['a', 'x', 'e', 'D', 'G', 'R', 'Q', 'f'] >>> s[0]=2 >>> s [2, 'x', 'e', 'D', 'G', 'R', 'Q', 'f'] >>> s[5]=10 >>> s [2, 'x', 'e', 'D', 'G', 10, 'Q', 'f'] >>> s[3]=4 >>> s [2, 'x', 'e', 4, 'G', 10, 'Q', 'f']

    通过切片赋值:截取一部分元素,然后让一个新的列表代替被截部分

    >>> s [2, 'x', 'e', 4, 'G', 10, 'Q', 'f'] >>> s[:3] = [5,9,10] >>> s [5, 9, 10, 4, 'G', 10, 'Q', 'f']
    最新回复(0)