Python 如何在选定的值范围内添加数字之和?

Python 如何在选定的值范围内添加数字之和?,python,integer,Python,Integer,我正在尝试使用Python中的for或while循环打印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, 您的dig1是2位数字,因此仅凭其本身,它将始终大于7位。例如,5

我正在尝试使用Python中的
for
while
循环打印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,

您的
dig1
是2位数字,因此仅凭其本身,它将始终大于7位。例如,500/10=50

看一看

我认为更简单的方法是将数字字符串化,然后将整数相加:

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")

堆栈溢出不鼓励为您编码所有内容,因此以下是一些提示:

把一个三位数的数字分解成一位数 熟悉模数(
%
)和楼层划分(
/
)。这些将帮助您在不必将数字转换为字符串的情况下挑出数字中的数字

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

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

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)
给予


我是列表理解的粉丝:

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

你可以在这里阅读关于列表理解的内容:

你的
for
while
循环在哪里?这就是我迷路的地方,我不知道如何让它工作,我猜当dig1+dig2+dig3=7时它会是什么样子:打印三位数?打开一个python终端,尝试以交互方式处理这个问题。在这种情况下,您无法通过第一行而不出错。阅读
中的
循环和
if
语句。是一个很好的资源。谢谢你,我会研究一下,将你的范围内的step(third)参数显式设置为1是不必要的,因为1-step是默认值。
ans = [x for x in range(100,999) if sum([int(char) for char in str(x)])==7]