2017-08-16 3 views
0

Je veux ajouter la date2 de cette fonction dansComment ajouter une variable d'une autre fonction python3

def date_register(): 
    print("Enter date of registration") 
    year = int(input("Enter a year: ")) 
    month = int(input("Enter a month: ")) 
    day = int(input("Enter a day: ")) 
    date1 = datetime.date(year,month,day) 
    date2 = date1 + timedelta(days = 140) 
    print("Check out date:",date2) 

cette fonction et il est sorti date2 n'est pas défini

def update_A(row): #to update the roomA 
    if len(roomA[row]) < 2: #if roomA is less than 2 
     name = input("Enter your name here: ") 
     print(date_register()) 
     roomA[row].append((name,date2)) 
     print("Your room no. is {} at row {}".format(roomA[row].index((name,date2))+1,row)) 
     print(Continue()) 

A la recherche de l'aide merci

+0

Mon ami, vous avez oublié de 'renvoyer 'le résultat de la fonction' date_register' pour le rendre disponible dans 'update_a'. –

+0

Pourriez-vous fournir la solution? – Jordan

Répondre

1

J'ai corrigé un ou deux autres erreurs mineures.

import datetime 

def date_register(): 
    print("Enter date of registration") 
    year = int(input("Enter a year: ")) 
    month = int(input("Enter a month: ")) 
    day = int(input("Enter a day: ")) 
    date1 = datetime.date(year,month,day) 
    date2 = date1 + datetime.timedelta(days = 140) 
    print("Check out date:",date2) 
    return date2 

def update_A(row): #to update the roomA 
    if len(roomA[row]) < 2: #if roomA is less than 2 
     name = input("Enter your name here: ") 
     checkout_date = date_register() 
     print(checkout_date) 
     roomA[row].append((name,checkout_date)) 
     print("Your room no. is {} at row {}".format(roomA[row].index((name,checkout_date))+1,row)) 

roomA = {1: []} 
update_A(1) 

Voici la sortie.

Enter your name here: John 
Enter date of registration 
Enter a year: 1954 
Enter a month: 7 
Enter a day: 12 
Check out date: 1954-11-29 
1954-11-29 
Your room no. is 1 at row 1 

Apparemment, vous avez besoin de travailler sur la façon d'imprimer la date de départ.

2

date2 n'est pas définie car elle ne fait pas partie du domaine update_A Veuillez lire here pour plus informations sur le champ d'application.

Vous semblez aussi être source de confusion return et print

En update_A, vous écrivez print(date_register()) mais date_register ne retourne rien à imprimer.

print envoie des représentations de chaîne à la console et ne peut pas être utilisé pour l'affectation. Au lieu de cela, utilisez return qui force fondamentalement un appel de fonction à résoudre à la valeur à côté de l'instruction return. Par exemple:

def foo: 
    return "bar" 
print(foo()) 

quand foo est appelé, il résoudra à "bar" qui est ensuite imprimé sur la console. pour en savoir plus sur la différence et l'utilisation des print() et return voir here

Pour utiliser date2 dans update_A vous devez le retourner et lui affecter comme suit:

def date_register(): 
    print("Enter date of registration") 
    year = int(input("Enter a year: ")) 
    month = int(input("Enter a month: ")) 
    day = int(input("Enter a day: ")) 
    date1 = datetime.date(year,month,day) 
    date2 = date1 + timedelta(days = 140) 
    print("Check out date:",date2) 
    return date2 
def update_A(row): #to update the roomA 
    if len(roomA[row]) < 2: #if roomA is less than 2 
     name = input("Enter your name here: ") 
     date2 = date_register() #assign date2 returned value 
     print(date2) 
     roomA[row].append((name,date2)) 
     print("Your room no. is {} at row {}".format(roomA[row].index((name,date2))+1,row)) 
     print(Continue())