如何从多个列表项中得出两个数字?

时间:2019-01-20 17:53:47

标签: python python-3.6

我正在尝试为我的大学编写程序,但被卡住了。 我的第一个问题是启动程序时控制台中没有任何内容。 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。

1 个答案:

答案 0 :(得分:1)

这是工作代码。

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中,带有列表的drugiBr = lista通常没有用(请看here)。除了这一点,我还不清楚您想要实现什么。

因此,我使用字符串join()方法重写了这一部分。首先,我将数字另存为字符串:lista.append(str(random.randint(0, 9))),否则join()会引发错误。

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

我还重写了main()中的white循环。您没有错,但是我认为这更容易理解。

此脚本打印:

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

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

希望有帮助。

编辑

糟糕,我添加了不必要的+1。现在是正确的,列表被分成两半。