Jak napisać kod składający się z więcej niż 1 linii w interpreterie Python?

35

Mam problem z kodowaniem Pythona w terminalu. Uczę się tylko podstaw, więc nie muszę tworzyć plików .py.

W terminalu mogę uruchomić jedną linię kodu w interpretatorze Pythona, ale jak napisać więcej niż jedną linię?

Oczywiście, jeśli wcisnę Enter, wejdzie w komendę i nie przejdzie przez linię.

Chcę tylko przetestować następujące w terminalu:

my_age = 35
my_eyes = 'Blue'
print "my age is %d and my eye color is %s" % (my_age, my_eyes)

źródło
1
Podejrzewam, że masz problemy z „wcięciem”. A. wpisz „python”. B. >>> pojawia się. C. Aby uruchomić skrypt, skrypt musi być odpowiednio wcięty „tabulatorami”.
r4.
3
Nie pytałem, czy moja droga jest prawidłowa, czy nie ... Zadałem konkretne pytanie, jeśli znasz odpowiedź, proszę ... jeśli nie ...

Odpowiedzi:

32

Dodaj końcowy ukośnik odwrotny ( \)

Sztuką jest - podobnie jak na przykład to, co byś zrobił bash- dodawanie końcowego ukośnika odwrotnego. Na przykład, jeśli chcę wydrukować 1:

charon:~ werner$ python
>>> print 1
1
>>> print \
... 1
1
>>> 

Jeśli napiszesz \, Python poprosi cię ...(kontynuacja) o wprowadzenie kodu w następnym wierszu, że tak powiem.

Uwaga dodatkowa: tak dzieje się automatycznie, gdy tworzysz definicję funkcji lub klasy, tzn. Kiedy naprawdę potrzebujesz nowej linii, więc nigdy nie ma do niej naprawdę dobrego zastosowania, a przynajmniej żadnej, o której wiem. Innymi słowy, Python jest wystarczająco inteligentny, aby mieć świadomość, że potrzebujesz linii kontynuacyjnych, gdy wprowadzasz nową definicję funkcji lub inne podobne konstrukcje (np if:.). W tych automatycznych przypadkach pamiętaj, że musisz wprowadzić pusty wiersz, \aby powiedzieć Pythonowi, że skończyłeś.

W pozostałym zakresie musisz pisać jeden wiersz po drugim. Tłumacz działa w ten sposób, że interpretuje każdą linię, którą go podajesz. Nie więcej, nie mniej. Będzie „działał” tylko wtedy, gdy zobaczy nowy wiersz, a zatem poleci tłumaczowi wykonanie tego, co mu dałeś. Pojedynczy ukośnik odwrotny uniemożliwi interpreterowi otrzymanie znaku nowej linii (tzn. Nie będzie wiedział, że faktycznie nacisnąłeś Enter), ale ostatecznie go otrzyma.

Interpretator Pythona ma zaawansowane możliwości, gdy używasz readline GNU, takich jak Emacs lub skróty klawiszowe w stylu vi do nawigacji w obrębie linii (np Ctrl-A.). Te jednak działają tylko w jednym bieżącym wierszu. Historia też tam jest, po prostu spróbuj i naciśnij .

Co jeśli chcę ciągle uruchamiać skomplikowane linie?

Prawdopodobnie chcesz użyć odpowiednich plików źródłowych, jeśli chcesz wykonać więcej niż jeden wiersz kodu na raz.

Lub użyj notesów Jupyter , które oferują świetny, interaktywny sposób tworzenia kodu Pythona za pomocą wbudowanego interpretera. Możesz pisać kod tak jak w edytorze kodu źródłowego, ale możesz wybrać, które wiersze będą interpretowane razem. Następnie możesz uruchamiać selektywnie tylko części kodu. Najlepszym sposobem jest po prostu sprawdzenie, czy pasuje to do Twojego przepływu pracy.

slhck
źródło
:) fajnie działa na pierwszą linię, ale co jeśli chcę więcej linii? drugi końcowy ukośnik odwrotny daje błąd składniowy.
Co dokładnie nie działa? Po prostu wybierz i skopiuj te linie, a następnie wklej je w terminalu. Będą one wykonywane od góry do dołu, tak jak w skrypcie, ponieważ nowy wiersz jest analizowany przez interpretera. Jaki jest problem?
slhck
1
Chciałbym wpisać je bezpośrednio w terminalu, zamiast pisać w edytorze i wklejać tam ... wydaje się to stratą czasu :)
Następnie musisz po prostu wpisać jedną linię po drugiej. Nie ma innego wyjścia. To tłumacz. Będzie monitował o linie kontynuacyjne tylko wtedy, gdy naprawdę ich potrzebujesz.
slhck
7

Co powiesz na używanie ;\? Średnik sygnalizuje koniec polecenia, a ukośnik oznacza, że ​​kontynuujemy w następnym wierszu. Na przykład wpisz pythonw wierszu polecenia, aby uzyskać dostęp do interpretera języka Python

>>> x=0 ;\
... print(x) ;\
... x=4 ;\
... print(x)

powinien dać wynik

0
4
Garrett
źródło
2

Mówiąc najprościej, jeśli chcesz się uczyć i chcesz uruchomić więcej niż jedną linię, zapisz ją w pliku .py.

Końcowa metoda odwrotnego ukośnika jest dobra, gdy chcesz szybko uruchomić serię poleceń, ale nie pomaga to podczas nauki.

Będziesz mógł lepiej opracowywać kod, edytować poszczególne polecenia bez obawy o błędy ortograficzne i ponownie wykorzystywać fragmenty kodu, które okażą się przydatne, jeśli zapiszesz je w małym pliku.

Rory Alsop
źródło
1
Tak, zgadzam się. Ale jestem na podstawowym poziomie. Nie piszę nic pożytecznego, po prostu głupie testowanie zmiennych i matematyka itp. Nic godnego nawet stworzenia pliku. Niemniej dziękuję za poradę.
Nawet prosta matematyka jest warta umieszczenia w pliku - jeśli to 3 lub więcej linii, zrobiłbym to sam. Mimo to zastanawiam się, co zrobiłem później.
Rory Alsop
1

Właśnie wpisałem następujące polecenie w wierszu polecenia powłoki i zadziałało dobrze:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> my_age = 35
>>> my_eyes = 'Blue'
>>> print "my age is %d and my eye color is %s" % (my_age, my_eyes)
my age is 35 and my eye color is Blue
>>> 

Sposobem na wpisanie więcej niż jednego wiersza kodu w interaktywnym interpretatorze Pythona jest, cóż, wpisanie więcej niż jednego wiersza kodu w interaktywnym interpretatorze Python. Sądzę, że to wystarczy do twoich celów.

Prawdą jest, że po każdym wierszu pojawi się nowy monit, co oznacza, że ​​jeśli dwa wiersze kodu generują dane wyjściowe, dane wyjściowe zostaną rozdzielone pytaniami. Myślę, że o to się martwisz, choć przykład w twoim pytaniu nie sugeruje, że:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "first line"
first line
>>> print "second line"
second line
>>> 

Jeśli to jest problem, możesz zawrzeć wiele instrukcji w instrukcji (odpowiednio wciętej!) if:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1:
...     print "first line"
...     print "second line"
... 
first line
second line
>>> 

(Sugerowałbym, choć nie odpowiada to na twoje pytanie, że jeśli piszesz kod, który jest wystarczająco skomplikowany, aby to miało znaczenie, powinieneś pisać skrypty. Być może zacząłeś to robić w ciągu półtora roku odkąd opublikowałeś pytanie.)

Keith Thompson
źródło
0

Właśnie szukałem odpowiedzi, którą otrzymałeś. Kontynuowałem eksperymenty, umieszczając różne symbole. W końcu uzyskałem poprawną składnię, aby ją napisać. Spróbuj następujących

print("more string") ; print(3)

to da ci wynik

more string

3

bez żadnego błędu

właśnie użyłem ';' aby napisać w innym wierszu

mam nadzieję, że moja odpowiedź może ci pomóc

Ciekawe Ostrze
źródło
0

Po prostu opuść powłokę i otwórz nowy plik edytora. Tj. Przejdź do pliku i otwórz nowy plik. Napisz tyle wierszy kodów, ile chcesz.

Hemant Gautam
źródło
-2

Przy trzech kropkach upewnij się, że naciskasz klawisz „tab”, zanim wprowadzisz następne polecenie. Możesz kontynuować pisanie tylu poleceń w ten sposób. Więc kiedy naciśniesz klawisz Enter po napisaniu drugiego wiersza kodu, interpreter pozwala wprowadzić trzeci wiersz kodu ... jak w poniższym przykładzie Fibonacciego (z samouczka):

a, b = 0,1, podczas gdy b <10: ... print (b) # Jeśli wprowadzisz polecenie drukowania natychmiast po kropkach i naciśniesz klawisz enter na końcu, u pojawi się błąd wcięcia. Zamiast tego wciśnij kartę po trzech kropkach, a następnie napisz kod i naciśnij klawisz Enter, pozwoli ci to wprowadzić trzeci wiersz kodu i tak dalej. Spójrz na poniższy przykład (z samouczka):

a, b = 0,1 # Następnie klawisz Enter, a b <10: # Następnie klawisz Enter ... drukuj (b) # Następnie klawisz Enter. zwróć uwagę na zakładkę po trzech kropkach ... a, b = b, a + b # Następnie klawisz Enter ... klawisz Enter # Koniec z poleceniami do wejścia

zobaczysz wynik powyższego progu

Shashi
źródło