繁体   English   中英

找出所有能被 10 整除且小于 n 的正数

[英]Find all positive numbers divisible by 10 and less than n

我需要找到所有可被 10 整除且小于 n 的正数,我发现了一个具有相同问题的字符串,但我很难解释它,因为用户使用的是 java,因此代码非常不同且令人困惑。

我试图通过将我检查过的代码拼凑在一起来制作一个代码,但它只有在它可以被其他数字整除时才有效,如果它是 10,它将以 0 永远持续下去。

n = int(input("Enter a number: "))
x = 0
while x < n :    
    r = n % 10
    if r % 10 != 0 :
        x = x + r
print("positive numbers divisible by 10 ", x)

下面是更简单的代码,它有助于获得可被 10 整除且小于 n 的数字列表:

n = int(input("Enter a number n: "))
divisibleBy10 = []
for i in range(0, n):
    if i % 10 == 0:
        divisibleBy10.append(i)

print(divisibleBy10)

你可以这样做:

n = 100
i = 0
while i<n:
    if i%10==0:
        print(i)
    i+=1

下面的这段代码试图减少循环次数。 如果“x”非常大,则有助于优化解决方案。 这个想法是不要对从 1 到 n-1 的每个数字进行可分性检查。 在这里,我们使用可被 10 整除的最小正数是 10。下一个感兴趣的数是 10 + 10 = 20,因此跳过数字 11 到 19。这有助于提高性能。

x = input('Enter any number ')
y = 10
while y < x:
    print(y)
    y = y + 10

您还可以尝试以下操作:

# grab the user's input
n = int(input('please enter a number: '))
# set x to 0, so the while loop can stop when 'n' is greater than '0'
x = 0
while n > x:
    if n % 10 == 0:
        print('{} is divisible by 10.'.format(n))
    n -= 1

所以基本上循环以用户输入的值进入,比方说10

  • 10大于0吗? 是的(while 循环执行), if语句使用mod计算余数。 打印该值因为 if 语句计算True ,余数等于0。 最后,n减1
  • 9大于0吗? 是的(while 循环执行), if语句使用mod计算余数。 该值打印,因为 if 语句计算False ,余数等于零。 最后,n减1
  • 8大于0吗? 是的(while 循环执行), if语句使用mod计算余数。 该值打印,因为 if 语句计算False ,余数等于零。 最后,n减1

...

依此类推,直到n达到0 ,while 循环停止,因为0不大于0

我认为使用内联 for 循环:

print([i for i in range(10,n,10) if i % 4 == 0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM