繁体   English   中英

如何生成3位数字的列表?

[英]how to generate a list of 3-digit numbers?

如何生成一个三位数的列表,其数字总和等于17?

例如,假设数字XYZ ,则X+Y+Z=17

这是我走了多远:

numbers = list(range(1, 1000))

看来,想要的数字之和是17,而不是作为该数字的总和“但我想第一个数字+第二个数字+第三数= 17?” 暗示。

因此,看看这个:

result = [x for x in range(100, 1000) if sum(int(y) for y in str(x))==17]
print(result)  # [179, 188, 197, 269, ..., 962, 971, 980]

您可以首先生成一个符合您条件的数字列表,例如,

test_list = [value for value in range(100, 1000, 1) if sum(int(a) for a in str(value)) is 17]

因此,要使其成为随机列表,可以使用random包。

random.shuffle(test_list)

因此test_list将是一个完全随机的列表,其中包含所有可能的三位数。 因此,这可能是生成符合您条件的随机列表的最快方法。 随机播放

希望这可以帮助!

免责声明:此方法将是随机的,您可以重复。 如果您想要一个详尽的唯一数字列表,它将不起作用,您可能更喜欢Ev。 Kounis的解决方案。

在这里,我们选择2个数字,它们的总和在8到17之间,然后计算所需的第三个数字加起来等于17。

前2位数字的总和必须为:

  • 8个或更多,因为最后一位数字最多可以有9个

  • 小于等于17,因为末位数不能为负数

这条路:

import random 

def getAnotherNumber():
    d1 = 0
    d2 = 0
    while 17 < d1 + d2 or  d1 + d2 < 8:
        d1 = random.randrange(1, 10)
        d2 = random.randrange(1, 10)
    d3 = 17-d1-d2
    return  100*d1 + 10* d2 + d3

# Make a list of 10 numbers    
list = [getAnotherNumber() for x in range(10)]

print(list)

输出如下所示:

[773, 746, 980, 179, 269, 179, 755, 485, 755, 476]

如果您需要更多评论,和/或如果我做的不是您的要求(以某种方式),请告诉我。 :)

#   All numbers having 3 digits.
numbers = [x for x in range(100, 1000)]

newList = []
for number in numbers:
    #   Integer to string.
    str_number = str(number)

    #   Separating digits using strings, and casting result to int.
    real_a = int(str_number[0])
    real_b = int(str_number[1])
    real_c = int(str_number[2])

    # Summing, and checking result.
    digitsSum = real_a + real_b + real_c
    if digitsSum == 17:
        newList.append(number)

print newList
## Sum of digits of individual number
def sum_digits(n):
    s = 0
    while n:
        s += n % 10
        n //= 10
    return s

if __name__ == '__main__':

    ## Declare a list
    alist = list()

    ## Iterate from 100 - 1000
    for x in range(100,1000):
        tmp = sum_digits(x)

        ## Add to list once its sum is equal to 17
        if tmp ==  17:
            alist.append(x)

    print alist

暂无
暂无

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

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