Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建具有条件的15位数字列表?_Python_List_Random_Numbers - Fatal编程技术网

Python 如何创建具有条件的15位数字列表?

Python 如何创建具有条件的15位数字列表?,python,list,random,numbers,Python,List,Random,Numbers,我想创建随机20个15位数字的列表,每个15位数字必须遵循1条规则 规则是,我希望这个15位数字由5个3位数字组成,其中第一位+第二位=第三位或者如果前两位的总和大于10,则第三位必须等于前两位总和的第二位。例如,如果第一位是5,第二位是8,第三位数字必须是3,因为5+8=13 我编写的代码使用相同的规则用15位数字填充列表,但它只适用于前三位数字 import random as rd def numchoose(start, end): arr=[] num=0 while num<2

我想创建随机20个15位数字的列表,每个15位数字必须遵循1条规则

规则是,我希望这个15位数字由5个3位数字组成,其中第一位+第二位=第三位或者如果前两位的总和大于10,则第三位必须等于前两位总和的第二位。例如,如果第一位是5,第二位是8,第三位数字必须是3,因为5+8=13

我编写的代码使用相同的规则用15位数字填充列表,但它只适用于前三位数字

import random as rd
def numchoose(start, end):
arr=[]
num=0
while num<20:
   a=(rd.randint(start, end))
   if int(str(a)[0]) + int(str(a)[1]) == int(str(a)[2]):
       arr.append(a)
       num+=1
   elif int(str(a)[0]) + int(str(a)[1]) > 10 and int(str(a)[2]) == int(str(int(str(a)[0]) +
int(str(a)[1]))[1])  :
      arr.append(a)
      num+=1
   else: continue


print(numchoose(100000000000000, 999999999999999))
将随机导入为rd
def numchoose(开始、结束):
arr=[]
num=0
而num 10和int(str(a)[2])==int(str(int(str(a)[0])+
int(str(a)[1]))[1]):
arr.append(a)
num+=1
其他:继续
打印(numchoose(10000000000000999999999))

如何编写此代码,使整个15位数字由符合规定规则的3位数字组成,并且前三位数字不是唯一符合规定规则的数字?

这似乎可行,但我将大数字替换为您希望数字的长度

import random as rd

def numchoose(len):
    number = ""
    for i in range(int(len/3)):
        a = rd.randint(0, 9)

        while i == 0 and a == 0:
            a = rd.randint(0, 9)

        b = rd.randint(0, 9)
        c = a + b

        if c >= 10:
            c -= 10

        number += str(a) + str(b) + str(c)

    return int(number)

print(numchoose(15))

这似乎有效,但我将大数字替换为您希望数字的长度

import random as rd

def numchoose(len):
    number = ""
    for i in range(int(len/3)):
        a = rd.randint(0, 9)

        while i == 0 and a == 0:
            a = rd.randint(0, 9)

        b = rd.randint(0, 9)
        c = a + b

        if c >= 10:
            c -= 10

        number += str(a) + str(b) + str(c)

    return int(number)

print(numchoose(15))

比@eav28更紧凑一些,但首先要感谢他们的回答:

import random

def NumberGen(Length):
    Number = ""
    for X in range(int(Length // 3)):
        A = random.randint(0, 9)
##      To drop leading zero's:
##      if X == 0 and A == 0:
##          A = random.randint(1, 9)
        B = random.randint(0, 9)
        C = A + B
        if C > 9:
            C -= 10
        Number += str(A) + str(B) + str(C)
    return Number

print(NumberGen(15))

我希望这能回答您的问题

比@eav28更简洁一些,但首先要感谢他们的回答:

import random

def NumberGen(Length):
    Number = ""
    for X in range(int(Length // 3)):
        A = random.randint(0, 9)
##      To drop leading zero's:
##      if X == 0 and A == 0:
##          A = random.randint(1, 9)
        B = random.randint(0, 9)
        C = A + B
        if C > 9:
            C -= 10
        Number += str(A) + str(B) + str(C)
    return Number

print(NumberGen(15))


我希望这能回答您的问题

更多地使用字符串。创建一个函数,根据转换为字符串的规则返回3位数字。调用这些函数5次,连接字符串,最后将其转换为int。我觉得这不是很随机的。您可以列出所有符合规则的3位数组合,并使用
random.choice
从中进行选择。更多地使用字符串。创建一个函数,根据转换为字符串的规则返回3位数字。调用这些函数5次,连接字符串,最后将其转换为int。我觉得这不是很随机的。您可以列出所有符合规则的3位数组合,并使用
random.choice
从中进行选择。if
i==1和a==0的值是什么?代码似乎工作得很好。我只是不太明白它是怎么工作的。你能更深入地解释一下吗?这可以防止第一个数字变成0,但可能有更好的方法来做到这一点@Evorage的答案更简洁,但是我认为如果你想让0成为一个数字,它不会起作用。不能在他的帖子上写这句话,因为他没有足够的声誉:)@eav28“如果代码中有一部分不清楚,只写巫婆部分,我可以试着尽可能地解释。”这就是为什么不鼓励只写代码的答案。虽然只使用代码的答案可能会回答这个问题,但您可以通过提供代码的上下文、此代码工作的原因以及供进一步阅读的一些文档参考来显著提高答案的质量。From:“简洁是可以接受的,但更全面的解释更好。”if
i==1和a==0是什么?代码似乎工作得很好。我只是不太明白它是怎么工作的。你能更深入地解释一下吗?这可以防止第一个数字变成0,但可能有更好的方法来做到这一点@Evorage的答案更简洁,但是我认为如果你想让0成为一个数字,它不会起作用。不能在他的帖子上写这句话,因为他没有足够的声誉:)@eav28“如果代码中有一部分不清楚,只写巫婆部分,我可以试着尽可能地解释。”这就是为什么不鼓励只写代码的答案。虽然只使用代码的答案可能会回答这个问题,但您可以通过提供代码的上下文、此代码工作的原因以及供进一步阅读的一些文档参考来显著提高答案的质量。From:“简洁是可以接受的,但更全面的解释更好。”如果你想避免前导零,你可以做一个简单的修改:
a=random.randint(如果数字为1,9,则为0)
@MarkRansom前导零有什么问题?当然,他们想要适当的随机数,他们也希望数字是一个特定的长度,前导零通常会被删除。另一个答案有这样的假设,我只是想指出,如果这真的成为一项要求,修改答案是多么容易。@Markransem我已经修改了我的答案,我希望它符合你的喜好?如果你想避免前导零,你可以做一个简单的修改:
a=random.randint(0如果数字为1,9)
@markransem前导0有什么问题?当然,他们想要适当的随机数,他们也希望数字是一个特定的长度,前导零通常会被删除。另一个答案有这样的假设,我只是想指出,如果这真的成为一项要求,修改你的答案是多么容易。@Markransem我已经修改了我的答案,我希望它符合你的喜好?