• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
169 wizyt
pytanie zadane 24 stycznia 2019 w Python przez El Lirón Obywatel (1,350 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 2019 przez Mr-root Gaduła (3,750 p.)
wybrane 28 stycznia 2019 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
3 odpowiedzi 609 wizyt
pytanie zadane 28 lutego 2020 w PHP przez Hardwell Dyskutant (8,980 p.)
0 głosów
2 odpowiedzi 941 wizyt
–4 głosów
1 odpowiedź 363 wizyt
pytanie zadane 18 kwietnia 2021 w Python przez Bunia Nowicjusz (160 p.)

93,112 zapytań

142,092 odpowiedzi

321,631 komentarzy

62,453 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...