Forum Linux.pl

Programowanie => Języki skryptowe => Wątek zaczęty przez: Zdzisław Knop w 2017-12-10, 15:46:40

Tytuł: [Python] błąd składni w programie
Wiadomość wysłana przez: Zdzisław Knop w 2017-12-10, 15:46:40
Mam takie zadanie: Pobierz od użytkownika imię, wiek i powitaj go komunikatem: “Mów mi Python, mam x lat. Witaj w moim świecie imie. Jesteś starszy(młodszy) ode mnie.”
Pojawia się błąd składni w linii 10, ale nie wiem jaki to błąd:


(https://naforum.zapodaj.net/thumbs/db846208435d.png) (https://naforum.zapodaj.net/db846208435d.png.html)
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: 1709 w 2017-12-10, 18:26:22
W terminalu działa
$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> imie=input('Jak zwiesz?'); print('Jestes', imie)
Jak zwiesz?y
Jestes y
>>>
-To wygląda jak zaleciałość z pythona2 ( w v.2 pythonie nie było nawiasów, a w v.3 już są )
https://github.com/ninja-ide/ninja-ide/issues/1862
https://github.com/ninja-ide/ninja-ide/issues/544
Osobiscie nie mogę sprawdzić, ale ty możesz sprawdzi.ć czy jakać wtyczka tego nie powoduje komunikatu, ewentualnie zgłosić developerom uwagę.
- Mozesz tez sprawdziz zmieniajac cudzysłów z ' na "
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Zdzisław Knop w 2017-12-10, 19:19:27
A mi wyszło coś takiego:

(https://naforum.zapodaj.net/thumbs/e19df3ce6d76.png) (https://naforum.zapodaj.net/e19df3ce6d76.png.html)

Wkleiłem cały kod do terminala i tak się chyba nie da

//Edit
Pozmieniałem wszystkie apostrofy na cudzyslowy ale nic nie dało
Mam takie zadanie: Pobierz od użytkownika imię, wiek i powitaj go komunikatem: “Mów mi Python, mam x lat. Witaj w moim świecie imie. Jesteś starszy(młodszy) ode mnie.”
Pojawia się błąd składni w linii 10, ale nie wiem jaki to błąd:


(https://naforum.zapodaj.net/thumbs/db846208435d.png) (https://naforum.zapodaj.net/db846208435d.png.html)

//Edit
Cytuj
python3

Nie zauważyłem, że korzystasz z Pythona
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: 1709 w 2017-12-10, 23:07:24
To prawda,
- jeśli wkleisz bezpośrednio to nie zadziala, bo terminal domyślnie używa powłoki bash
- jeśli uruchomię python3 lub python2 mam dostęp do powłoki pythona danej wersji
- jesli uruchomił bym gotowy skrypt z pythona to prawdopodobnie także bym widział błędy lub ich brak (taki podstawowy sposób debugowania)
Morał taki, że w ostateczności możesz zignorować komunikat, a jeśli irytuje to zgłosić developerom.
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Zdzisław Knop w 2017-12-11, 00:33:46
Cytuj
Morał taki, że w ostateczności możesz zignorować komunikat, a jeśli irytuje to zgłosić developerom.

Ucze się Pythona i troche mnie to irytuje, kod przepisuje bezbłędnie. Napisze do developerów Ninji z załączonym screenem.
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Paweł Kraszewski w 2017-12-11, 08:14:02
Zapewne w pędzie nauki Pythona przeoczył Pan paragraf, że są dwie niekompatybilne wersje tego języka: Python2 i Python3.
Jedną z (bardzo wielu) różnic jest to, że w Pythonie2 print jest słowem kluczowym (nawiasą są częścią skłądniową argumentu) a w Pythonie3 jest funkcją i przez to musi mieć nawiasy.

> python2 -c 'print(1,2,3)'
(1, 2, 3)
                                                                                                                             
> python3 -c 'print(1,2,3)'
1 2 3
                                                                                                                             
> python2 -c 'print 1,2,3'
1 2 3
                                                                                                               
> python3 -c 'print 1,2,3'
  File "<string>", line 1
    print 1,2,3
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(1,2,3)?

Po kolei:
* Wywołanie słowa kluczowego z jednym argumentem typu krotka 3-elementowa. Dlatego na ekranie pojawiła się rzeczona krotka.
* Wywołanie funkcji  z trzema argumentami typu liczba. Dlatego na ekranie pojawiły się tylko liczby
* Wywołanie słowa kluczowego  z trzema argumentami typu liczba. Dlatego na ekranie pojawiły się tylko liczby.
* Wywołanie funkcji bez umieszczenie argumentów w nawiasie - błąd skłądniowy.

Podkreślona na pierwszym screenie linia w obu dialektach jest poprawna, tylko znaczy co innego (co innego pojawi się na ekranie). To ewidentny błąd Ninja. Tyle, że... W repo Ubuntu jest NinjaIDE - tylko nie działa, bo wymaga py-qt4-qtwebkit, którego nie ma już w repozytoriach. Ściągnięty z GIT najnowszy (branch master) też nie działa, bo nie, więc nie miałem jak sprawdzić tego u siebie.

Jeżeli PyCharm jest za trudny (????), to Pythona3 fajny edytor to ERIC (obsługuje oba dialekty), IDLE (są wersja Idle2 i Idle3 dla odpowiednich dialektów) czy Spyder (też są dwie wersje dla 2/3).  Ewentualnie edytor VisualSourceCode z pluginem do Pythona (też obsługuje oba dialekty).
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Zdzisław Knop w 2017-12-11, 12:13:56
To którą wersję do nauki wybrać Python2 czy Python3

Cytuj
Zapewne w pędzie nauki Pythona przeoczył Pan paragraf, że są dwie niekompatybilne wersje tego języka: Python2 i Python3.
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Paweł Kraszewski w 2017-12-11, 14:40:45
To którą wersję do nauki wybrać Python2 czy Python3
Python 3 or Python 2? (https://forum.pasja-informatyki.pl/50916/python-3-or-python-2)

W skrócie: Python3, chyba, że ma się biblioteki napisane tylko na wersję Python2 (a jest ich coraz mniej)
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Zdzisław Knop w 2017-12-11, 18:41:31
Zainstalowałem PyCharma, ale podczas "kompilacji" wyskakuje błąd. Jeśli wpisze

print 2+2
print "hello world"

to wyskakuje błąd

File "C:/Users/Admin/PycharmProjects/untitled/main.py", line 1
    print 2+2
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(2+2)?

Process finished with exit code 1

ale jeśli dodam nawiasy to wyskakuje bezbłędnie

C:\Users\Admin\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Admin/PycharmProjects/untitled/main.py
4
hello world

Process finished with exit code 0
Tytuł: Odp: [Python] błąd składni w programie
Wiadomość wysłana przez: Paweł Kraszewski w 2017-12-11, 19:36:07
Tak, właśnie tak działa print w Pythonie3. Wymaga nawiasów, bo jest funkcją.