当前位置: 首页 > news >正文

Python语言程序设计 习题5

一、选择题

1.访问字符串中的部分字符的操作称为(    A  )。p89

A.分片           B.合并           C.索引            D.赋值


对分片的总结:

大致就是用这样一个格式,s是字符串

s[i:j:k]

该式表示从下标i开始,步长为k,到下标为j结束,但不包括下标为j的字符

例1:

s1="Hello World"
s2='Hello World'

print(s1[0:5:2])
print(s2[0:5:2])

由该例可知,字符串可以用单引号也可以用双引号

 

例2:

s="Hello"
print(s[0:4:2])
print(s[0:5:2])

 Hello中o的下标是4,在第二行的输出中并没有输出,因为第二行中下标是从0开始,到3结束,步长是2

 

例3:输出整个字符串

s="Hello"

print(s[:])
print(s[::])
print(s[::-1])

length=len(s)

print(s[0:length:1])

我们可以省略i,j,k。

当i,j,k都省略时,就是输出整个字符串。 

省略i,j,但是给k赋值-1时,就是倒序输出字符串。

当然,我们也可以给i,j,k赋值,但是我们需要知道字符串的长度。

例4: 这两个的结果是不同的

s="Hello"
print(s[:-1])
print(s[::-1])

第二行的-1是j,i是默认值0。也就是输出字符串除了最后一个字符的所有字符

第三行的-1是k,i默认是-1。倒序输出字符串


2.下列关于字符串的描述错误的是(  B    )。

A.字符串s的首字符是s[0]

B.在字符串中,同一个字母的大小是等价的。

C.字符串中的字符都是以某种二进制编码的方式进行存储和处理的

D.字符串也能进行关系比较操作

s1="Hello"
s2='hello'
print(s1>s2)

 

3.执行下列语句后的显示结果是(   A   )。

world="world"

print("hello"+world)

A.helloworld                     B."hello"world

C.hello world                    D."hello"+world

 

4.下列表达式中,有3个表达式的值相同,另一个不相同,与其他3个表达式不同的是(  C    )。

A."ABC"+"DEF"              B.''.join(("ABC","DEF"))    p96

C."ABC"-"DEF"               D.'ABCDEF'*1

print("ABC"+"DEF")
print('ABCDEF'*1)
print(''.join(("ABC","DEF")))

 选项C:

 没有重载减号

5.设s="Python Programming",那么print(s[-5:])的结果是(    A  )。

A.mming            B.Python         C.mmin             D.Pytho

从下标为-5的字符开始,到字符串最后一个字符

6.设s="Happy New Year",则s[3:8]的值为(   B   )。

A.'ppy Ne'            B.'py Ne'       C.'ppy N'     D.'py New'

不包括下标为8的字符

7.将字符串中全部字母转换为大写字母的字符串方法是(   D   )。p94

A.swapcase        字母大小写互换

B.capitalize         首字母大写,其余小写

C.uppercase         

D.upper             全部大写   (lower    全部小写)

(title   首字母大写,其余不变)

A:

s1="abcdef"
s2='aFCec'
print(s1.swapcase())
print(s2.swapcase())

B:

 

s1="abcdef"
s2='aFCec'
print(s1.capitalize())
print(s2.capitalize())

C:

import string
print(string.ascii_uppercase)
print(string.ascii_lowercase)

 

D:

s1="abcdef"
s2='aFCec'
print(s1.upper())
print(s2.upper())

8.下列表达式中,能用于判断字符串s1是否属于字符串s(即s1是否s的子串)的是(  D )。p95

①s1 in s;p56②s.find(s1)>0;③s.index(s1)>0;④s.rfind(s1);⑤s.rindex(s1)>0

A.①         B.①②        C.①②③         D.①②③④⑤

s="hello world"
s1='hello'
print(s1 in s)
print(s.find(s1))
print(s.index(s1))
print(s.rfind(s1))
print(s.rindex(s1))

A:

s.find(substr,[start,[end]])

返回s中出现substr的第一个字符的编号,上例中s1的第一个字符在s的下标为0初出现第一次,所以输出0.如果s中没有substr,那么返回-1。start与end就是在s[start,end]中查找。同样的,和range函数一样,不包括end下标的字符。

s="hello world"
s1='world'
s2="abc"
s3="hello"
print(s.find(s1))
print(s.find(s2))
print(s.find(s3,0,4))
print(s.find(s3,0,5))

B:

 s.index(substr,[start,[end]])

与find函数相同,不过没找到时,会返回一个运行时错误

s="hello world"
s3="hello"
print(s.index(s3,0,4))

 

s.rfind(substr,[start,[end]])

 s.rindex(substr,[start,[end]])

这两个和上面两个差不多,不同之处在于这两个返回的是最后一个substr出现的首字母编号

s="hello world hello"
s1="hello"
print(s.rfind(s1))
print(s.rindex(s1))

 

9.re.findall('to','Tom likes to play football too.',re.I)的值是(  A   )。  p103

A.['To', 'to', 'to']            B.['to', 'to', 'to']

C.['To', 'to']                  D.['to', 'to']

它返回string中所有与pattern匹配的全部字符串,返回形式为列表,如果pattern中含有分组,返回分组的匹配结果。如果有pattern中有多个分组,则返回元组列表。

re.I     忽略大小写    p101

正则表达式模块re

import re
print(re.findall('to','Tom likes to play football too.',re.I))

10.下列程序执行后,得到的输出结果是(   C   )。p102

import re

p=re.compile(r'\bb\w*\b')

str="Boys may be able to get a better idea."

print(p.sub('**',str,1))

A.** may be able to get a better idea.

B.Boys may be able to get a ** idea.

C.Boys may ** able to get a better idea.

D.Boys may ** able to get a ** idea.

 

二、填空题

1."4"+"5"的值是    '45'    。

2.字符串s中最后一个字符的位置是   len(s)-1 或-1    。

3.设s='abcdefg',则s[3]的值是  'd'  ,s[3:5]的值是   'de'  ,s[:5]的值是   'abcde'   ,s[3:]的值是    'defg'    ,s[::2]的值是   'aceg'     ,s[::-1]的值是   'gfedcba'     ,s[-2:-5]的值是    '' (空字符串) 。

4.'Python Program'.count('P')的值是     2   。p95

count函数:计算substr在s中出现的次数

s.count(substr,[start,[end]])

5.'AsDf888'.isalpha()的值是    False    。

s.isalpha()判断是否全是字母

6.下面语句的执行结果是     ['A', 'A', 'A']   。

s='A'

print(3*s.split())

 

7.已知s1='red hat',print(s1.upper())的结果是   RED HAT    ,s1.swapcase()的结果是   'RED HAT'    ,s1.title()的结果是  'Red Hat' ,s1.replace('hat','cat')的结果是 'red cat'    。

8.设s='a,b,c',s2=('x','y','z'),s3=':',则s.split(',')的值为  ['a', 'b', 'c']  ,s.rsplit(',',1)的值为   ['a', 'b', 'c']    ,s.partition(',')的值为   ['a,b', 'c']    ,s.rpartition(',')的值为  ('a', ',', 'b,c')     ,s3.join('abc')的值为     ('a,b', ',', 'c')  ,s3.join(s2)的值为  'a:b:c','x:y:z'     。

9.re.sub('hard','easy','Python is hard to learn.')的值是   'Python is easy to learn.'   。

10.下列程序执行后,得到的输出结果是    ['An', 'elite', 'university']  。

import re

str="An elite university devoted to computer software"

print(re.findall(r'\b[aeiouAEIOU]\w+?\b',str))

 

三、问答题

1.什么叫字符串?有哪些常用的字符编码方案?

字符集(Charset):是一个系统支持的所有抽象字符的集合。

字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技术。通常人们用符号集合(一般情况下就是文字)来表达信息。而以计算机为基础的信息处理系统则是利用元件(硬件)不同状态的组合来存储和处理信息的。元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

2.数字字符和数字值(如'5'和5)有何不同?如何转换?

'5'是字符变量,5是数字字符。

m=5
print("m is "+str(type(m)))
n='5'
print("n is "+str(type(n)))

p=str(m)
print("p is "+str(type(p)))

q=int(n)
print("q is "+str(type(q)))

 

3.为什么print('I like Python'* 5)可以正常执行,而print('I like Python'+5)却运行时出错?

在 Python 中不能把两个完全不同的东西加在一起,比如说数字和文本,正是这个原因, >>>print('I like Python ' + 5) 才会报错。 不过乘以一个整数 来翻倍就具有一定的意义了,前边的例子就是将 "I like python.com" 这个字符串打印五次。

print('I like Python'* 5)

 

4.写出表达式。

(1)利用各种方法判断字符变量c是否为字母(不区分大小写字母)。

c.isalpha()或c.lower()<='z' and c.lower()>='a'或c.upper()<='Z' and c.upper()>='A'或c<='Z' and c >='A'or c<='z'and c >='a'

(2)利用各种方法判断字符变量c是否为大写字母。

c.isupper()或者c<='Z' and c>='A'

(3)利用各种方法判断字符变量c是否为小写字母。

c.islower()或者c<='z' and c>='a'

(4)利用各种方法判断字符变量c是否为数字字符。

 c.isdigit()或c<='9' and c>='O'

5.re.match("back","text.back")与re.search("back","text.back")的执行结果有何不同?

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
 

相关文章:

  • 分享制作Docker镜像的两种方式
  • MySQL表的约束
  • Axios源码仿写与二次封装
  • PHP学习笔记(才贯二酉)
  • 基于Springboot+vue的电影院管理系统(Java毕业设计)
  • 沉睡者IT - 闪剪AI数字人助你快速占领流量市
  • 4个Python推导式相关的开发技巧
  • 计算机网络——媒体接入控制
  • 一起来学反射
  • 一文了解Java序列化与反序列化
  • 【.Net实用方法总结】 整理并总结System.Data中DataColumn类及其方法介绍
  • ffmpeg、ffplay、ffprobe 常用命令详解(音视频必备)
  • [SpringMVC] SpringMVC入门
  • [ 数据结构 - C++]红黑树RBTree
  • 【闲笔杂谈】ArrayList的构造与扩容机制
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • canvas 高仿 Apple Watch 表盘
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • js算法-归并排序(merge_sort)
  • laravel5.5 视图共享数据
  • node入门
  • React-Native - 收藏集 - 掘金
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 记一次用 NodeJs 实现模拟登录的思路
  • 原生 js 实现移动端 Touch 滑动反弹
  • 云大使推广中的常见热门问题
  • python最赚钱的4个方向,你最心动的是哪个?
  • 从如何停掉 Promise 链说起
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)VC++中ondraw在什么时候调用的
  • **python多态
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .Net CF下精确的计时器
  • .NET的数据绑定
  • .net网站发布-允许更新此预编译站点
  • .skip() 和 .only() 的使用
  • /etc/fstab 只读无法修改的解决办法
  • [ C++ ] STL_list 使用及其模拟实现
  • []sim300 GPRS数据收发程序
  • [acm算法学习] 后缀数组SA
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Bada开发]初步入口函数介绍
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [Gym-102091E] How Many Groups
  • [JS真好玩] 掘金创作者必备: 监控每天是谁取关了你?
  • [LeetCode] Minimum Path Sum
  • [Linux] 一文理解HTTPS协议:什么是HTTPS协议、HTTPS协议如何加密数据、什么是CA证书(数字证书)...
  • [linux]centos7下解决yum install mysql-server没有可用包
  • [MAT]使用MAT比較多个heap dump文件
  • [NISACTF 2022]join-us