如何在所选值范围中添加数字总和?

时间:2016-01-29 04:23:27

标签: python integer

我正在尝试使用Python中的forwhile循环打印100到999之间的每个值,其整数加起来等于7

这是我到目前为止所拥有的,但是一旦我有三位数,我就不知道该怎么做了。

three_digit = range(100,999,1)
dig1 = three_digit/10
dig2 = dig1/10
dig3 = dig1%10
lucky7 = (dig1+dig2+dig3)
print '' ,lucky7,

5 个答案:

答案 0 :(得分:1)

Stack Overflow不鼓励为您编码所有内容,所以这里有一些提示:

将三位数字分成单个数字

熟悉模数(%)和地板分割(//)。这些将帮助您挑出数字中的数字,而无需将其转换为字符串。

循环

您可能希望使用基于范围的for循环,其语法为for my_variable in range([enter your range])。在此循环中,您可以添加条件(if语句),以打印出符合条件的数字。

答案 1 :(得分:1)

如果你有空,自己创建循环,则无需开始转换值。只需使用三个循环即可创建所有可能的值。

for x in range(1, 10): # hundreds
   for y in range(0, 10): # tens
       for z in range(0,10): # ones
           if (x + y + z) == 7 :
               print (x,y,z)

给出

(1, 0, 6)
(1, 1, 5)
(1, 2, 4)
(1, 3, 3)
(1, 4, 2)
(1, 5, 1)
(1, 6, 0)
(2, 0, 5)
(2, 1, 4)
(2, 2, 3)
(2, 3, 2)
(2, 4, 1)
(2, 5, 0)
(3, 0, 4)
(3, 1, 3)
(3, 2, 2)
(3, 3, 1)
(3, 4, 0)
(4, 0, 3)
(4, 1, 2)
(4, 2, 1)
(4, 3, 0)
(5, 0, 2)
(5, 1, 1)
(5, 2, 0)
(6, 0, 1)
(6, 1, 0)
(7, 0, 0)

答案 2 :(得分:0)

您的dig1是2位数字,因此它自身总是超过7位数。例如500/10 = 50。

看看this example (which is in c but should guide you)

我认为更简单的方法是对数字进行字符串化,然后将这些数字加起来:

for three_digit in range(100,999,1):
    digits = str(three_digit)
    sum_of_digits = (int(digits[0]) + int(digits[1]) + int(digits[2]))
    if sum_of_digits == 7:
        print (str(three_digit) + " is lucky")

答案 3 :(得分:0)

我是列表推导的粉丝:

ans = [x for x in range(100,999) if sum([int(char) for char in str(x)])==7]

您可以在此处阅读有关列表推导的信息:http://www.secnetix.de/olli/Python/list_comprehensions.hawk

答案 4 :(得分:-1)

您没有使用任何循环,您将无法打印每个数字。 这是您正确的代码:

for i in range(100,999,1):
    digits = str(i)
    sum=(int(digits[0]) + int(digits[1]) + int(digits[2]))
    print sum