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

Asked

Viewed 7,513 times

2

Good afternoon, I’m studying python alone and I’m trying to do a little programming with lists and functions, the program it will receive 10 names and store in a list, then 10 notes and store in another list, so far so good, the problem is that I am not able to make me take the result of the functions, ie 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. Follow 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()
  • You need to do something like nomes = preencher_nome(). I advise you to study algorithms before studying a programming language. Learning algorithms tends to be easier than learning these basic concepts directly in the language.

2 answers

1


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

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 offer only one option, which ends up forcing the output of the loop if you type something other than '2' and consequently the registration of only one student in the list.

inserir a descrição da imagem aqui

The right thing to do would be:

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

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

inserir a descrição da imagem aqui

Once you already have a delimiter in your while loop for input of 10 names.

With that in mind, let’s get to your problem. The reason Voce cannot use the list value is because the lists are created WITHIN of the function. Thus it exists, so to speak, only in how much the function is rotating. The right thing to do is to declare the lists out of office so that they are 'elements' of your code and afterward passes to your function:

nomes = []
notas = []

def preencher_nome(lista): #Passe sua lista para a função
contador = len(lista)
while contador <= 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)

inserir a descrição da imagem aqui

OBS : Contrary to what many say, it is not wrong to start learning to code directly in a programming language. Python is great for this, and I would advise you to go that way. But as it progresses and needs to make more complex programs, different knowledge is being requested from Oce. Then read also about Algorithms, Database, Data Structure etc... So you become a more complete programmer.

I hope I helped you. Follows a recommending of a book that helped me a lot at first. Hugs

0

You don’t see anything because you didn’t print it out. Everything you want to see in the terminal needs to be printed out. Your function returns the list, but it doesn’t print. That’s why you don’t see anything. Hint: Inside your if n == 1 replace the line preencher_notas() for print preencher_notas().

Note: I do not know if you want to run what is in the first function too, but if you want to call it too.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.