2022年03月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

news2024/11/27 10:39:34

在这里插入图片描述

Python编程(1~6级)全部真题・点这里
C/C++编程(1~8级)全部真题・点这里

一、单选题(共25题,每题2分,共50分)

第1题

关于Python中的列表,下列描述错误的是?( )
A:列表是Python中内置可变序列,是若干元素的有序集合;
B:列表中的每一个数据称为“元素”;
C:在Python中,一个列表中的数据类型可以各不相同;
D:可以使用s[1]来获取列表s的第一个元素。

答案:D

选项 D 描述是错误的。在 Python 中,列表的索引是从 0 开始的,因此要获取列表中的第一个元素,应该使用 s[0] 而不是 s[1]。

第2题

已知列表a=[1,3,5,7],下列语句无法将a变成a=[1,3,5,7,9]的是?( )
A:a.append(9)
B:a=[1,3,5,7,9]
C:a.insert(4,9)
D:a[4]=9

答案:D

在选项 D 中,尝试通过赋值操作来修改列表 a 的第五个元素,但是由于列表 a 只有四个元素,索引为 4 的位置并不存在。所以选项 D 是错误的。

第3题

关于以下代码段的说法错误的是?( )

a = [1, 2, 5, 4, 3]
a.sort(reverse=True)
print(a)

A:a.sort(reverse=True)语句中的reverse默认值为False。
B:省略a.sort(reverse=True)语句中的reverse=True,代码运行结果不变。
C:将以上代码的a.sort(reverse=True)改为a=sorted(a,reverse=True),代码运行结果和原题的结果一样。
D:以上代码运行结果为:[5, 4, 3, 2, 1]。

答案:B

选项 B 是错误的。省略 a.sort(reverse=True) 语句中的 reverse=True,代码运行结果会发生变化。

在原题中,a.sort(reverse=True) 会对列表 a 进行降序排序,即从大到小排序。所以,代码运行结果为 [5, 4, 3, 2, 1]。

如果省略 reverse=True 参数,即使用默认值 reverse=False,则 a.sort() 会对列表 a 进行升序排序,即从小到大排序。这样,代码运行结果就会变成 [1, 2, 3, 4, 5]。

第4题

下面程序的运行结果是?( )

a=80
b=70
if a>b:
    a,b=b,a
    print(a,b)

A:70 70
B:80 70
C:70 80
D:80 80

答案:C

在这段程序中,首先定义了变量 a 的值为 80,变量 b 的值为 70。然后使用条件语句 if a > b 判断 a 是否大于 b。由于条件为真,所以接下来执行 a, b = b, a,这行代码将交换变量 a 和 b 的值。最后,打印输出经过交换后的变量 a 和 b 的值。

因为原始的 a 的值为 80,b 的值为 70,经过交换后,a 的值变为 70,b 的值变为 80。所以运行结果为 “70 80”,对应选项 C。

第5题

以下关于元组的描述正确的是?( )
A:元组和列表相似,所有能对列表进行的操作都可以对元组进行
B:创建元组时,若元组中仅包含一个元素,在这个元素后可以不添加逗号
C:元组中的元素不能被修改
D:多个元组不能进行连接

答案:C

以下描述正确的是:

C:元组中的元素不能被修改。

元组是Python中的一种数据类型,类似于列表。然而,元组是不可变的,这意味着一旦创建了元组,就不能修改其中的元素。你无法对元组的元素进行增加、删除或修改操作。

选项 A 是不正确的。尽管元组和列表在某些方面相似,如可以通过索引访问元素,但元组是不可变的,因此无法对元组进行像列表那样的修改操作。

选项 B 是错误的。在创建元组时,如果元组中仅包含一个元素,需要在该元素后面添加逗号,以便将其识别为一个元组。例如,(1,) 表示包含一个元素的元组,而 (1) 仅仅是一个整数。

选项 D 是不正确的。多个元组可以通过连接运算符 + 进行连接。例如,(1, 2) + (3, 4) 可以得到 (1, 2, 3, 4) 的结果。

所以,选项 C 是描述正确的。

第6题

以下程序的输出结果是?( )

tuple1 = (1,2,3)
tuple2 = (2)
print(tuple1*tuple2)

A:(1,2,3)
B:(1,2,3,1,2,3)
C:(2,4,6)
D:报错

答案:B

在给定的代码中,tuple1是一个元组(1, 2, 3),而tuple2是一个整数2。

在print(tuple1*tuple2)中,tuple1被重复了tuple2次。由于tuple2的值是2,因此tuple1将被重复两次。

所以,print(tuple1*tuple2)的输出结果为(1, 2, 3, 1, 2, 3),即元组元素重复的结果。

第7题

以下代码的输出结果是?( )

ls = []
for m in '想念':
   for n in '家人':
          ls.append(m+n)
print(ls)

A:[“想念”,“家人”]
B:[“想想”,“念念”,“家人”]
C:[“想家想”,“人念家”,“念人”]
D:[“想家”, “想人”, “念家”, “念人”]

答案:D

给定的代码中,定义了一个空列表ls。然后,使用两个嵌套的循环对字符串进行迭代。

外部循环for m in '想念’遍历字符串’想念’中的每个字符,内部循环for n in '家人’遍历字符串’家人’中的每个字符。在每次迭代中,将m+n的结果添加到列表ls中。

因此,循环的执行过程如下:

第一次迭代:m为’想’,内部循环迭代一次,n为’家’,将’想’+‘家’的结果’想家’添加到ls中。
第二次迭代:m为’想’,内部循环迭代两次,n分别为’人’和’家’,将’想’+‘人’和’想’+‘家’的结果’想人’和’想家’添加到ls中。
第三次迭代:m为’念’,内部循环迭代一次,n为’家’,将’念’+‘家’的结果’念家’添加到ls中。
第四次迭代:m为’念’,内部循环迭代两次,n分别为’人’和’家’,将’念’+‘人’和’念’+‘家’的结果’念人’和’念家’添加到ls中。
最终,ls中包含了四个字符串元素,分别是’想家’、‘想人’、‘念家’和’念人’。

因此,代码的输出结果是:[“想家”, “想人”, “念家”, “念人”],对应选项D。

第8题

以下程序的输出结果是?( )

lt = ['绿茶','乌龙茶','红茶','白茶','黑茶']
ls = lt
ls.clear()
print(lt)

A:[]
B:变量未定义的错误
C:[‘绿茶’,‘乌龙茶’,‘红茶’,‘白茶’,‘黑茶’]
D:‘绿茶’,‘乌龙茶’,‘红茶’,‘白茶’,‘黑茶’

答案:A

给定的代码中,定义了一个列表lt,其中包含了五个字符串元素。然后,将列表lt赋值给另一个变量ls。

接下来,使用ls.clear()方法清空了列表ls中的所有元素。由于lt和ls指向同一个列表对象,因此清空ls也会影响到lt。

最后,使用print(lt)输出列表lt的内容。由于ls.clear()已经清空了列表,所以lt也变为空列表。

因此,代码的输出结果是:[],对应选项A。

第9题

下面代码的输出结果是?( )

list1 = [1,2,3]
list2 = [4,5,6]
print(list1+list2)

A:[4,5,6]
B:[1, 2, 3, 4, 5, 6]
C:[1,2,3]
D:[5,7,9]

答案:B

给定的代码中,list1是一个包含了三个整数的列表[1, 2, 3],list2是一个包含了三个整数的列表[4, 5, 6]。

在print(list1+list2)中,使用加法运算符+将两个列表进行连接操作。这将会生成一个新的列表,其中包含了list1和list2中的所有元素。

所以,print(list1+list2)的输出结果为[1, 2, 3, 4, 5, 6],即将list1和list2中的元素进行连接形成的新列表。

因此,代码的输出结果是:[1, 2, 3, 4, 5, 6],对应选项B。

第10题

字符串str="maixnm"包含"min"和"max"两个单词,下面哪个操作不能将"min"从中找出来?( )
A:str1=str[0]+str[2]+str[4]
B:str1=str[0:-1 :2]
C:str1=str[::2]
D:str1=str[0:4:2]

答案:D

选项 D 中的操作 str[0:4:2] 是取字符串的切片,从索引 0 开始,到索引 4 之前,步长为 2。这样取得的结果是 “mi”。

因此,选项 D 不能将 “min” 从字符串中找出来。

第11题

cat=[‘fat’,‘black’,‘cloud’],则cat.index(‘black’)的值为?( )
A:1
B:2
C:3
D:0

答案:A

给定列表 cat = [‘fat’, ‘black’, ‘cloud’],我们需要找出字符串 ‘black’ 在列表中的索引。

使用列表的 index() 方法可以找到指定元素的索引。在这种情况下,cat.index(‘black’) 的值为 1,因为 ‘black’ 在列表中的索引位置是 1。

第12题

3年级2班的学生花名册被存储在一个列表name中,如何快速得到该班级学生的总人数?( )
A:print(sum(name))
B:print(len(name))
C:print(min(name))
D:print(max(name))

答案:B

给定学生花名册存储在列表 name 中,使用 len(name) 可以获取列表的长度,即学生的总人数。

第13题

小张的爸爸每个月都有绩效工资,绩效工资根据业绩被分为1200、1400和1600三个等级,小张把爸爸每个月的绩效工资都记录在了一个money的列表中,如何能快速得到小张爸爸得到1600元绩效的次数?( )
A:money.index(1600)
B:money.count(1600)
C:money.remove(1600)
D:money.insert(0,1600)

答案:B

给定小张爸爸每个月绩效工资记录在列表 money 中,使用 count(1600) 方法可以统计列表中元素出现的次数。在这种情况下,使用 money.count(1600) 可以得到小张爸爸得到 1600 元绩效的次数。

第14题

name=(‘Jerry’,),则name的数据类型是?( )
A:字符串
B:元组
C:列表
D:其他类型

答案:B

给定变量 name = (‘Jerry’,),它的数据类型是元组。

第15题

以下代码的运行结果为?( )

d1={'学科':'语文','班级':'2班','最高分':99}
d2={'学科':'数学','班级':'2班','最高分':100}
d1.update(d2)
print(d1)

A:{‘学科’:‘语文’,‘班级’:‘2班’,‘最高分’:99}
B:{‘学科’:‘语文’,‘班级’:‘2班’,‘最高分’:100}
C:{‘学科’:‘数学’,‘班级’:‘2班’,‘最高分’:100}
D:{‘学科’:‘数学’,‘班级’:‘2班’,‘最高分’:99}

答案:C

给定的代码中,首先创建了两个字典 d1 和 d2。d1 包含了键值对 ‘学科’:‘语文’、‘班级’:‘2班’、‘最高分’:99,而 d2 包含了键值对 ‘学科’:‘数学’、‘班级’:‘2班’、‘最高分’:100。

然后,使用字典的 update() 方法将 d2 合并到 d1 中。update() 方法会将 d2 中的键值对更新或添加到 d1 中。

最后,使用 print(d1) 输出合并后的 d1 字典。因为 d2 中的键 ‘学科’、‘班级’ 和 ‘最高分’ 的值分别是 ‘数学’、‘2班’ 和 100,所以合并后的结果是 {‘学科’:‘数学’,‘班级’:‘2班’,‘最高分’:100}。

第16题

小明用一个字典d={‘语文’:88,‘数学’:92,‘英语’:‘96’}来储存他的期末考试成绩。则小明的总分是?( )
A:

s=0
for i in d.values():
    s=s+int(i)
print(s)

B:

s=0
s=sum((d.values())
print(s)

C:

s=0
while i
    s=s+int(d.values())
print(s)

D:

s=0
for i in d():
        s=s+int(i.values())
    print(s)

答案:A

给定的字典 d 包含了小明的期末考试成绩。为了计算总分,我们可以使用循环遍历字典的值,并将其转换为整数,然后将每个成绩累加到变量 s 上。

所以,选项 A 中的代码可以计算小明的总分,并将结果打印出来。

第17题

如果要计算123456789则下列程序代码正确的是?( )
A:

s=0
for i in range(1,10):
    s=s*i
print(s)

B:

s=0
for i in range(1,9):
    s=s*i
print(s)

C:

s=1
for i in range(1,10):
    s=s*i
print(s)

D:

s=1
for i in range(1,9):
    s=s*i
print(s)

答案:C

给定的计算可以通过循环遍历从 1 到 9 的数字,并将每个数字乘以变量 s 的累积结果。初始值为 1,因为乘法的单位元素是 1。

所以,选项 C 中的代码是正确的,它可以计算 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 的结果,并将其打印出来。

第18题

执行下列代码后,运行结果是?( )

d={'1':1,'2':2,'3':3,'4':4}
b=d
b['2']=5
print(d['2']+b['2'])

A:4
B:5
C:7
D:10

答案:D

给定的代码创建了一个字典 d,其中包含了键值对 ‘1’:1、‘2’:2、‘3’:3、‘4’:4。然后,将字典 d 赋值给变量 b,这意味着 b 和 d 引用同一个字典对象。

接下来,通过修改 b 的键 ‘2’ 的值为 5(b[‘2’]=5),同时也会修改 d 中 ‘2’ 的值为 5。

最后,打印语句 print(d[‘2’]+b[‘2’]) 计算并输出了键 ‘2’ 对应的值 5 在 d 和 b 中的和。

因此,代码的输出结果是:10,对应选项 D。

第19题

若dic_color={‘red’:‘红色’,‘green’:‘绿色’,‘gold’:‘金色’,‘brown’:‘棕色’,‘purple’:‘紫色’},以下选项中能够输出’金色’的是?( )
A:print(dic_color[‘gold’])
B:print(dic_color[‘金色’])
C:print(dic_color[2])
D:print(dic_color.values[2])

答案:A

给定的字典 dic_color 包含了颜色和对应的中文名称。要输出’金色’,可以使用字典的键 ‘gold’,并通过索引操作获取对应的值。

所以,选项 A 中的代码 print(dic_color[‘gold’]) 可以打印出’金色’。

第20题

以下程序执行的结果是?( )

a=0
b=5
Sum=0
for i in range(3):
    if a>0:
        Sum+=a
        a+=1
    elif b>1:
        Sum+=b
    a+=1
    b+=1
print(Sum)

A:7
B:9
C:11
D:12

答案:B

第21题

想得到的输出为"My name is Kevin and I am 10 years old."以下选项正确的是?( )
A:print(‘My name is %s and I am %d years old.’,%(‘Kevin’,10))
B:print(‘My name is %s and I am %d years old.’%(‘Kevin’,10))
C:print(‘My name is %c and I am %d years old.’%(‘Kevin’,10))
D:print(‘My name is %s and I am %d years old.’%‘,Kevin’,%10))

答案:B

要格式化字符串中的变量,可以使用 % 运算符结合格式化字符串的占位符。在选项 B 中,使用 %s 表示字符串占位符,%d 表示整数占位符。通过在字符串末尾使用 % 运算符,将要填充的变量值以元组形式传递给字符串。

因此,选项 B 中的代码 print(‘My name is %s and I am %d years old.’ % (‘Kevin’, 10)) 可以打印出期望的输出:“My name is Kevin and I am 10 years old.”

其他选项中的语法都存在错误或不符合格式化字符串的要求。

第22题

编写一段猜密码程序,只允许猜三次,当猜中密码时,提示“密码正确”,程序退出。当输入密码错误时,提示“密码错误”,并提示剩余次数。程序空白处应填写的条件是?( )

pwl="999"
abc=3
while ______:
  input1 = input("请输入密码:")
  if(input1==pwl):
    print("密码正确!")
    break
  else:
    abc=abc-1
    print("密码错误!","剩余次数:",abc)

A. abc>0
B. abc>=0
C. abc==0
D. abc!=3

答案:A

根据题目要求,程序只允许猜三次密码。因此,我们需要使用一个变量 abc 来追踪猜测的次数。

在程序中,使用 while 循环来迭代用户的猜测操作。循环的条件应该是猜测次数大于 0,即 abc > 0。当猜测次数达到 0 次时,程序将退出循环。

在每次循环中,需要判断用户输入的密码是否正确。如果密码正确,程序将打印 “密码正确” 并退出循环。如果密码错误,程序将打印 “密码错误” 并提示剩余次数。

因此,选项 A 中的条件 abc > 0 是正确的选择。

第23题

已知a=list(range(10)),执行以下指令后,a的值会变成?( )

a[:2]=[5]
a.pop(5)
a.remove(5)

A:[2, 3, 4, 5, 7, 8, 9]
B:[2, 3, 4, 7, 8, 9]
C:[2, 3, 4, 6, 7, 8, 9]
D:[5, 2, 3, 4, 5, 7, 8, 9]

答案:A

执行指令后,列表 a 的值会变成 [2, 3, 4, 5, 7, 8, 9],选项 A 是正确的答案。

指令 a[:2] = [5] 将列表 a 的前两个元素替换为 [5],指令 a.pop(5) 移除索引为 5 的元素,即第六个元素,指令 a.remove(5) 移除列表 a 中的第一个值为 5 的元素。

第24题

以下选项中,不能用于表示分支结构的python函数是?( )
A:if
B:else
C:in
D:elif

答案:C

在给定的选项中,A:if、B:else 和 D:elif 都是用于表示分支结构的关键字或函数。

if 是用于条件判断的关键字,根据条件的真假执行相应的代码块。
else 是用于 if 语句中的可选部分,表示在条件不满足时执行的代码块。
elif 是 else if 的缩写,用于在多个条件判断中添加额外的条件分支。
然而,选项 C:in 不是用于表示分支结构的函数。它是用于检查一个元素是否存在于一个容器对象中的运算符,通常与条件判断语句配合使用。

因此,选项 C:in 是不能用于表示分支结构的 Python 函数。

第25题

执行以下程序的运行结果为?( )

a=range(1,10)
for i in a:
    if i%2 == 0:
        print(i)

A:1 3 5 7 9
B:1 4 7
C:2 4 6 8
D:2 5 7 9

答案:C

给定的程序使用 for 循环遍历了范围对象 a 中的每个元素。

范围对象 a 的取值为 1 到 9(不包括 10),因此循环将迭代以下元素:1, 2, 3, 4, 5, 6, 7, 8, 9。

在循环中,使用条件判断 if i % 2 == 0 来判断当前迭代的元素是否为偶数。如果是偶数,则打印该元素。

根据给定的程序,只有偶数会被打印出来。因此,循环将打印出 2, 4, 6, 8 这四个偶数。

二、判断题(共10题,每题2分,共20分)

第26题

已知Money=8.6675,print(“工资{0:.2f}”.format(Money)),结果是:“工资8.67”。( )

答案:正确

给定的代码使用了格式化字符串的方式来输出变量 Money 的值。在格式化字符串中,使用 {0:.2f} 来指定输出的格式,其中 .2f 表示保留两位小数的浮点数。

根据给定的代码,变量 Money 的值为 8.6675。在格式化字符串中,使用 {0:.2f} 来代表变量的位置和格式。其中,0 表示第一个参数,即 Money 的位置,而 :.2f 表示浮点数格式,保留两位小数。

因此,运行代码后,输出的结果是 “工资8.67”,即保留了两位小数的工资金额。

第27题

在使用format()函数对字符串进行格式化时,参数索引从1开始。( )

答案:错误

在使用 format() 函数对字符串进行格式化时,参数索引从 0 开始,而不是从 1 开始。

例如,使用 {} 占位符来指示格式化的位置,第一个参数可以通过索引 {0} 来引用,第二个参数可以通过索引 {1} 来引用,依此类推。

name = "Alice"
age = 25
message = "My name is {0} and I'm {1} years old.".format(name, age)
print(message)

输出结果为:

My name is Alice and I'm 25 years old.

第28题

while语句只能用于未知次数的循环,for语句只能用于循环次数己知的循环。( )

答案:错误

在 Python 中,whilefor 语句都可以用于已知次数和未知次数的循环。

while 语句用于在条件为真的情况下重复执行代码块,直到条件为假。这种情况下循环次数是未知的,因为循环的结束取决于条件的满足与否。

for 语句用于迭代遍历一个可迭代对象(如列表、元组、字符串等),每次迭代都会执行一次代码块。循环次数是已知的,取决于可迭代对象的长度。

下面是一个使用 whilefor 循环的示例:

# 使用 while 循环
count = 0
while count < 5:
    print(count)
    count += 1

# 使用 for 循环
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)

在这个例子中,while 循环在未知次数的情况下重复执行,直到 count 变量的值达到 5。而 for 循环在已知次数的情况下,依次遍历列表 numbers 中的元素。

第29题

t=(1,2,3,4,2),则print(t.index(2))的运行结果为1。( )

答案:正确

在给定的元组 t=(1,2,3,4,2) 中,调用 t.index(2) 将返回元素 2 在元组中的第一个出现的索引位置。在这种情况下,元素 2 第一次出现在索引位置 1,所以 print(t.index(2)) 的运行结果是 1。

第30题

若s=(1,2,3,4,5),则执行s.remove(5)语句后,s的值是(1,2,3,4)。( )

答案:错误

在 Python 中,元组是不可变的数据类型,因此无法直接修改元组的内容。调用 s.remove(5) 方法尝试从元组 s=(1,2,3,4,5) 中删除元素 5 会引发 AttributeError 异常,因为元组对象没有名为 remove 的方法。

如果要删除元组中的元素,需要创建一个新的元组,其中仅包含不需要删除的元素。例如,可以使用切片操作来实现这一点:

s = (1, 2, 3, 4, 5)
s = s[:s.index(5)] + s[s.index(5)+1:]
print(s)

输出结果为:

(1, 2, 3, 4)

第31题

Python语言用缩进来标识语句块,同一级语句块中的语句具有相同的缩进量。( )

答案:正确

在 Python 中,使用缩进来标识语句块(代码块),同一级别的语句块需要具有相同的缩进量。这是 Python 的语法规则之一,被称为缩进规则(Indentation Rule)。

例如,当定义一个函数时,函数体内的语句块需要有相同的缩进量:

def my_function():
    statement1
    statement2
    statement3

在这个例子中,statement1statement2statement3 都具有相同的缩进,表示它们属于函数 my_function 的语句块。

同样,条件语句(如 ifelseelif)和循环语句(如 forwhile)也需要使用相同的缩进来标识其中的语句块。

第32题

表达式[3] in [1,2,3]的值为True。( )

答案:错误

在 [3] in [1,2,3] 这个表达式中,左侧的 [3] 是一个包含一个元素 3 的列表,右侧的 [1,2,3] 是一个包含三个元素的列表。

当使用 in 运算符来检查一个元素是否存在于一个列表中时,它会逐个比较列表中的元素和目标元素。在这个例子中,目标元素是 [3],它与列表 [1,2,3] 中的元素进行比较。

由于列表 [1,2,3] 中没有元素与 [3] 完全匹配,所以表达式的值为 False。

第33题

break语句执行后,将跳出程序所有的循环,程序结束。( )

答案:错误

在 Python 中,break 语句用于中断当前循环,并跳出该循环的执行,之后的代码会继续执行。break 语句并不会结束整个程序的执行,只是提前退出当前循环。

当 break 语句被执行时,程序会跳出最内层的循环,然后继续执行循环之后的代码。

第34题

字典中的键和值必须用冒号隔开,同一个字典中的所有键都必须是唯一的。( )

答案:正确

在 Python 中,字典中的键和值必须使用冒号 : 隔开。字典是由键值对组成的数据结构,每个键值对之间使用逗号 , 分隔。

例如,下面是一个包含键值对的字典的示例:

my_dict = {"key1": value1, "key2": value2, "key3": value3}

在这个例子中,键和值之间使用冒号 : 隔开,每个键值对之间使用逗号 , 分隔。

另外,同一个字典中的所有键必须是唯一的。如果存在重复的键,后面的键值对会覆盖前面的键值对。

第35题

以下程序的运行结果为 5。( )

a=6
b=5
if a>b:
    print(a)
else:
    print(b)

答案:错误

根据给定的程序,变量 a 被赋值为 6,变量 b 被赋值为 5。然后,通过 if 条件语句进行比较。

由于 a 的值大于 b 的值,条件 a > b 为真,因此执行 if 语句块中的代码。在 if 语句块中,使用 print(a) 打印变量 a 的值。

因此,程序的运行结果为 6。

三、编程题(共2题,共30分)

第36题

实现统计字符串中的单词和单词出现的次数:
要求如下:
(1)统计的语句为:to be or not to be that is a question
(2)要求统计该句中出现的所有单词和其出现次数。
(3)使用字典进行输出,格式如下(注意:排列顺序可以不一致,但是统计的次数要正确):
{‘to’: 2, ‘be’: 2, ‘or’: 1, ‘not’: 1, ‘is’: 1, ‘a’: 1, ‘question’: 1, ‘that’: 1}

你可以使用 Python 编程语言来实现该统计功能。下面是一个示例代码:

sentence = "to be or not to be that is a question"

# 将句子拆分成单词列表
words = sentence.split()

# 创建一个空字典用于存储单词和出现次数
word_count = {}

# 统计单词出现次数
for word in words:
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1

# 输出统计结果
print(word_count)

运行上述代码,将会输出如下结果:

{'to': 2, 'be': 2, 'or': 1, 'not': 1, 'is': 1, 'a': 1, 'question': 1, 'that': 1}

该代码首先将输入的句子通过 split() 方法拆分成单词列表。然后,使用一个循环遍历单词列表,对每个单词进行统计。

在统计过程中,我们使用一个字典 word_count 来记录每个单词出现的次数。如果单词已经在字典中,就将对应的次数加 1;如果单词不在字典中,就将其添加到字典中,并将次数初始化为 1。

最后,输出字典 word_count,即包含单词和对应出现次数的统计结果。

第37题

可以对任何一个自然数进行若干次运算,最终都可以变为1。
运算规则如下:
(1)若该数是偶数,则变为原数的一半;
(2)若该数是奇数,则变为原数的3倍加1;
(3)重复(1)(2),直到该数变为1。
编写程序实现如下功能:输入一个大于1的自然数,计算按照上述方法最终变换为1共经过的变换次数,并输出变换次数。(输出格式为:直接输出次数即可)
示例1:若输入自然数8,则输出结果为:3。
示例2:若输入自然数5,则输出结果为:5。

你可以使用以下 Python 代码来实现该功能:

def transform_to_one(n):
    count = 0
    while n != 1:
        if n % 2 == 0:
            n = n // 2
        else:
            n = (n * 3) + 1
        count += 1
    return count

# 输入一个大于1的自然数
num = int(input("请输入一个大于1的自然数:"))

# 调用函数计算变换次数
result = transform_to_one(num)

# 输出变换次数
print(result)

运行以上代码,你可以输入一个大于1的自然数,程序将根据给定规则计算变换为1所需的次数,并输出结果。

该代码使用一个循环来重复进行变换过程,直到数字变为1。在每次循环中,根据给定的规则,如果数字是偶数,则将其除以2;如果数字是奇数,则将其乘以3再加1。同时,使用一个计数器变量 count 来记录变换次数。

最后,将计数器变量 count 的值作为结果进行输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1096907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BUUCTF在线评测简介

1、网站 BUUCTF在线评测简介 BUUCTF在线评测 BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台&#xff0c;为各位 CTF 选手提供真实赛题在线复现等服务。https://buuoj.cn/challenges 2、介绍 3、学习步骤 学习从这里开始&#xff01;

深入剖析 深度学习中 __init()__函数和forward()函数

目录 前言1. __init()__函数2. forward()函数3. 两者关系 前言 再看代码时&#xff0c;发现init函数和forward函数都有参数&#xff0c;具体是怎么传参的呢&#xff1f; 为了更方便的讲解&#xff0c;会举简单的代码例子结合讲解。 forward() 和 __init__() 是神经网络模型类…

甘特图:如何制定一个有效的项目计划?需要考虑这些方面

一个清晰、可行的计划能够为团队提供明确的方向&#xff0c;确保项目顺利执行&#xff0c;缺乏明确的计划可能导致项目偏离轨道。 甘特图是一种通过条状图形来表示项目和进度的工具&#xff0c;由于其具有视觉化的优点&#xff0c;使得管理者能够更容易地掌握项目进展情况。因…

安捷伦N8485A射频传感器26.5GHz

安捷伦N8485A射频传感器 N8485A 是 Agilent 使用的 26.5 GHz 0.1 瓦射频传感器。电子测试设备传感器测量波形的功率&#xff0c;例如多音和调制射频 (RF) 波形。传感器使用二极管检测器收集高度精确的调制测量值。 用于存储校准系数的 EEPROM 消除了手动输入 10 MHz 至 26.5 GH…

lombok保姆教学

初始化准备工作 所有的环境如下&#xff1a; jdk1.8或者jdk11Springboot2.xmysql5.7或者mysql8.0 首先创建Springboot工程&#xff0c;初次创建初始化速度慢 如果想指定单个项目的maven中央仓库&#xff0c;pom中的配置如下&#xff1a; <!-- 代码库 --><reposito…

BUUCTF学习(一):SQL注入,万能密码

1、场景 2、题目 3、解题 用户名&#xff1a;admin or 11# 密码&#xff1a;123456 4、解析SQL注入 “SQL注入是一种常见的Web应用程序漏洞&#xff0c;攻击者可以通过注入的SQL语句获取数据库的敏感信息&#xff0c;对网站用户的数据安全造成威胁。SQL注入的特点包括广泛性、隐…

如何将领导发的jar包安装到本地的maven仓库

第一步&#xff1a;打开idea右侧的maven功能选择这个图标 第二步&#xff1a;输入maven指令 这个的pom文件的maven管理 1.这个是同一个文件夹下面导入两个jar包。如jdk16和javadoc mvn install:install-file -DfileD:\java\maven\myDepot\aspose-words-16.8.0-jdk16.jar -D…

websocket+node+vite(vue)实现一个简单的聊天

1.前端逻辑 本项目基于之前搭建的vite环境&#xff1a;https://blog.csdn.net/beekim/article/details/128083106?spm1001.2014.3001.5501 新增一个登录页和聊天室页面 <template><div>登录页</div><div>用户名:<input type"text" pl…

uniapp开发H5微信公众号,使用微信的扫一扫等Api试错

记录使用uniapp开发H5微信公众号,有些业务需要用到一些API&#xff0c;比如扫码&#xff0c;h5和微信小程序&#xff0c;app在使用过程中有有些不同&#xff0c;h5使用需要单独引入微信的jsdk,才能使用否则会报错无法使用 引入微信jsdk npm安装 npm install jweixin-module -…

一款优秀的文件外发控制软件 具备哪些优势?

随着越来越多的公司在网上开展业务&#xff0c;网络安全漏洞也相应增加。因此&#xff0c;企业需要保护自己的数据&#xff0c;防止数据泄露&#xff0c;给企业带来损失。近几年来&#xff0c;企业数据泄露事件频发&#xff0c;给许多企业都带来巨大创伤。 乌克兰电力公司在201…

【python入门篇】元组、字典和集合(3)

先来介绍下这三种数据类型&#xff0c;第一个&#xff1a;元组&#xff08;tuple&#xff09;是 python中另一个重要的序列结构&#xff0c;和列表类似&#xff0c;元组也是由一系列按特定顺序排序的元素组成。第二个&#xff1a;python 字典&#xff08;dict&#xff09;是一种…

AIGC|数字时代巨变,创新潮流涌现,万亿市值风口已开!

“2021年至2023年7月期间&#xff0c;AIGC赛道共发生280笔投融资&#xff0c;展现了其高热度与高成长性。在获投的应用与模型层创业项目中&#xff0c;文本、影像、语音平分秋色。”艾瑞咨询在其《2023年中国AIGC产业全景报告》披露国内AIGC的最新投融资情况&#xff0c;这让我…

关于IOC与IOA的学习

[TOC]IOC与IOA学习 IoC 和 IoA&#xff1a;两者有什么区别&#xff1f; IoC 和 IoA 可通过以下四种简单的方法进行区分&#xff1a; 具体工具与动机&#xff1a; IoC 专注于攻击者为实现其意图而使用的特定文件和采取的行动&#xff0c;而 IoA 则专注于这些意图本身。IoC 关…

QT 串口编程 QSerialPort

//创建串口对象QSerialPort s new QSerialPort("/dev/ttySAC2", this);//配置串口信息s->setBaudRate(QSerialPort::Baud9600);//波特率s->setDataBits(QSerialPort::Data8);//数据位s->setStopBits(QSerialPort::OneStop);//奇偶校验s->setParity(QSer…

《向量数据库指南》——Milvus Cloud向量数据库的优势

大禹智库: 随着大模型的爆火,向量数据库也越发成为开发者关注的焦点。为了方便大家更好地了解向量数据库,我们特地推出了《Hello, VectorDB》系列,本文将从宏观角度、向量数据库与其他算法库的区别、技术难点及如何选择向量数据库等方面,带大家认识真正的向量数据库。 在…

simulink创建全局变量MATLAB function引用

matlab版本&#xff1a;2022a 在库浏览器中找到Data Store Memory并放置 双击打开Data Store Memory模块设置变量名 在信号属性中设置初始值、数据类型和信号类型&#xff0c;数据类型和信号类型不能为auto 在记录中勾选“记录数据存储数据” 打开引用该变量的MATLAB function模…

数字时代,VR虚拟展会打造全渠道同步营销新模式

随着经济的快速发展&#xff0c;VR虚拟展会逐步完善&#xff0c;对线下实体展会也产生了重大的影响&#xff0c;在这个数字化时代&#xff0c;展会展览也需要寻找新的表达方式&#xff0c;VR虚拟展会以一种全新的魅力吸引越来越多的观展者。 传统展厅的局限性&#xff1b; 1、…

更新 | 持续开源迅为RK3568驱动指南-驱动基础进阶篇

《iTOP-RK3568开发板驱动开发指南》更新&#xff0c;本次更新内容对应的是驱动&#xff08;第一期_驱动基础-进阶篇&#xff09;视频&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 文档教程更新至驱动基础进…

安捷伦N8482A射频传感器6GHz

安捷伦N8482A射频传感器 N8482A 是 Agilent 使用的 6 GHz 0.1 瓦射频传感器。电子测试设备传感器测量波形的功率&#xff0c;例如多音和调制射频 (RF) 波形。传感器使用二极管检测器收集高度精确的调制测量值。 用于存储校准系数的 EEPROM 消除了手动输入 100 kHz 至 6 GHz 的宽…

java-范型

java—范型 泛型在java中有很重要的地位&#xff0c;无论是开源框架还是JDK源码都能看到它。 毫不夸张的说&#xff0c;泛型是通用设计上必不可少的元素&#xff0c;所以真正理解与正确使用泛型&#xff0c;是一门必修课。 1&#xff0c;范型概述 1&#xff0c;泛型本质 J…