Cześć wszystkim, więc jestem nowy i wypróbowuję pętle w Pythonie, proszę, ciągle powielam swój wynik, dlaczego tak jest?

cleanHello = 'you asked about clean hello'
greetings = 'hi'

def main():
    while True:
        try:
            userInput = input('user: ')
            for x in userInput:
                if x in greetings:  
                    print(cleanHello)
        except(KeyboardInterrupt, EOFError, SystemExit):
            break

main()    
0
Vince V Vanhoyte 6 marzec 2020, 06:05

2 odpowiedzi

Najlepsza odpowiedź

Kiedy to zrobisz for x in some_string, x zapętla każdy znak w ciągu.
Więc jeśli Twoim userInput jest "hi",
W pierwszej pętli x to "h", więc jest w "hi".
W drugiej pętli x to "i", więc jest również w "hi".
Więc wydrukuje dwa razy. Jeśli twoje greetings i userInput to ten sam ciąg z n literami, wydrukuje n razy.


Myślę, że próbujesz to zrobić.

cleanHello = 'you asked about clean hello'
greetings = ['hi'] # add more greetings if needed

def main():
    while True:
        try:
            userInput = input('user: ')
            if userInput in greetings:  
                print(cleanHello)
        except(KeyboardInterrupt, EOFError, SystemExit):
            break

main() 

To wypisuje cleanHello, jeśli userInput jest jednym z powitań.

0
vvarsa 6 marzec 2020, 03:17
for x in userInput:
    if x in greetings:
        ...

Iterujesz po każdym znaku wprowadzanym przez siebie i sprawdzasz, czy ten pojedynczy znak jest w pozdrowieniach lub „cześć”.

Możesz próbować to zrobić:

cleanHello = 'you asked about clean hello' 
greetings = 'hi' 

def main(): 
    while True:
        try: 
            userInput = input('user: ') 
            if greetings in userInput:
                print(cleanHello)
        except(KeyboardInterrupt, EOFError, SystemExit): 
            break 

main() 

Jeśli wpiszesz „przywitaj się”, sprawdzi, czy we wpisanym tekście znajduje się „cześć”, a następnie wydrukuje cleanHello.

1
010011100101 6 marzec 2020, 05:36