Python 3 builtins.NameError: nazwa globalna - - - undefined -
Potrzebuję tutaj wskazówek. To chyba głupi błąd, ale pojawia się błąd „builtins.NameError: global-name-undefined” i nie rozumiem dlaczego - nadal uczę się języka :).
Oto mój kod:
def option(x):
if x == "E":
enter()
elif x == "V":
view()
else:
exit()def enter():
msg = input("Enter the message\n")
main()def view():
##if msg == 0:
#print("no message yet")
#main()
#else:
print("The message is:", msg )
main() def exit():
print("Goodbye!")
def main():
print("Welcome to BBS")
print("MENU")
print("(E)nter a message")
print("(V)iew message")
print("e(X)it")
print("Enter your selection:")
choice = input()
option(choice)
#msg = 0main()
Mój problem polega na tym, że otrzymuję to, mimo że najpierw wybieram opcję „E”:
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 36, in <module>
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 33, in main
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 3, in option
pass
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 11, in enter
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 33, in main
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 5, in option
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 18, in view
builtins.NameError: global name 'msg' is not defined
Mógłbyś mnie wyprowadzić? Szukałem informacji i nic nie znalazłem, i dochodzę do wniosku, że jest to prawdopodobnie coś naprawdę głupiego i noobowego.
Ponadto, jak widzicie z tego, co skomentowałem, próbowałem ograniczyć „widok” przed wyrzucaniem błędu, sprawdzając, czy msg! = 0 - zrobiłem msg = 0 w main () - to oczywiście nie działa, ponieważ po przekazując enter (), wraca do main () i znowu msg == 0. Czy moglibyście połączyć mnie ze stroną/instrukcją, która pomoże mi znaleźć rozwiązanie tego problemu? Nie chcę być tak często karmiony łyżką ...
Podziękować,
Itachi
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
światowy
zmienna, która zachowuje swoją wartość nawet po zwróceniu funkcji, użyj instrukcji :
Jednak globalne często nie są najlepszym sposobem robienia rzeczy. Może lepiej byłoby, gdyby funkcja zwracała wiadomość, zamiast przechowywać ją w zmiennej.
Anonimowy użytkownik
Potwierdzenie od:
Każda z tworzonych funkcji powinna być niezależna i mieć proste wejścia i wyjścia.
to punkt wejścia i w razie potrzeby powinien wywoływać inne funkcje.
Funkcje te powrócą do wywołującego po zakończeniu wykonywania. Mogą, aw niektórych przypadkach powinni, zwrócić pewną ilość danych z powrotem do swojego abonenta.
Na przykład, oto podzbiór Twojego problemu, pokazujący, jak wywołuje , a następnie zwraca: