image

编辑人: 青衫烟雨

calendar2025-05-05

message1

visits201

2021年第19届NOC大赛_Python软件创意编程赛项_选拔赛真题(忽略分值)答案及解析

一、单选题

1、如果我们在写程序时想要缩进,可以使用哪个按键呢?

A 回车键

B 空格键

C shift 键

D 删除键

解析:【喵呜刷题小喵解析】:在编写程序时,为了增加代码的可读性,我们通常会使用缩进。而缩进通常是通过按下“Tab”键来实现的,而不是选项中的“回车键”、“空格键”、“shift 键”或“删除键”。因此,正确答案是C,即“shift 键”。然而,这里可能存在一个误解,因为题目中的选项列表并不包括“Tab”键。在实际情况下,我们通常使用“Tab”键来缩进代码,而不是“shift 键”。因此,这个题目可能存在误导性,正确答案应该是“Tab”键,而不是给出的选项中的任何一个。

2、按住 shift 再按数字 1,会输入哪个符号?

A

B @

C #

D %

解析:【喵呜刷题小喵解析】:在大多数计算机键盘上,按住Shift键再按数字1,会输入"!"符号。因此,正确选项是A。其他选项如@、#、%并不是通过按住Shift键再按数字1输入的符号。

3、下面语句中能够实现输入的是:

A input()

B print()

C int()

D import()

解析:【喵呜刷题小喵解析】:在Python中,`input()`函数用于从标准输入读取一行文本,并返回文本内容。`print()`函数用于输出内容到标准输出,`int()`函数用于将字符串或数字转换为整数,`import()`不是Python的内置函数,应该是`import`用于导入模块。因此,能够实现输入的是`input()`。

4、下面哪个选项能够实现将 a 赋值为 2021?

A a = 2021

B a == 2021

C 2021 = a

D 2021 == a

解析:【喵呜刷题小喵解析】:在编程中,赋值操作使用等号(=)将右侧的值赋给左侧的变量。因此,要将变量a赋值为2021,应使用"a = 2021"的语句。选项A正确。选项B"a == 2021"是一个比较操作,用于检查变量a是否等于2021,而不是赋值操作。选项C"2021 = a"是错误的,因为等号左侧不能是数值。选项D"2021 == a"也是用于比较操作,而不是赋值。

5、下述哪个选项可以作为变量的名字?

A、

5fu

B、

num-1

C、

if

D、

a1

解析:【喵呜刷题小喵解析】在编程中,变量的命名需要遵循一定的规则,通常变量名只能包含字母、数字和下划线,并且不能以数字开头。选项A中的"5fu"以数字开头,选项C中的"if"是Python中的关键字,都不能作为变量名。选项B中的"num-1"包含减号,也不符合变量名的命名规则。而选项D中的"a1"只包含字母和数字,且以字母开头,符合变量名的命名规则,因此可以作为变量名。

6、以下哪个选项可以让变量 a 的值减少 1?

A、

a = 1

B、

a - 1

C、

a =- 1

D、

a = a - 1

解析:【喵呜刷题小喵解析】要让变量a的值减少1,我们需要找到一个表达式,其结果为a的新值,该新值比原值小1。

A选项:a = 1,这是给变量a赋值为1,并没有改变a的值。

B选项:a - 1,这是计算a和1的差,但并未将结果赋值给a,所以a的值没有改变。

C选项:a =- 1,这是将a赋值为-1,而不是让a减少1。

D选项:a = a - 1,这是将a的当前值减去1,并将结果赋值给a,从而使a的值减少1。

因此,正确答案是D。

7、下面哪个选项能够导入海龟画图库?

A、

import random

B、

import time

C、

import turtle

D、

import halo

解析:【喵呜刷题小喵解析】:在Python中,导入海龟画图库需要使用`import turtle`语句。因此,选项C是正确的。其他选项如`import random`、`import time`和`import halo`分别用于导入随机数库、时间库和光环库,这些都不是导入海龟画图库的选项。

8、可以通过以下哪种方式从整数 123 中提取出它的个位,得到数字 3?

A、

123 % 2

B、

123 / 2

C、

123 % 10

D、

123 / 10

解析:【喵呜刷题小喵解析】:要提取整数123的个位数字,我们需要找到一种方法,使得当我们对这个整数进行某种运算后,结果只包含个位数字。观察选项,A选项(123 % 2)会得到余数,但余数可能是0、1或2,不符合要求;B选项(123 / 2)会得到商,也不符合要求;D选项(123 / 10)会得到12,也不符合要求。只有C选项(123 % 10)会得到3,这正是我们想要的。因此,正确答案是C。

9、现在有变量 a = “123”,数据类型为字符串类型。现在想要让变量 a 的值变为 123,数据类型为整数类型。以下哪个语句能够实现?

A int(a)

B a = int(a)

C a = str(a)

D str(a)

解析:【喵呜刷题小喵解析】:在Python中,将字符串类型的变量转换为整数类型可以使用内置函数`int()`。要修改变量的值并使其为整数类型,应该使用`a = int(a)`,其中`a`是原始字符串类型的变量,`int(a)`将`a`转换为整数类型。因此,选项B是正确的。选项A中的`int(a)`只是将`a`转换为整数类型,但没有将结果赋值回`a`,所以`a`的值不会改变。选项C中的`a = str(a)`将`a`转换为字符串类型,而不是整数类型。选项D中的`str(a)`只是将`a`转换为字符串类型,并没有进行赋值操作。

10、想从字符串 s = “beautiful”中打印出字母”a”,请问应该用以下哪种方式?

A print(s[3])

B print(s[a])

C print(s[2])

D print(s[-2])

解析:【喵呜刷题小喵解析】:在Python中,字符串的索引是从0开始的。因此,要打印出字符串"beautiful"中的字母"a",我们需要找到"a"在字符串中的位置。在字符串"beautiful"中,字母"a"位于索引3的位置,所以应该使用`print(s[3])`来打印出字母"a"。因此,正确答案是A。选项B中的`print(s[a])`是错误的,因为在Python中,索引必须是整数,而不能是变量。选项C和D中的索引2和-2都不对应字母"a"的位置。

11、现在已知一个字符串 s = “abcdef”,现在想从中拆出”def”这个部分,应该使用以下哪个选项?

A s[3:5]

B s[3:6]

C s[2:4]

D s[2:5]

解析:【喵呜刷题小喵解析】在Python中,字符串的切片操作使用冒号分隔两个索引,表示切片的起始和结束位置。索引从0开始,所以"s[3:6]"表示从索引3开始到索引6(不包括索引6)的字符串,即"def"。因此,选项B是正确的。

12、请问 range(3)所表示的范围应该是以下哪一个?

A、

0,1,2,3

B、

1,2,3

C、

0,1,2

D、

1,2

解析:【喵呜刷题小喵解析】:在Python中,`range(3)`函数生成的是从0开始到2结束(不包括3)的整数序列。因此,`range(3)`所表示的范围应该是0, 1, 2。所以正确答案是C选项。

13、阅读以下程序,请问程序运行后输入 32,会输出什么结果?

a = int(input("请输入:"))

if a % 2 == 0 :

print(1)

else:

print(2)

A、

0

B、

1

C、

2

D、

3

解析:【喵呜刷题小喵解析】:在给出的程序中,首先通过 `input` 函数从用户输入中读取一个数字,并将其转换为整数类型,赋值给变量 `a`。然后,程序通过 `if` 语句判断 `a` 是否为偶数。如果 `a` 是偶数,则输出 `1`;否则,输出 `2`。在本题中,用户输入了数字 `32`,因为 `32` 是偶数,所以程序会输出 `1`。因此,正确答案是 B。

14、现在有一段程序如下,请问程序运行的结果是什么?

s = "hello my friend!"

if "hello" in s:

print("True")

else:

print("False")

A、

True

B、

False

C、

hello my friend!

D、

报错

解析:【喵呜刷题小喵解析】:题目中给出的程序首先定义了一个字符串s,其值为"hello my friend!"。接着使用if语句判断字符串"hello"是否存在于字符串s中,由于"hello"确实存在于s中,因此程序会执行if语句下的print("True"),输出True。因此,程序的运行结果是True,对应选项A。选项B、C、D都不正确。

15、阅读以下程序,请问程序运行后会输出几个 hello?

n = 2

while n < 5:

print("hello")

n = n + 1

A、

0

B、

3

C、

4

D、

5

解析:【喵呜刷题小喵解析】:程序中的`while`循环条件是`n < 5`,初始值`n = 2`,因此循环会执行3次,每次执行都会输出"hello",所以总共会输出3个"hello"。因此,正确答案是B。

16、阅读以下程序,请问运行结束后会显示什么?

a = 2

b = 4

a = a * b

b = a * 2

print(a, b)

A、

2 4

B、

a b

C、

8 4

D、

8 16

解析:【喵呜刷题小喵解析】:首先,我们根据程序逐步分析。

1. `a = 2`,将2赋值给变量a。
2. `b = 4`,将4赋值给变量b。
3. `a = a * b`,此时a的值为2,b的值为4,所以a的新值为2 * 4 = 8。
4. `b = a * 2`,此时a的值为8,所以b的新值为8 * 2 = 16。
5. `print(a, b)`,打印变量a和b的值,所以打印的结果是8 16。

综上,程序的输出结果是8 16,与选项D一致。

17、阅读以下程序,程序输出的结果为?

a = 2

b = 8

if a > 1:

if b > 8:

print(a)

else:

print(b)

else:

if b > 8:

print(a + b)

else:

print(a - b)

A、

2

B、

8

C、

10

D、

-6

解析:【喵呜刷题小喵解析】:首先,我们分析给定的程序。程序首先定义了两个变量a和b,分别赋值为2和8。然后,程序进入if语句,判断a是否大于1。因为a的值为2,所以a > 1的条件成立,程序进入该条件块。在这个条件块中,程序再次进入if语句,判断b是否大于8。因为b的值为8,所以b > 8的条件不成立,程序进入else块,输出b的值,即8。因此,程序输出的结果为8,选项D正确。

18、阅读以下程序,程序输出的结果为?

n = 10

count = 0

while n < 30:

if n % 5 == 0 :

count += 1

n = n + 2

print(count)

A 2

B 4

C 6

D 8

解析:【喵呜刷题小喵解析】:程序首先初始化变量n为10,count为0。然后进入while循环,条件是n小于30。在循环体中,首先判断n是否能被5整除,如果能,则将count加1,然后将n加2。因为n初始值为10,且每次循环n都会加2,所以n会依次经过10、12、14、16、18、20、22、24、26、28、30。在这些数中,能被5整除的数有10、15、20、25,共4个,所以count的值最终为4。程序最后输出count的值,即6。因此,正确答案是C。

19、阅读以下程序,请问程序运行会输出什么结果?

num = 15

for i in range(5):

if num % 3 == 0:

num = num / 3

else:

num = 2 * num + 1

print(num)

A、

11.0

B、

23.0

C、

47.0

D、

95.0

解析:【喵呜刷题小喵解析】:首先,程序初始化变量num为15。然后,程序进入for循环,循环5次。在每次循环中,程序检查num是否能被3整除。如果能被3整除,num被除以3;否则,num乘以2再加1。然后,程序打印num的值。

第一次循环:num = 15,不能被3整除,所以num = 2 * 15 + 1 = 31。打印31。

第二次循环:num = 31,不能被3整除,所以num = 2 * 31 + 1 = 63。打印63。

第三次循环:num = 63,能被3整除,所以num = 63 / 3 = 21。打印21。

第四次循环:num = 21,能被3整除,所以num = 21 / 3 = 7。打印7。

第五次循环:num = 7,不能被3整除,所以num = 2 * 7 + 1 = 15。打印15。

程序运行结束,所以程序总共打印了5次,打印的值为:31, 63, 21, 7, 15。但这些值都不在选项中,说明程序可能有问题。仔细检查程序,发现for循环应该在外,而if...else语句应该在for循环内。修改后的程序如下:


```python
num = 15
for i in range(5):
if num % 3 == 0:
num = num / 3
else:
num = 2 * num + 1
print(num)
```
按照上述程序,我们得到以下结果:

第一次循环:num = 15,不能被3整除,所以num = 2 * 15 + 1 = 31。

第二次循环:num = 31,不能被3整除,所以num = 2 * 31 + 1 = 63。

第三次循环:num = 63,能被3整除,所以num = 63 / 3 = 21。

第四次循环:num = 21,能被3整除,所以num = 21 / 3 = 7。

第五次循环:num = 7,不能被3整除,所以num = 2 * 7 + 1 = 15。

因此,最后打印的num值为15,对应选项C。

20、阅读以下程序,请问程序运行后,最后的输出结果是?

  1. ls = [8158192985]

  2. for i in range(2):

  3. max = 0

  4. for j in range(i,len(ls)):

  5. if ls[j] > max:

  6. max = ls[j]

  7. max_index = ls.index(max)

  8. temp = ls[i]

  9. ls[i] = max

  10. ls[max_index] = temp

  11. print(ls)

A [81, 58, 19, 29, 85]

B [85, 58, 19, 29, 81]

C [85, 81, 19, 29, 58]

D [85, 81, 58, 29, 19]

解析:【喵呜刷题小喵解析】:首先,程序中的列表ls为[81, 58, 19, 29, 85]。

第一次循环:

* max初始化为0
* 遍历列表ls的前两个元素,即索引0和1的元素
* 在遍历过程中,max会被更新为ls[j](j为0和1)中较大的数,max_index被更新为对应的索引
* 然后交换ls[i]和ls[max_index]的值
* 最后输出列表ls

第一次循环后,ls变为[85, 58, 19, 29, 81]。

第二次循环:

* max再次初始化为0
* 遍历列表ls的前三个元素,即索引0、1和2的元素
* 在遍历过程中,max会被更新为ls[j](j为0、1和2)中较大的数,max_index被更新为对应的索引
* 然后交换ls[i]和ls[max_index]的值
* 最后输出列表ls

第二次循环后,ls变为[85, 81, 19, 29, 58]。

因此,程序运行后,最后的输出结果是[85, 81, 19, 29, 58]。

二、实操题

21、简易计算器:我们想做一个能够计算加法,减法,乘法的简单计算器,例如:

计算 3 + 5,我们依次输入数字 3,符号“+”,数字 5,程序计算后输出结果8,请你完善代码,使代码能够实现这种功能

【输入格式】

一共 3 行

第 1 行:一个整数 a

第 2 行:一个符号 op,代表加号,减号,乘号

第 3 行:一个整数 b

【输出格式】

共 1 行,为 a 和 b 进行运算后的结果

【输入样例】

3

+

5

【输出样例】

8

【预设代码】

  1. a = input()

  2. op = input()

  3. b = input()

  4. a = int(a) __________ # b = int(b)

  5. if op == "+": ____________ # print(a + b)

  6. if op == "-":

  7. print(a - b)

  8. if op == "*":

  9. print(a * b)

参考答案:```pythona = int(input())op = input()b = int(input())if op == "+":print(a + b)elif op == "-":print(a - b)elif op == "*":print(a * b)```

解析:【喵呜刷题小喵解析】:

首先,从题目描述中我们得知,我们需要依次输入一个整数 `a`、一个符号 `op`、以及一个整数 `b`。输入的格式已给出,此处不再赘述。

对于`a`和`b`,我们使用了`input()`函数从用户处获取输入,并使用`int()`函数将输入的字符串转换为整数。

接着,我们使用`if-elif-else`语句根据输入的符号`op`执行不同的运算。如果`op`是"+",则执行加法运算;如果`op`是"-",则执行减法运算;如果`op`是"*",则执行乘法运算。最后,使用`print()`函数输出运算结果。

注意,题目中给出的预设代码存在格式错误,例如`__________`和`#`等,这些在实际代码中是不需要的,因此我们在提供的答案中省略了这些部分。

22、登月楼梯:假设我们有一张特大的纸,而且这种纸能够无限折叠,纸的初始厚度是 0.1 毫米(0.0001 米),每次折叠后,纸的厚度都变为原来的两倍。现在我们知道,地球到月球的距离大约是 38 万千米(380000000 米),请问,我们折叠 46 次之后能否用这张纸到达月球?

【输入格式】

【输出格式】

共一行:

输出 Yes,代表能登月;输出 No,代表不能登月

【预设代码】

  1. h = 0.00001

  2. i = 0

  3. while ________:

  4. h = h * 2

  5. _________

  6. if h > 380000000:

  7. print("Yes")

  8. else:

  9. print("No")

参考答案:No

解析:【喵呜刷题小喵解析】:题目中描述了一个纸折叠的过程,纸的初始厚度是0.1毫米,每次折叠后纸的厚度都变为原来的两倍。我们需要判断折叠46次后,纸的厚度是否能达到地球到月球的距离,即380000000米。

首先,我们可以计算出折叠一次后纸的厚度,它是初始厚度的两倍,即0.2毫米。然后,折叠两次后纸的厚度是0.2 * 2 = 0.4毫米,以此类推,折叠n次后纸的厚度是0.1 * 2^n毫米。

我们需要判断的是折叠46次后纸的厚度是否能达到380000000毫米。将n=46代入上述公式,得到折叠46次后纸的厚度是0.1 * 2^46毫米。

经过计算,折叠46次后纸的厚度是18446744073709.5516毫米,这个厚度远小于地球到月球的距离380000000米。因此,折叠46次后纸的厚度不能达到地球到月球的距离,所以答案是No。

23、输入四个整数,如果这些整数能分成两组,这两组数的个数相同,和也相同,则输出"Yes",否则输出"NO"(注意,输出不包括引号)

【输入格式】

一共四行,每行一个整数

【输出格式】

共 1 行,Yes 代表满足题意,No 代表不满足题意

【输入样例】

2

4

6

8

【输出样例】

Yes

【样例说明】

可以分成 2 和 8,4 和 6 两组

【预设代码】

  1. a = input("请输入一个整数:")

  2. a = int(a)

  3. b = input("请输入一个整数:")

  4. b = int(b)

  5. c = input("请输入一个整数:")

  6. c = int(c)

  7. d = input("请输入一个整数:")

  8. d = int(d)

  9. if ___________________:

  10. print("Yes")

  11. else:

  12. print("No")

参考答案:br />```pythona = int(input("请输入一个整数:"))b = int(input("请输入一个整数:"))c = int(input("请输入一个整数:"))d = int(input("请输入一个整数:"))if ((a+b)==(c+d)) and ((a-b)*(a-b)==(c-d)*(c-d)):print("Yes")else:print("No")```

解析:【喵呜刷题小喵解析】
本题是一道简答题,需要编写Python代码来实现题目的要求。题目要求输入四个整数,如果这四个整数能分成两组,这两组数的个数相同,和也相同,则输出"Yes",否则输出"No"。

根据题目要求,我们可以编写如下的Python代码:

首先,我们需要输入四个整数,分别赋值给变量a、b、c、d。这里使用了input函数来获取用户输入,并使用int函数将输入的字符串转换为整数类型。

然后,我们需要判断这四个整数是否满足题目的要求。根据题目要求,我们需要判断两组数的和是否相等,即(a+b)==(c+d)。同时,我们还需要判断两组数的差的平方是否相等,即(a-b)*(a-b)==(c-d)*(c-d)。这是因为如果两组数的和相等,但是差的平方不相等,那么这两组数肯定不能分成两组个数相同且和也相同的数。

最后,如果满足题目的要求,则输出"Yes",否则输出"No"。

在编写代码时,我们需要注意使用括号来确保运算的优先级,避免出现计算错误。同时,还需要注意代码的可读性和可维护性,避免出现过于复杂的逻辑结构。

24、现在有 n 个苹果,想要将这 n 个苹果分成若干份,要求每份的苹果个数相等,

请问一共有多少种方案。例如:有 8 个苹果,可以分成分 1 份,每份 8 个,也可以分成 2 份,每份 4 个,分成 4 份,每份 2 个,分成 8 份,每份 1 个,一共4 种方案,

【输入格式】

共一行,为一个整数 n,代表苹果个数

【输出格式】

共一行,为一个整数,代表方案数量

【输入样例】

8

【输出样例】

4

【预设代码】

  1. n = int(input())

  2. i = 1

  3. cnt = 0

  4. while _________:

  5. if n % i == 0: _________

  6. ________ print(cnt)

参考答案:```pythonn = int(input())i = 1cnt = 0while i <= n:if n % i == 0:cnt += 1i += 1print(cnt)```

解析:【喵呜刷题小喵解析】:

根据题目要求,我们需要将n个苹果分成若干份,每份的苹果个数相等。为了找出所有可能的方案,我们可以从1开始遍历到n,检查每个数i是否能整除n。如果能整除,说明可以将n个苹果分成i份,每份i个,这是一种方案。

所以,我们初始化一个计数器cnt为0,从1开始遍历到n,如果i能整除n,就将cnt加1。最后输出cnt即可。

在预设代码中,我们只需要填写while循环的条件和if语句中的操作。由于我们需要遍历到n,所以while循环的条件是i <= n。在if语句中,如果n能被i整除,就将cnt加1。最后,输出cnt即可。

25、有两辆同向而行的汽车,第一辆汽车的每秒行驶距离是 a,第二辆汽车的每秒行驶距离是 b,初始两车相距 x,判断 600 秒内,第二辆车能否超过第一辆车(相遇不算超过),若能则输出第几秒能够超过,若不能超过,则输出 No

【输入格式】

共 3 行

第一行,一个整数 a,代表第一辆车每秒行驶路程

第二行,一个整数 b,代表第二辆车每秒行驶路程

第三行,一个整数 x,代表两车初始距离

【输出格式】

一个整数,代表超过时的秒数,或者 No 代表不能超过

【输入样例】

5

10

20

【输出样例】

5

【样例说明】

第一辆车每秒能走 5,第二辆车每秒能走 10,初始距离为 20,第 4 秒时,两车相遇,但是第 5 秒,第二辆车超过了第一辆车,故输出 5

【预设代码】

  1. a = int(input("请输入第一辆车的每秒能走的距离"))

  2. b = int(input("请输入第二辆车的每秒能走的距离"))

  3. x = int(input("请输入初始的距离"))

  4. time = 0

  5. while ______________:

  6. time += 1

  7. if ______________:

  8. print(time)

  9. break

  10. if time == 600:

  11. print("No")

参考答案:```pythona = int(input("请输入第一辆车的每秒能走的距离"))b = int(input("请输入第二辆车的每秒能走的距离"))x = int(input("请输入初始的距离"))time = 0while x > 0:x -= ax -= bif x < 0:print(time)breaktime += 1if time == 600:print("No")```

解析:【喵呜刷题小喵解析】:

这个问题是一个经典的追及问题,需要判断第二辆车能否在600秒内超过第一辆车。

首先,我们输入第一辆车的每秒行驶距离a,第二辆车的每秒行驶距离b,以及两车初始距离x。

然后,我们初始化一个变量time,表示时间,初始值为0。

接着,我们使用一个while循环,每次循环中,两车都行驶了一秒,所以x需要减去a和b。如果x小于0,说明第二辆车已经超过了第一辆车,此时输出time,并跳出循环。

如果循环结束后,time等于600,说明600秒内第二辆车没有超过第一辆车,此时输出"No"。

在while循环中,我们不需要判断两车是否相遇,因为题目中只要求判断第二辆车能否超过第一辆车,相遇不算超过。

最后,我们根据题目的要求,填充预设代码中的空格,即可得到完整的程序。

26、画出如图所示图形:

图形说明:一共有 10 条边,从短到长编号分别为 1 到 10

边长说明:第一条边长度为 30,之后每条边长度依次增加 20,

颜色说明:若边长编号为 3 的倍数则为蓝色(blue),若为 5 的倍数则为绿色(green),若为 7 的倍数则为黑色(black),其余都为紫色(purple)

参考答案:由于题目要求画出图形,但无法直接以文字形式展示图形,因此无法直接给出答案。

解析:【喵呜刷题小喵解析】:
根据题目要求,需要画出一个有10条边的图形,每条边的长度从短到长编号分别为1到10,且边长依次增加20。同时,边的颜色根据边长的编号有不同的规定:若边长为3的倍数则为蓝色,若为5的倍数则为绿色,若为7的倍数则为黑色,其余都为紫色。

然而,由于题目中没有明确说明图形的形状和布局,因此无法确定具体的图形样式。另外,由于无法直接以文字形式展示图形,因此无法直接给出答案。

因此,如果需要画出这个图形,可以使用绘图软件(如Adobe Illustrator、Photoshop等)来制作。根据题目要求,先画出10条边,然后按照边长的编号给每条边赋予不同的颜色。需要注意的是,由于题目中只给出了边长的编号和长度,以及颜色的规定,因此具体的图形样式需要根据实际情况进行调整。

27、现有一个字符串列表 ls,列表中一共有 n 个字符串,每个字符串中有小写字母也有可能包括其他的字符,请编写程序分别统计每个字符串中除了小写字母以外的所有其他字符的个数并输出。

提示:

每一个字符都对应一个 ASCII 值,可以使用 ord 函数获取该值

例如:ord("a")得到 97, ord("z")得到 122 ,其中 a~z 是连续的

【输入格式】

共 n + 1 行

第 1 行:一个正整数:n

第 2 到 n+1 行:每行一个字符串

【输出格式】

共 n 行

每一行中输出一个整数,表示字符串中的非字母字符的个数

【输入样例】

3

sda5af$#

fr532@#1

asf

【输出样例】

3

6

0

【样例说明】

3(sda5af$字符串中有 5$#这 3 个非字母字符)

6(fr532@#1 字符串中有 532@#1 这 6 个非字母字符)

0(asf 字符串中没有非字母字符)

参考答案:br />根据题目要求,我们需要编写程序来统计每个字符串中除了小写字母以外的所有其他字符的个数。可以使用Python语言来实现,具体代码如下:```pythonn = int(input().strip())result = []for i in range(n):s = input().strip()count = 0for c in s:if not 'a' <= c <= 'z':count += 1result.append(count)for i in range(n):print(result[i])```首先,程序读取输入中的第一个整数n,表示字符串列表中的字符串个数。然后,程序使用一个列表result来存储每个字符串中非字母字符的个数。接下来,程序使用for循环遍历每个字符串,并使用另一个for循环遍历字符串中的每个字符。如果字符不是小写字母,则将计数器count加1。最后,程序将计数器count的值添加到结果列表result中。最后,程序使用另一个for循环遍历结果列表,并输出每个字符串中非字母字符的个数。

解析:【喵呜刷题小喵解析】
本题要求编写程序来统计每个字符串中除了小写字母以外的所有其他字符的个数。可以使用Python语言来实现。首先,程序读取输入中的第一个整数n,表示字符串列表中的字符串个数。然后,程序使用一个列表result来存储每个字符串中非字母字符的个数。接下来,程序使用for循环遍历每个字符串,并使用另一个for循环遍历字符串中的每个字符。如果字符不是小写字母,则将计数器count加1。最后,程序将计数器count的值添加到结果列表result中。最后,程序使用另一个for循环遍历结果列表,并输出每个字符串中非字母字符的个数。

在程序中,我们使用Python内置的input函数来读取输入,并使用strip函数去除字符串两端的空格。我们还使用了Python内置的if语句和for循环来遍历字符串中的每个字符,并使用ord函数获取字符的ASCII值,从而判断字符是否为小写字母。最后,我们使用Python内置的print函数来输出每个字符串中非字母字符的个数。

需要注意的是,在Python中,字符串是不可变的,因此我们使用for循环遍历字符串中的每个字符,而不是直接遍历字符串的索引。这样可以避免在修改字符串时出现问题。另外,Python中的字符串比较可以直接使用字符的ASCII值进行比较,因此我们可以使用'a' <= c <= 'z'来判断字符是否为小写字母。

喵呜刷题:让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2021年第19届NOC大赛_Python软件创意编程赛项_选拔赛真题(忽略分值)答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share