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