一、单选题
1、
有列表L=[‘UK’,‘china’,‘lili’,“张三”],print(L[-2])的结果是?( ) |
A、UK
B、'lili','张三'
C、lili
D、'UK','china','lili'
解析:【喵呜刷题小喵解析】在Python中,列表的索引是从0开始的。`L[-2]`表示列表L中倒数第二个元素。给定的列表L为`['UK', 'china', 'lili', "张三"]`,倒数第二个元素是`'lili'`。因此,`print(L[-2])`的结果是`'lili'`,选项C正确。
2、倒计时在日常生活中有广泛的应用。Python使用range可以实现倒序数。下面可以正确倒序输出15以内正整数的语句是?( )
A、print(list(range(15, -1, 1)))
B、print(list(range(-1, 15, 1)))
C、print(list(range(15, 1, -1)))
D、print(list(range(15, 0, -1)))
解析:【喵呜刷题小喵解析】在Python中,`range()`函数用于生成一个整数序列,其语法为`range(start, stop, step)`。其中,`start`是序列的起始值,`stop`是序列的结束值(但不包含该值),`step`是步长。对于选项A,`range(15, -1, 1)`,由于`stop`参数为-1,这是不合法的,因为`stop`参数必须大于`start`参数。对于选项B,`range(-1, 15, 1)`,这个序列会从-1开始,到15(不包含)结束,步长为1,所以生成的序列为[-1, 0, 1, 2, ..., 14],并不是倒序。对于选项C,`range(15, 1, -1)`,`start`为15,`stop`为1,`step`为-1,这个序列会从15开始,到1(不包含)结束,步长为-1,生成的序列为[15, 14, 13, ..., 2],并不是倒序到1。对于选项D,`range(15, 0, -1)`,`start`为15,`stop`为0,`step`为-1,这个序列会从15开始,到0(不包含)结束,步长为-1,生成的序列为[15, 14, 13, ..., 1],这就是倒序输出15以内正整数的语句。因此,正确答案是D。
3、已知一个字符串s=“iloveyou”。通过操作该字符串构造一个新的列表li=[‘i’, ‘oveyou’]。以下哪个选项不能构造新列表li?( )
A、li = s.split("l",0)
B、li = s.split("l",1)
C、li = s.split("l",2)
D、li = s.split("l",3)
解析:【喵呜刷题小喵解析】在Python中,字符串的`split()`方法用于将字符串按照指定的分隔符拆分成子字符串,并返回一个新的列表。该方法接受两个参数:分隔符和分割次数。分隔符用于指定拆分字符串的字符,分割次数用于指定拆分的次数。对于给定的字符串`s="iloveyou"`,如果我们要按照字符`l`来拆分字符串,并获取前两次拆分的结果,应该使用`s.split("l", 1)`。这是因为`split()`方法的第二个参数指定了拆分的次数,`1`表示只拆分一次。按照字符`l`拆分一次后,字符串会被拆分为`['i', 'oveyou']`。选项A中的`s.split("l",0)`是不正确的,因为`split()`方法的第二个参数必须是非负整数,而`0`不是有效的参数。因此,选项A不能构造新列表`li=['i', 'oveyou']`。选项B中的`s.split("l",1)`是正确的,可以构造新列表`li=['i', 'oveyou']`。选项C和D中的`s.split("l",2)`和`s.split("l",3)`虽然参数是正确的,但在这里没有实际意义,因为字符串`s`中只出现了一个字符`l`,所以拆分次数超过1次时,结果仍然是一样的。因此,正确答案是A。
4、有如下程序,请问此程序的执行结果是?( )
tup1 = (12,‘bc’,34,‘cd’)
tup1[1] = 23
print(tup1[3])
A、cd
B、12
C、34
D、程序出现错误
解析:【喵呜刷题小喵解析】:在Python中,元组是不可变的,即元组中的元素不能被修改。所以,`tup1[1] = 23` 这行代码会导致程序出现错误。因此,程序执行结果会是"程序出现错误"。
5、有如下python程序段,下列说法错误的是?( )
s={1,2,3,4,5}
print(s)
s.clear()
print(s)
A、“{1,2}+{5,6}”是错误的语句
B、s数据类型是集合
C、此程序段的作用是输出原始集合s和移除数据之后的集合s
D、s数据类型是字典
解析:【喵呜刷题小喵解析】:本题考查Python集合的基本操作。首先,我们分析给定的Python程序段:```pythons={1,2,3,4,5}print(s)s.clear()print(s)```程序首先定义了一个集合`s`,包含元素1,2,3,4,5。然后,它打印了这个集合。接着,使用`clear()`方法清除了集合`s`中的所有元素。最后,再次打印了集合`s`。接下来,我们分析每个选项:A. "{1,2}+{5,6}"是错误的语句。这是正确的,因为Python中集合不能直接进行加法操作。B. `s`数据类型是集合。这是正确的,因为`s`在定义时就是一个集合。C. 此程序段的作用是输出原始集合`s`和移除数据之后的集合`s`。这是错误的,因为程序段只是打印了原始集合`s`和空集合,没有输出“移除数据之后的集合`s`”。D. `s`数据类型是字典。这是错误的,因为`s`是一个集合,不是字典。因此,选项C是错误的,是正确答案。
6、现有校园图书馆最近一周(周一至周日)借书信息采集数据列表: borrow = [502, 387, 612, 545, 702, 855, 962] ,当前需要打印输出周一至周五的数据信息,正确的操作是?( )
A、print(borrow[1:n-2])
B、print(borrow[0:n-1])
C、print(borrow[:-2])
D、print(borrow[::-2])
解析:【喵呜刷题小喵解析】在Python中,列表的切片操作可以用来获取列表的一部分。对于给定的列表 `borrow = [502, 387, 612, 545, 702, 855, 962]`,要获取周一至周五(索引为0到4)的数据,应该使用 `print(borrow[0:5])` 或者 `print(borrow[:5])`。选项C中的 `print(borrow[:-2])` 实际上会获取除了最后两个元素之外的所有元素,也就是索引为0到5的元素,即周一至周五的数据。因此,选项C是正确的。选项A、B和D都不符合题目要求,分别会获取错误的数据范围。
7、科技小组实践作品用到的传感器列表 sensor = [‘shengyin’, ‘chaoshengbo’, ‘guangmin’, ‘huidu’] , 当前需要增加列表元素’hongwai’,正确的操作是?( )
A、sensor.insert('hongwai')
B、sensor.append('hongwai')
C、inset sensor['hongwai']
D、append sensor['hongwai']
解析:【喵呜刷题小喵解析】:题目要求给已有的列表`sensor`增加一个新元素`'hongwai'`。在Python中,给列表增加元素通常使用`append()`方法。所以,正确的操作应该是`sensor.append('hongwai')`。因此,正确选项是B。选项A中的`insert()`方法用于在指定位置插入元素,这里并不需要使用。选项C和D的语法错误,它们试图调用不存在的`inset`和`append`函数,而不是`append()`方法。
8、Python中字符串可以使用反斜线进行转义,实现某些难以用字符表示的效果。 下面可以实现水平制表(跳到下一个TAB位置)的转义字符是?( )
A、\b
B、\n
C、\t
D、\r
解析:【喵呜刷题小喵解析】:在Python中,字符串可以使用反斜线进行转义,实现某些难以用字符表示的效果。其中,`\t`表示水平制表,即跳到下一个TAB位置。因此,正确答案是C选项。其他选项如`\b`表示退格,`\n`表示换行,`\r`表示回车,都不符合题目要求。
9、现有字符串S = “No mountain is more high than one.” ,现在需要计算并输出字符串中’o’在S出现的次数,正确的语句是?( )
A、print(S.find('o',1))
B、print(S.index('o'))
C、print(S.index('o',0,len(S)))
D、print(S.count('o'))
解析:【喵呜刷题小喵解析】题目要求计算字符串中'o'出现的次数,所以应该使用字符串的count方法。A选项的find方法只能找到第一个'o'的位置,B选项的index方法也是找到第一个'o'的位置,并且如果字符串中没有'o',会引发异常。C选项的index方法虽然可以指定搜索的起始和结束位置,但同样只能找到第一个'o'的位置。而D选项的count方法可以计算字符串中'o'出现的次数,符合题目要求。因此,正确答案是D。
10、下列程序的功能是?( )
shu=10000
result=[a for a in range(1,shu+1) if shu%a==0]
print(result)
A、计算并输出10000以内的质数
B、计算并输出10000的约数
C、计算并输出10000的倍数
D、计算并输出1-10000以内的整10数
解析:【喵呜刷题小喵解析】根据给出的代码,首先定义了一个变量shu,值为10000。接着使用列表推导式生成一个列表result,这个列表包含了所有在1到shu(即10000)之间的数a,且shu能被a整除。最后,使用print函数输出这个列表。所以,这个程序的功能是计算并输出10000的约数。因此,正确答案是B。
11、运行下列程序: list(range(2,9,2)) 输出的结果是?( )
A、2, 4, 6, 8
B、[2, 4, 6, 8]
C、[1, 3, 5, 7, 9]
D、1, 3, 5, 7, 9
解析:【喵呜刷题小喵解析】在Python中,`range(2, 9, 2)`生成的是一个从2开始,到9(不包括9)结束,步长为2的整数序列。这个序列包括2,4,6,8。然后,`list()`函数将这个序列转化为列表。所以,`list(range(2, 9, 2))`的输出结果是`[2, 4, 6, 8]`。因此,正确答案是B。
12、
下列books是一个字典,有一个for循环如下: for info1,info2 in books.items( ): print(info2) 上述info2可以得到什么?( ) |
A、键
B、值
C、键-值
D、字典
解析:【喵呜刷题小喵解析】题目中给出的代码是一个for循环,用于遍历字典`books`中的键值对。在字典中,每一个键值对是一个元组,第一个元素是键,第二个元素是值。在这个for循环中,`info1`是键,`info2`是值。因此,`info2`可以得到的是字典`books`中每一个键值对的值。所以,正确答案是B,即值。
13、集合A是曾经到云南旅游的人,集合B是曾经到海南旅游的人,如果现在想要得到曾经到海南但是不曾到过云南旅游的人,可以使用那一种集合功能?( )
A、A & B
B、A | B
C、A - B
D、B - A
解析:【喵呜刷题小喵解析】这道题目考查集合运算的基础知识。在集合A和集合B中,集合A代表曾经到云南旅游的人,集合B代表曾经到海南旅游的人。题目要求找出曾经到海南但是不曾到过云南旅游的人,这实际上是在求集合B中去掉那些同时也在集合A中的人,即集合B减去集合A。因此,正确答案是D选项,即B - A。
14、求1-100之内能被7整除,但是不能被3整除的所有数,正确的列表推导式是?( )
A、print([for x in range(0, 100) if x % 7 == 0 and x % 3 != 0])
B、print([for x in range(1, 101) if x % 7 == 0 and x % 3 != 0])
C、print([x for x in range(0, 100) if x % 3 == 0 and x % 7 != 0])
D、print([x for x in range(1, 101) if x % 7 == 0 and x % 3 != 0])
解析:【喵呜刷题小喵解析】题目要求找出1-100之内能被7整除,但是不能被3整除的所有数。根据列表推导式的语法,正确的列表推导式应该是:`[x for x in range(1, 101) if x % 7 == 0 and x % 3 != 0]`。其中,`range(1, 101)`表示从1到100的整数序列,`x % 7 == 0`表示x能被7整除,`x % 3 != 0`表示x不能被3整除。因此,选项D是正确的。其他选项都存在语法错误或者逻辑错误,不符合题目要求。
15、
利用time模块,下列可以输出当前日期的正确的语句是?( ) |
A、print(time.ctime('%y%m%d'))
B、print(time.strftime('%y%m%d'))
C、print(time.nowdate('%y%m%d'))
D、print(time.local('%y%m%d'))
解析:【喵呜刷题小喵解析】在Python中,time模块提供了多种时间相关的函数。其中,`time.strftime()`函数用于将时间元组格式化为字符串,`time.ctime()`函数用于将时间戳转换为人类可读的字符串。对于选项A,`time.ctime('%y%m%d')`是错误的,因为`ctime()`函数不接受格式化字符串作为参数。对于选项C,`time.nowdate('%y%m%d')`是错误的,因为`time`模块中并没有`nowdate()`这个函数。对于选项D,`time.local('%y%m%d')`也是错误的,因为`time`模块中并没有`local()`这个函数。因此,正确答案是选项B,`print(time.strftime('%y%m%d'))`。这个语句将使用`time.strftime()`函数将当前时间元组格式化为指定格式的字符串,即当前日期。
16、
Python中可以实现随机生成1-100之间浮点数的语句是?( ) |
A、print(random.uniform(1,100))
B、print(random.randint(1,100))
C、print(random.sample(1,100))
D、print(random.shuffle(1,100))
解析:【喵呜刷题小喵解析】:在Python中,要生成1-100之间的浮点数,应该使用`random.uniform()`函数。`random.uniform(a, b)`函数会生成一个介于a和b之间的浮点数(包括a和b)。因此,选项A `print(random.uniform(1,100))`是正确的。选项B `print(random.randint(1,100))`会生成一个介于1和100之间的整数,但不包括100,所以不正确。选项C `print(random.sample(1,100))`试图从一个只包含一个元素的列表(数字1)中随机选取一个元素,但`random.sample()`函数需要至少两个参数,所以也不正确。选项D `print(random.shuffle(1,100))`的调用方式也是错误的,`random.shuffle()`函数用于打乱列表中的元素顺序,而不是生成随机数,而且它需要一个列表作为参数,而不是单个数字。
17、已知有列表lst = [2,3,4,5,6],下面操作可以求出最小值的是?( )
A、sum(lst)
B、 min(lst)
C、max(lst)
D、MIN(lst)
解析:【喵呜刷题小喵解析】:题目要求找出列表中的最小值。在Python中,min函数是用来求取列表中最小值的。而sum函数是用来求取列表中所有元素的和,max函数是用来求取列表中的最大值,MIN并不是Python的内置函数。因此,选项B中的min(lst)是正确答案。
18、
已知有元组tup1=(‘a’,‘b’),tup2=(1,2,3),tup3=(‘china’,‘UK’),执行print(tup1+tup2+tup3)后输出是?( ) |
A、['a', 'b', 1, 2, 3, 'china', 'UK']
B、(('a','b'),(1,2,3),('china','UK'))
C、('a', 'b', 1, 2, 3, 'china', 'UK')
D、'a', 'b', 1, 2, 3, 'china', 'UK'
解析:【喵呜刷题小喵解析】元组在Python中是一种不可变序列类型,支持使用+运算符进行连接。当元组相加时,会将元组中的元素依次拼接在一起。在本题中,元组tup1的元素是'a'和'b',元组tup2的元素是1、2和3,元组tup3的元素是'china'和'UK'。因此,执行print(tup1+tup2+tup3)后,输出的结果是将这三个元组中的元素依次拼接在一起,即('a', 'b', 1, 2, 3, 'china', 'UK')。所以正确答案是C。
19、str1=“你是大英雄”,执行下列哪个选项可以输出"雄英大是你"?( )
A、print((str1(0,0))
B、print(str1[::-1])
C、print(str1[0])
D、print(str1[0:5])
解析:【喵呜刷题小喵解析】题目要求输出"雄英大是你",这实际上是字符串"你是大英雄"的逆序。在Python中,字符串的逆序可以通过切片操作实现,即`str[::-1]`。选项B中的`print(str1[::-1])`会输出"雄英大是你",符合题目要求。其他选项A、C、D均不能输出题目要求的字符串。
20、
Python中,range函数表示产生一个序列,range(6)则表示产生的一个序列是?( ) |
A、0-6
B、0-5
C、1-6
D、1-5
解析:【喵呜刷题小喵解析】在Python中,range函数用于生成一个序列。range(6)表示生成一个从0开始,到5结束(不包括6)的整数序列,即0,1,2,3,4,5。因此,正确答案是B选项,即0-5。
21、下列代码运行后的结果是?( )
dp={}
dp[“2^10”]=1024
print(dp)
A、['2^10': 1024]
B、{"2^10"}
C、1024
D、{'2^10': 1024}
解析:【喵呜刷题小喵解析】根据代码,我们首先创建了一个空字典`dp`,然后给字典`dp`赋值为`{'2^10': 1024}`,即字典中只有一个键值对,键是字符串`"2^10"`,值是`1024`。因此,代码运行后的结果是`{'2^10': 1024}`。所以正确选项是D。
22、
运行下面代码后得到相应的输出结果,请问是用了哪一种推导公式?( ) a = [i for i in range(10) if i % 3 ==0] print(a) #output: [0, 3, 6, 9] |
A、集合推导公式
B、字符串推导公式
C、列表推导公式
D、元组推导公式
解析:【喵呜刷题小喵解析】:题目中给出的代码是一个列表推导式,用于生成一个列表。列表推导式是Python中一种非常实用的特性,它允许你使用简洁的语法来生成列表。在这个例子中,列表推导式 `[i for i in range(10) if i % 3 == 0]` 的意思是“对于 range(10) 中的每一个 i,如果 i 除以 3 的余数为 0,就将 i 添加到列表中”。因此,输出的列表是 [0, 3, 6, 9],这是符合题目要求的。所以,正确答案是 C,即列表推导公式。
23、请问以下Python代码输出的结果是?( )
a = {i**2 for i in (6,7,8) if i>3}
print(a)
A、(36,49,64)
B、{64, 49, 36}
C、{64,49}
D、{2,36,64}
解析:【喵呜刷题小喵解析】给定的代码:`a = {i**2 for i in (6,7,8) if i>3}` 是一个字典推导式,它会生成一个集合,包含满足条件 `i > 3` 的元素 `i` 的平方。因此,`a` 的值应该是 `{64, 49}`,因为 `6*6=36` 不满足条件 `i > 3`,所以不会被包含在内。所以,输出的结果应该是 `{64, 49}`,对应选项B。
24、下面代码运行后的结果是?( )
import jieba
str =“大家好,我叫龙云!请多多关照!”
jieba.suggest_freq((“龙云”),True)
print(jieba.lcut(str))
A、'大'',''家', '好', ',', '我', '叫', '龙'',''云', '!', '请', '多多','关照', '!'
B、 ['大家', '好', ',', '我', '叫', '龙'',''云', '!', '请', '多多关照', '!']
C、['大家', '好', ',', '我', '叫', '龙云', '!', '请', '多多关照', '!']
D、('大家', '好', ',', '我', '叫', '龙云', '!', '请', '多多关照', '!')
解析:【喵呜刷题小喵解析】:首先,代码导入了`jieba`库,这是一个中文分词库。然后,定义了一个字符串`str`,内容为“大家好,我叫龙云!请多多关照!”。接着,使用`jieba.suggest_freq(("龙云"), True)`,这行代码的作用是为“龙云”这个词语增加权重,使其在未来的分词中更可能被分开。但在这个例子中,由于`jieba.lcut(str)`是在`suggest_freq`之前执行的,所以这个增加权重的操作并不会影响`lcut`的结果。最后,使用`print(jieba.lcut(str))`进行分词。`jieba.lcut`方法会返回一个分词后的列表,列表中的元素就是分词后的词语。因此,代码运行后的结果应该是['大家', '好', ',', '我', '叫', '龙云', '!', '请', '多多关照', '!'],选项C与此结果一致。
25、下列代码运行后的结果是?( )
import math
a=math.floor(10.2)
print(a)
A、10.20
B、10.0
C、11
D、10
解析:【喵呜刷题小喵解析】在Python中,`math.floor()`函数用于返回不大于参数值的最大整数。在这个例子中,`math.floor(10.2)`返回的是不大于10.2的最大整数,即10。因此,`print(a)`将输出10。所以,正确答案是D选项,即10。
二、判断题
26、在Python语言中,字符串是属于有序序列。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python语言中,字符串被当作是一个字符序列来处理,可以对其进行索引操作以获取特定的字符。因此,字符串是有序的,每个字符都按照它们在字符串中出现的顺序进行排列。所以,题目的陈述是正确的。
27、无法通过引用索引来访问集合中的元素,但是可以用for循环来遍历集合中的元素。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在编程中,集合(如列表、集合等)的元素通常通过索引来访问。虽然无法直接通过引用索引访问集合中的特定元素,但可以使用for循环来遍历集合中的每个元素。因此,这个陈述是错误的。
28、multiples = [i for i in range(30) if i % 3 == 0] ,此推导式中,multiples中共有10个元素。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在推导式`multiples = [i for i in range(30) if i % 3 == 0]`中,`range(30)`生成从0到29的整数序列。`if i % 3 == 0`是一个条件判断,只有当`i`能被3整除时,`i`才会被加入到`multiples`列表中。因此,`multiples`列表中的元素是0, 3, 6, 9, 12, 15, 18, 21, 24, 27,共10个元素。所以,题目的说法是正确的。
29、新学期,书法社团增加了新学员,目前一共n人,小刚作为社团的信息员,用Python建立了一个列表,列表索引从1开始,到n结束。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,列表的索引是从0开始的,而不是从1开始。所以,小刚建立的列表的索引实际上是从0开始,到n-1结束。因此,题目中的描述是错误的。
30、Python中元组的元素不可以原位改变。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,元组是一种不可变序列类型,一旦创建,其元素就不能被修改或删除。这意味着元组中的元素不能原位改变。因此,选项A“正确”是正确的。
31、Python中可以通过 .replace() 删除字符串开头和结尾的空格。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,字符串的`.replace()`方法主要用于替换字符串中的某部分。要删除字符串开头和结尾的空格,应使用字符串的`strip()`方法,而不是`.replace()`。因此,题目的说法是错误的。
32、enumerate()函数是Python的内置函数,它能用来遍历一个可迭代对象,它在遍历的同时还可以得到当前元素的索引位置。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,`enumerate()`函数确实是一个内置函数,它可以用来遍历一个可迭代对象,并且可以同时返回当前元素的索引位置以及元素本身。因此,题目的说法是正确的。
33、Python中字典(dict)的“值”可以是列表(list)、字典(dict)、集合(set)类型。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,字典(dict)的“值”可以是任何数据类型,包括列表(list)、字典(dict)、集合(set)等。因此,题目中的说法是正确的。
34、乐器社团活动,小明用Python写了一个汇总程序,在他的程序中乐器集合的元素是可以相同的。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:根据题目描述,小明用Python写了一个汇总程序,但是在他的程序中乐器集合的元素是可以相同的。根据集合的定义,集合中的元素是不允许重复的。因此,小明的程序不符合集合的基本性质,所以选项B正确,即“错误”。
35、PyInstaller命令执行完,源文件所在的目录将生成dist和build两个文件夹。 ( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:PyInstaller是一个用于将Python程序打包成独立可执行文件的工具。在执行PyInstaller命令后,它会在源文件所在的目录生成两个文件夹:`dist`和`build`。`dist`文件夹包含了生成的可执行文件,而`build`文件夹包含了构建过程中生成的一些临时文件和日志。因此,题目的说法是正确的。
三、编程题
36、已知 IPv6 的地址字符串的格式为 X:X:X:X:X:X:X:X,其中每个 X 表示长度为 4 的字符串。例如:某 IPv6 字符串为"2A08:CCD6:0088:108A:0011:0002:202F:AA05",IPv6 表示法需将每个 X 的前导零都省略,程序输出结果如下图所示:
现设计程序自动删除 IPv6 地址的前导零,请在划线处填入合适的代码。
s=“2A08:CCD6:0088:108A:0011:0002:202F:AA05”
++①++
flag=False
for i in range(len(s)):
if s[i]==“:”:
++②++
flag=False
elif ++③++ :
ans+=s[i]
flag=True
print(“原 IPv6 地址为:”,s)
print(“去前导零后:”,ans)
参考答案:
参考程序:
s=“2A08:CCD6:0088:108A:0011:0002:202F:AA05”
ans=""
flag=False
for i in range(len(s)):
if s[i]==“:”:
ans+=s[i]
flag=False
elif s[i]!=“0” or flag==True:
ans+=s[i]
flag=True
print(“原 IPv6 地址为:”,s)
print(“去前导零后:”,ans)
解析:【喵呜刷题小喵解析】:本题要求设计一个程序,自动删除IPv6地址的前导零。IPv6地址由8组4个字符的字符串组成,每组之间用冒号分隔。首先,我们需要初始化一个空字符串`ans`来保存处理后的IPv6地址。然后,我们遍历输入的IPv6地址字符串`s`,当遇到冒号时,直接将其添加到`ans`中,并将标志位`flag`设置为`False`。当遇到非零字符或`flag`为`True`时,将该字符添加到`ans`中,并将`flag`设置为`True`。最后,我们打印出原IPv6地址和处理后的IPv6地址。在参考程序中,我们使用了`flag`变量来跟踪是否应该忽略前导零。当遇到冒号时,我们重置`flag`为`False`,因为冒号后面的数字可能不是前导零。当遇到非零字符时,我们设置`flag`为`True`,表示我们已经遇到了一个非零数字,应该继续添加数字到`ans`中。这样,程序就能够正确地删除IPv6地址的前导零了。
37、编写程序,实现分段函数的计算,分段函数的取值如下表所示。要求:可连续输入5次(也就是输入5个x值,求出对应的y值),根据对应的表达式求出y值之后,将结果转化成整数添加到列表a中。请判断存在于列表a中的5个元素是否为素数,如果为非素数则转化成元组之后存在b1中,如果是素数则转换成元组之后存放在b2中,分别输出b1、b2中非素数和素数的元素及元素个数。
a=[]
a1=[]#暂时存储非素数的值
a2=[]#暂时存储素数的值
b1=()
b2=()
for i in range(5):
x=int(input(“输入x=”))
if x<0:
y=0
elif 0<=x<5:
y=x
elif 5<=x<10:
y=3*x-5
elif 10<=x<20:
y=0.5*x-2
elif x>=20:
y=2*x
++①++
for i in a:
if ++②++ :
a1.append(i)
else:
flag=True
for j in range(2,i):
if i%j==0:
++③++
break
if ++④++ :
a2.append(i)
else:
a1.append(i)
b1=tuple(a1)
b2=tuple(a2)
print(“非素数的个数有”+str(len(b1))+“个,”,“非素数为:”,b1)
print(“素数的个数有”+str(len(b2))+“个,”,“素数为:”,b2)
参考答案:
参考程序:
a=[]
a1=[]#暂时存储非素数的值
a2=[]#暂时存储素数的值
b1=()
b2=()
for i in range(5):
x=int(input(“输入x=”))
if x<0:
y=0
elif 0<=x<5:
y=x
elif 5<=x<10:
y=3*x-5
elif 10<=x<20:
y=0.5*x-2
elif x>=20:
y=2*x
a.append(int(y))
for i in a:
if i==0 or i==1:
a1.append(i)
else:
flag=True
for j in range(2,i):
if i%j==0:
flag=False
break
if flag==True:
a2.append(i)
else:
a1.append(i)
b1=tuple(a1)
b2=tuple(a2)
print(“非素数的个数有”+str(len(b1))+“个,”,“非素数为:”,b1)
print(“素数的个数有”+str(len(b2))+“个,”,“素数为:”,b2)
解析:【喵呜刷题小喵解析】:首先,根据题目要求,我们需要编写一个程序来计算分段函数的值,并将结果存入列表a中。然后,我们需要判断列表a中的元素是否为素数,并将非素数和素数分别存入列表a1和a2中。最后,将列表a1和a2转化为元组b1和b2,并输出非素数和素数的个数及元素。在参考程序中,我们首先定义了四个变量:a、a1、a2、b1和b2,分别用于存储计算结果、非素数、素数、非素数元组和素数元组。然后,我们使用一个for循环来输入5个x值,并根据分段函数的定义计算对应的y值,将结果存入列表a中。接下来,我们使用一个for循环来遍历列表a中的元素。对于每个元素,我们首先判断它是否为0或1,如果是,则直接将其存入列表a1中。否则,我们使用一个内层for循环来判断该元素是否为素数。如果是素数,则将其存入列表a2中;否则,将其存入列表a1中。最后,我们将列表a1和a2转化为元组b1和b2,并输出非素数和素数的个数及元素。需要注意的是,在判断一个数是否为素数时,我们只需要判断该数是否能够被2到该数平方根之间的任何一个整数整除。如果能够整除,则该数不是素数;否则,该数是素数。因此,我们在内层for循环中只需要循环到该数的平方根即可。
38、
给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请写出str的p型编码串。例如:字符串1335554668可被描述为"1个1、2个3、3个5、1个4、2个6、1个8",因此我们说1335554668的p型编码串为112335142618;00000000000可描述为"11个0",因此它的p型编码串为110;类似的道理,编码串101可以用来描述1111111111;110003444225可描述为"2个1、3个0、1个3、3个4、2个2、1个5",因此它的p型编码串为213013342215。如果输入非数字字符,则提示输入无效。 根据上述算法思想,补全下列代码。 s=input(“请输入字符串str:”) s+=’ ’ lens=len(s) for i in range(0,++①++ ,1): if ‘0’<=s[i]<=‘9’: ++②++ else: print(‘输入无效!’) exit() sum=1 i=0 while i< p=""><> if ++③++ : sum+=1 else: print(sum,end=‘‘) print(s[i],end=’’) ++④++ i+=1 |
参考答案:
参考程序:
s=input(“请输入字符串str:”)
s+=’ ’
lens=len(s)
for i in range(0,lens-1,1):
if ‘0’<=s[i]<=‘9’:
continue
else:
print(‘输入无效!’)
exit()
sum=1
i=0
while i< p=""><>
if s[i]==s[i+1]:
sum+=1
else:
print(sum,end='')
print(s[i],end='')
sum=1
i+=1
解析:【喵呜刷题小喵解析】:根据题目描述,我们需要编写一个程序来生成一个字符串的p型编码串。首先,我们定义了一个字符串`s`,然后通过`input`函数从用户那里获取输入。接着,我们检查输入字符串中的每个字符,如果字符不是数字字符,则输出“输入无效”并退出程序。然后,我们初始化一个变量`sum`为1,用于记录当前连续重复的数字字符的个数。同时,我们定义一个变量`i`为0,用于遍历输入字符串。接下来,我们进入一个`while`循环,循环条件是`i
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!