Python 实现获取 1 到 n 所有整数中,x (0 ≤ x ≤ 9)出现的次数

先看个例子,假设 1 到 11 中,要统计 1 出现的次数,那能进行 count 操作的就是 1, 10, 11 ,次数为 4 。

原理懂了之后就用代码来实现这一操作。首先我用range()来生成一个 1 到 n 的区间,在这个区间内进行统计操作。接下来定义一个 n ,用来接收用户自己定义的最大范围-1 (因为range是不包含最大的),还要定义 x 用来接收用户想要统计的数。

n = int(input("最大范围(-1): "))
x = int(input("输入要统计的数: "))
count = 0

接下来就是条件判断了,在 1 到 9 的区间内,可以用恒等的条件来判断,而大于 10 后就是两位数或者三位数以上,所以这个这个时候的判断逻辑就是先看个位数有没有 x ,然后把个位数去掉,再看最后一位有没有 x ,由此类推。

y = 0
for i in range(1, n):
    if(0 < i < 10):
        if(i == x):
            count += 1
    else:
        while(i != 0):
            # 判断 i 的最后一位等不等于 x,等于count+1
            y = i % 10
            if (y == x):
                count += 1
            # 去除 i 的最后一位数
            i = i // 10

上面定义了个 y 来接收一下 i ,用 y 来进行求余操作,防止 i 的值被覆盖掉 ,从而传到后面进行去除最后一位操作,while 的循环条件就是一直取到 i 的最高位等于 0 而跳出循环。

# 数学逻辑:先个位判断,再到十位及以上
n = int(input("最大范围(-1): "))
x = int(input("输入要统计的数: "))
count = 0
y = 0
for i in range(1, n):
    if(0 < i < 10):
        if(i == x):
            print(i)
            count += 1
    else:
        while(i != 0):
            # 判断 i 的最后一位等不等于 x,等于count+1
            y = i % 10
            if (y == x):
                print(y)
                count += 1
            # 去除 i 的最后一位数
            i = i // 10
print(f"{x}出现次数是:{count}")

还有一种实现方法就是把 i 和 x 变成串,只需要遍历字符串 i 的值中有恒等于 字符串 x 的值就进行 count 操作就行。

def num(n, x):
    count = 0
    for i in range(1, n):
        # 判断 str(x) 在不在 str(i) 中,有就进 if
        if str(x) in str(i):
            for j in str(i):
                if str(x) == j:
                    count += 1
    return count

n = int(input("最大范围(-1): "))
x = int(input("输入要统计的数: "))
print(f"{x}的次数为:{num(n, x)}")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值