数字统计

数字统计

W1ndys Lv6

[NOIP2010 普及组] 数字统计

题目描述

请统计某个给定范围 $[L, R]$ 的所有整数中,数字 $2$ 出现的次数。

比如给定范围 $[2, 22]$,数字 $2$ 在数 $2$ 中出现了 $1$ 次,在数 $12$ 中出现 $1$ 次,在数 $20$ 中出现 $1$ 次,在数 $21$ 中出现 $1$ 次,在数 $22$ 中出现 $2$ 次,所以数字 $2$ 在该范围内一共出现了 $6$ 次。

输入格式

$2$ 个正整数 $L$ 和 $R$,之间用一个空格隔开。

输出格式

数字 $2$ 出现的次数。

样例 #1

样例输入 #1

1
2 22

样例输出 #1

1
6

样例 #2

样例输入 #2

1
2 100

样例输出 #2

1
20

提示

$1 ≤ L ≤R≤ 100000$。

NOIP2010 普及组 第一题

题解

1
2
3
4
5
6
7
8
9
a, b = map(int, input().split())
count = 0
for i in range(a, b + 1):
i_str = str(i)
for j in i_str:
num_str = int(j)
if num_str == 2:
count += 1
print(count)

题解解释

这段代码实现了统计给定范围 $[a, b]$ 中数字 $2$ 出现的次数。首先通过 input().split() 获取用户输入的两个整数,然后通过 map(int, ...) 将输入的字符串转换为整数,并将其分别赋值给变量 ab。接着初始化计数变量 count 为 $0$。

然后通过 for i in range(a, b + 1): 循环遍历范围 $[a, b]$ 中的每一个整数。在循环中,将当前整数 i 转换为字符串 i_str,然后通过 for j in i_str: 遍历该字符串的每一位数字。将每一位数字转换为整数 num_str,如果 num_str 等于 $2$,则将 count 自增 $1$。

最后输出 count,即范围 $[a, b]$ 中数字 $2$ 出现的总次数。

知识点

提取整数中每一个数字

要提取一个整数中的每一位数字,你可以使用 Python 将其转换为字符串,然后逐个访问每个字符。下面是一个简单的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
def extract_digits(number):
# 将数字转换为字符串
number_str = str(number)

# 遍历字符串中的每个字符
for digit_char in number_str:
# 如果字符是数字字符,则转换为整数并打印
if digit_char.isdigit():
digit = int(digit_char)
print(digit)

# 调用函数并传入整数
extract_digits(123456)

这将输出:

1
2
3
4
5
6
1
2
3
4
5
6

这里我们将整数转换为字符串,然后遍历字符串的每个字符,将每个字符再转换回整数以获取每一位数字。

chr 和 str 函数,我搞混了

还要注意 chr 和 str 函数,我搞混了

在 Python 中,chr()str() 是两个不同的函数,用途也不同。

  1. chr(): 这个函数接受一个整数参数,并返回对应的 ASCII 或 Unicode 字符。例如,chr(65) 将返回字符’A’,chr(97) 将返回字符’a’。
1
2
print(chr(65))  # 输出: A
print(chr(97)) # 输出: a
  1. str(): 这个函数用于将对象转换为字符串。它可以接受任何类型的参数,并返回其字符串表示形式。对于数字,它会将数字转换为相应的字符串;对于其他对象,它会调用对象的 __str__() 方法来获取字符串表示形式。
1
2
3
print(str(65))  # 输出: '65'
print(str(3.14)) # 输出: '3.14'
print(str([1, 2, 3])) # 输出: '[1, 2, 3]'

所以,chr() 函数是将整数转换为字符,而 str() 函数是将任意对象转换为字符串。

  • 标题: 数字统计
  • 作者: W1ndys
  • 创建于 : 2024-02-14 12:52:02
  • 更新于 : 2025-01-11 18:09:36
  • 链接: https://blog.w1ndys.top/posts/2e9ca8cf.html
  • 版权声明: 版权所有 © W1ndys,禁止转载。
评论