Jestem nowym programistą Python, który robi skok z wersji 2.6.4 do wersji 3.1.1. Wszystko poszło dobrze, dopóki nie spróbowałem użyć wyrażenia „else if”. Interpreter podaje mi błąd składniowy po „if” w „else if” z powodu, którego nie mogę zrozumieć.
def function(a):
if a == '1':
print ('1a')
else if a == '2'
print ('2a')
else print ('3a')
function(input('input:'))
Prawdopodobnie brakuje mi czegoś bardzo prostego; jednak nie byłem w stanie sam znaleźć odpowiedzi.
python
python-3.x
Paul Turner
źródło
źródło
Odpowiedzi:
W python „else if” jest napisane „elif”.
Ponadto potrzebujesz dwukropka po
elif
ielse
.Prosta odpowiedź na proste pytanie. Miałem ten sam problem, kiedy zaczynałem (w ciągu ostatnich kilku tygodni).
Twój kod powinien więc brzmieć:
źródło
elsif
, chyba Python musiał być, że jedna postać bardziej wydajne. Wydaje się, że „Elif” pochodzi z preprocesora C, który był używany na#elif
długo przed Pythonem AFAICT. Oczywiście w tym kontekście posiadanie dyrektywy jednokokenowej jest cenne, ponieważ parsowanie#else if <code>
vs.#else <code that could theoretically even be an if statement>
skomplikowałoby składnię, która miała być łatwa.Czy masz na myśli
elif
?źródło
źródło
od dawna poprawna składnia
if/else if
w Pythonie toelif
. Nawiasem mówiąc, możesz użyć słownika, jeśli masz dużoif/else
.egDla msw, przykład wykonywania funkcji przy użyciu słownika.
źródło
elif
.exec
ich. Czy to dobra praktyka? Czy możesz podać przykład?<foo>
jest takado_foo
, możesz nawet zbudować dykta w locie, gdy aplikacja się uruchomi..get
metodę, która pozwala określić wartość domyślną. Twój pierwszy przykład można zapisać jakoprint d.get(a, "3a")
Oto trochę refaktoryzacji twojej funkcji (nie używa ona „else” ani „elif”):
@ ghostdog74: Python 3 wymaga nawiasów do drukowania.
źródło
('1', '2')
, op używa ciągów znakówNależy poprawić do:
Jak widać, w przeciwnym razie, jeśli należy zmienić na elif, po „2” powinny znajdować się dwukropki, a po instrukcji else powinien znajdować się nowy wiersz i zamknąć spację między drukiem a nawiasami.
źródło