• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sprawdzanie, czy istnieje klient o danej nazwie i wymuszenie zmianny nazwy

0 głosów
52 wizyt
pytanie zadane 24 stycznia w Python, Django przez El Lirón Użytkownik (920 p.)

Witajcie! Chciałbym, aby program pytał o nazwę klienta, sprawdzał czy już taka nazwa jest używana i jeśli tak, prosił o podanie nowej "aż do skutku" :) Niestety, programowi nie przeszkadza podanie dwóch takich samych nazw. Czy widzisz, gdzie jest błąd? Dziękuję z góry za pomoc!

plik z klasami:
 

class Transaction(object):

    def __init__(self):
        self.ask_value()

    def ask_value(self):
        self.value=int(input("Na jaką kwotę klient dokonał zamówienia? "))

class Customer(object):
    def __init__(self):
        self.transactions_list=[]
        self.ask_name()

    def ask_name(self):
        self.name=input("Proszę podać nazwę klienta: ")

    def check_name(self, list, n):
        if list == None:
            return n
        else:
            for c in list:
                if c.name==n:
                    print("Istnieje już klient o takiej nazwie!")
                    n=c.ask_name()
                    c.check_name(list, n)
                else:
                    return n

    def ask_first_transaction(self):
        self.answer=int(input("""
Czy chcesz dodać nową transakcję?:
Jeśli chcesz dodać transakcję - wybierz 1
Jeśli nie chcesz dodać transakcji
i chcesz wrócić do Menu - wybierz 2
"""))
        return self.answer

    def add_transaction(self):
        self.t=Transaction()
        self.transactions_list.append(self.t)

    def find_customer(self, list):
        self.wanted=input("Proszę podać nazwę klienta: ")
        for c in list:
            if c.name == self.wanted:
                self.found = c
                return self.found

główny:
 


# main menu
command=show_main_menu()
while command != 0:

    if command == 0:
        print("""
Koniec Pracy w Programie!
""")
    elif command == 1:
        new_customer=warehouse.Customer() # utworzenie nowego obiektu
        new_name=new_customer.check_name(customers_list, new_customer.name) #sprawdzanie nazwy
        new_customer.name=new_name # nadanie nowej nazwy lub nadanie tej samej nazwy
        customers_list.append(new_customer) # dodanie biektu do listy
        print(customers_list) # testowanie
        show_main_menu() # powrót do menu

    elif command == 2:
        print("2")
    else:
        command=show_main_menu()

 

1 odpowiedź

+1 głos
odpowiedź 25 stycznia przez Mr-root Gaduła (3,630 p.)
wybrane 28 stycznia przez El Lirón
 
Najlepsza

A gdybyś sprobował tak:

nazwa - nazwa podana przez użytkownika

lista_z_nazwami - lista z już istniejącymi nazwami

 

if nazwa in lista_z_nazwami:
    print("Podana nazwa użytkownika istnieje, podaj inna.")
else:
    return nazwa

albo opcja 2

if nazwa not in lista_z_nazwami:
    return nazwa
else:
    print("Podana nazwa użytkownika istnieje, podaj inna.")

Podobne pytania

0 głosów
0 odpowiedzi 71 wizyt
pytanie zadane 5 października 2016 w Python, Django przez azurek Początkujący (280 p.)
0 głosów
1 odpowiedź 58 wizyt
+2 głosów
3 odpowiedzi 847 wizyt
pytanie zadane 11 czerwca 2015 w Python, Django przez Kaspero Obywatel (1,990 p.)
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

66,984 zapytań

113,890 odpowiedzi

241,334 komentarzy

46,942 pasjonatów

Przeglądających: 218
Pasjonatów: 12 Gości: 206

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...