首页 > 解决方案 > 如何从多个列表项中生成两个数字?

问题描述

我正在尝试为我的大学制作一个程序,但我被困住了。我的第一个问题是启动程序时控制台中什么都没有。lista 应该有一些数据,但什么都没有。第二个问题是我不知道如何从列表项中生成一个数字。我必须得到两个数字,brojA 和 brojB。BrojA 应该是由列表项目第一部分的数字组成的数字,而 brojB 应该是列表中项目第二部分的数字。任何想法如何做到这一点?

def fun(R):
    lista = []
    import random
    for i in range(0, R+1):
        a = random.randint(0, 9)
        lista.append(a)
    print(lista)

这是问题所在,当我调用该方法时,列表中没有任何内容,但应该是 for 循环中的一些数字。

    prviBr = []
    drugiBr = lista
    for i in range(0, lista.length()/2):
        prviBr.append(lista[i])
        drugiBr.remove(drugiBr[i])
    brojA =
    brojB =

在这里,我需要从列表项的每个部分中获取两个数字。

def main():
    ok = 0
    while ok == 0:
        R = int(input('Unesi broj: '))
        if R % 2 == 0 and R > 7:
            ok = 1
    fun(R)


if __name__=='__main__':
    main()

它的版本 3.6 python。

标签: pythonpython-3.6

解决方案


这是一个工作代码。

def fun(R):
    lista = []
    import random
    for i in range(0, R):
        lista.append(str(random.randint(0, 9)))
    print(lista)

    brojA = int(''.join(lista[0:(R // 2)]))
    brojB = int(''.join(lista[(R // 2):]))
    print(brojA, brojB)

def main():
    while True:
        R = int(input('Unesi broj: '))
        if R % 2 == 0 and R > 7:
            break
    fun(R)


if __name__ == '__main__':
    main()

因此,让我解释您的问题,以便答案对您更有用。

第一个错误在这里:if __name__=='__name__':名称应该是__main__. 它不会打印任何内容,因为第一个if语句失败并且根本没有调用 main 函数。

其次,老实说,我不明白你的第二个代码片段的逻辑。在 python 中 this: drugiBr = listawith lists 通常没有用(看看这里)。除此之外,我不清楚你想要实现什么。

所以我使用字符串join()方法重写了这部分。首先,我将数字作为字符串保存在列表中:lista.append(str(random.randint(0, 9)))否则join()会引发错误。

在这里brojA = int(''.join(lista[0:(R // 2)])),我创建了数字。''.join()采用括号内的可迭代元素(应该是字符串)并创建一个连接它们的字符串。我使用整数除法运算符//(如果我写R / 2的结果是浮点数,并且切片失败)。切片在前半部分lista。相同的brojB,但在后半部分切片lista

我还重写了whitemain() 中的循环。你没有错,但我认为这更具可读性。

此脚本打印:

Unesi broj: 10
['5', '4', '7', '9', '6', '3', '0', '6', '6', '1']
54796 30661

当然 10 是我给出的输入,数字是随机的,但它显示了它是如何工作的。

希望能帮助到你。

编辑

我的错,我添加了一个不必要的 +1。现在是正确的,列表被分成了一半。


推荐阅读