首先,我们先来看这道题:
接着我们写一下解题思路:
思路一:
由于我们需要对这2020个数进行是否有2的判断,所以我们首先应该遍历1-2020,然后对每一个数上面的各十百千位上的数字进行一个“是否是2”的判断,是的话就进行计数。所以我们的代码就要实现三个部分:1.遍历 2.求得各个位上的数 3.判断每一位上的数是不是2,是就进行累加
附上正确输入的代码:
import os
import sys
sum=0
for i in range(1,2021):
g = i %10
s = i//10%10
b = i//100%10
q = i//1000%10
if g == 2:
sum+=1
if s == 2:
sum+=1
if b == 2:
sum+=1
if q == 2:
sum+=1
print(sum)
思路二:遍历这2020个数,将每一个数转化为字符串,用list()函数将每一个字符串数字转变为单个元素的数列,遍历这些数列,找到为2的数并进行累加
首先看list()函数将字符串转换为一个由单个字符组成的列表:
i=100
a = str(i)
b = list(a)
print(a)
print(b)
附上第二种方法的代码,采用了封装函数:
def work_1():
count = 0
for i in range(1,2021):
a = list(str(i))
for j in a:
j=int(j)
if j == 2:
count+=1
return count
print(work_1())
思路三:利用count()函数。将这些数都一个个变成字符串形式并连接成一个总的字符串,然后用count()函数对字符串中的某个字符进行计数,然后输出,代码如下:
# 首先定义一个空字符串
s = ''
# 遍历1到2022,这些数转换成字符串并连接起来
for i in range(1,2021):
s += str(i)
# 输出字符串中‘2’的数量
print(s.count('2'))