How can I use the results of one function inside another in python

2

Good afternoon, I'm studying python alone and I'm trying to do a little program with lists and functions, the program it will get 10 names and store in a list, then 10 notes and store in another list, so far so good, the problem is that I can not get the result of the functions, ie the lists and use a "final" function to show on the screen.

What happens is that when I finish executing the last function the program terminates and returns nothing. Here is the code:

def preencher_nome(): #função para o usuario preencher uma lista com 10 nomes
lista = []
contador = len(lista)
while contador <= 9:
    lista.append(str(input("Digite o nome do aluno ")))
    contador = contador + 1
n = int(input("\nAgora você terminou de preencher os nomes, digite 2 para preencher as notas\n"))
if n == 2:
    preencher_notas()
return lista

def preencher_notas(): #função para o usuario preencher uma lista com 10 notas
    print("Agora você poderá preencher as notas\n")
    print("\n\n")
    notas = []
    count = len(notas)
    while count <= 9:
        notas.append(int(input("Digite a nota dos alunos obedecendo a sequencia dos nomes")))
        count = count + 1
    return notas
def main():
    print("Olá\n")
    x = int(input("Digite 1 para começar a preencher o nome dos estudantes\n"))
    if x == 1:
        preencher_nome()
    else:
        print("Opção Inválida")




main()
    
asked by anonymous 30.09.2017 / 16:41

2 answers

1

Your python algorithm has some logic errors. starting with the fill_name () function:

def preencher_nome(): 
lista = []
contador = len(lista)
while contador <= 9:
    lista.append(str(input("Digite o nome do aluno ")))
    contador = contador + 1
    n = int(input("\nAgora você terminou de preencher os nomes, digite 2 para preencher as notas\n"))
    if n == 2: 
        preencher_notas()
    return lista

When testing the conditional 'if n == 2' you only have one option, which ends up forcing the output of the loop if you type something other than '2' and consequently registering only one student in the list. p>

Therightthingtodowouldbe:

defpreencher_nome():#funçãoparaousuariopreencherumalistacom10nomeslista=[]contador=len(lista)whilecontador<=9:lista.append(str(input("Digite o nome do aluno ")))
    contador = contador + 1

print ('Você cadastrou o numero total de alunos, em seguida preencha as notas.')
preencher_notas()
return lista

Sinceyoualreadyhaveadelimiterinyourwhileloopforinputof10names.

Keepingthisinmindlet'sgotoyourproblem.ThereasonyoucannotusethevalueofthelistsisbecausetheyarecreatedWITHINofthefunction.Thatwayitexists,sotospeak,justasfarasthefunctionisrunning.Therightthingtodoistodeclaretheout-of-functionliststobeglobal'elements'ofyourcodeandpasstoyourfunction:

nomes=[]notas=[]defpreencher_nome(lista):#Passesualistaparaafunçãocontador=len(lista)whilecontador<=9:nomes.append(str(input("Digite o nome do aluno ")))
    contador = contador + 1

print ('Você cadastrou o numero total de alunos, em seguida preencha as notas.')
preencher_notas(notas) #Quando chamar sua função não esqueça de passar a lista como argumento
return lista

def preencher_notas(notas): #função para o usuario preencher uma lista com 10 notas
print("Agora você poderá preencher as notas\n")
print("\n\n")
count = len(notas)
while count <= 9:
    notas.append(int(input("Digite a nota dos alunos obedecendo a sequencia dos nomes")))
    count = count + 1
return notas

def main():
    print("Olá\n")
    x = int(input("Digite 1 para começar a preencher o nome dos estudantes\n"))
    if x == 1:
        preencher_nome(nomes)
    else:
        print("Opção Inválida")


log = main()

print (nomes)
print (notas)

OBS:Contrarytowhatmanypeoplesay,itisnotwrongtostartlearninghowtoprogramdirectlyinaprogramminglanguage.PythonisgreatforthisandIadviseyoutofollowthispath.Butasyouprogressandneedtomakemorecomplexprograms,differentknowledgewillberequiredofyou.ThenreadaboutAlgorithms,Database,DataStructureetc...Soyoubecomeamorecompleteprogrammer.

IhopeIhavehelpedyou.Hereisa book recommendation that helped me a lot in the beginning. Hugs

    
30.09.2017 / 21:06
0

You do not see anything because you did not print. Everything you want to see in the terminal needs to be printed. Its function returns the list, but not printa. That's why you do not see anything. Tip: Within your if n == 1 replace the line preencher_notas() with print preencher_notas() .

  

Note: I do not know if you want to run what's in the first function as well, but if you want you need to call it too.

    
30.09.2017 / 20:09