首页 > 解决方案 > 使用 5 的倍数作为变量更容易使用模数

问题描述

我对 Python 比较陌生,而且一般都在编码(第一学期,计算机科学入门,我不是计算机科学专业的学生。),而家庭作业让我试图弄清楚两个数字之间有多少个数字包含“ 5" (例如在 105 和 168 之间有 16 个包含 5 的数字。)我开始我的代码:

def give_me_five(start, end):
    ctr = start
    max = end
    numberoffives = 0
    while ctr <= end:
        print (ctr)
        if ctr % 5 == 0 and (ctr % 10 != 0):
            elif ctr % 5 == 0 and (ctr % 10 == (somethingsomethingmultiplesof5)
        numberoffives += 1
    if ctr // 10 == 5:
        numberoffives += 1
    ctr += 1

return numberoffives

我遇到的问题是我不能用它来检查 50s、150s 等的数字...我尝试使用 ctr % 5 == 0 和 (ctr % 10 == ) 位尝试并包括它们,但现在我根本想不出办法,坦率地说,我觉得我把事情复杂化了。有人对如何使我的代码真正起作用有任何建议吗?

标签: pythonpython-3.x

解决方案


如果我理解正确,我们想做:对于x范围内的每个数字,检查它的任何数字digit是否等于 5。

我们如何做到这一点?

我们可以做的一件事是转换 digit => 字符串,然后检查子字符串 '5' 是否存在。但这是一个幼稚的解决方案,需要更多的内存和时间将所有数字存储到一个字符串中(而不是表示现有 int 所需的几个字节)。

所以更聪明的方法是不断提取最低有效数字 ( digit = x % 10),检查if digit == 5,然后将最低有效数字除以重复 ( x //= 10 WHILE x > 0)。


推荐阅读