Oto mój kod w Pythonie. Czy ktoś mógłby mi pokazać, co w tym złego.
while 1:
date=input("Example: March 21 | What is the date? ")
if date=="June 21":
sd="23.5° North Latitude"
if date=="March 21" | date=="September 21":
sd="0° Latitude"
if date=="December 21":
sd="23.5° South Latitude"
if sd:
print sd
A oto co się dzieje:
>>>
Example: March 21 | What is the date?
Traceback (most recent call last):
File "C:\Users\Daniel\Desktop\Solar Declination Calculater.py", line 2, in <module>
date=input("Example: March 21 | What is the date? ")
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
>>>
źródło
/usr/bin/python
jest plikiem wykonywalnym Pythona 2 i/usr/bin/python3
jest to plik wykonywalny Pythona 3. Wydaje mi się, że w Mint 19 domyślnym Pythonem w systemie jest python 3.Wcnij to! pierwszy. To by zadbało o twoje
SyntaxError
.Poza tym w twoim programie jest kilka innych problemów.
Użyj,
raw_input
gdy chcesz zaakceptować ciąg jako dane wejściowe.input
przyjmuje tylko wyrażenia Pythona i robieval
na nich.Używasz w swoim skrypcie pewnych 8-bitowych znaków, takich jak
0°
. Może być konieczne zdefiniowanie kodowania u góry skryptu za pomocą# -*- coding:latin-1 -*-
wiersza powszechnie nazywanego kodowaniem-cookie.Ponadto, podczas porównywania str, znormalizuj ciągi i porównaj. (osoby używające lower () it) Pomaga to w zapewnieniu niewielkiej elastyczności przy wprowadzaniu danych przez użytkownika.
Myślę też, że przeczytanie samouczka Pythona może ci pomóc. :)
Przykładowy kod
#-*- coding: latin1 -*- while 1: date=raw_input("Example: March 21 | What is the date? ") if date.lower() == "march 21": ....
źródło
Wystąpił ten błąd z powodu braku nawiasu zamykającego w wierszu.
Zacząłem mieć problem z linijką mówiącą:
invalid syntax (<string>, line ...)?
na końcu mojego scenariusza.Usunąłem tę linię, a następnie otrzymałem wiadomość EOF.
źródło
Chociaż odpowiedź @ simona jest najbardziej pomocna w Pythonie 2,
raw_input
nie występuje w Pythonie 3. Proponuję wykonać następujące czynności, aby upewnić się, że kod działa równie dobrze w Pythonie 2 i Pythonie 3:Najpierw pip install future:
Po drugie: import danych wejściowych z future.builtins
# my_file.py from future.builtins import input str_value = input('Type something in: ')
A dla konkretnego przykładu wymienionego powyżej:
# example.py from future.builtins import input my_date = input("Example: March 21 | What is the date? ")
źródło
Używam poniższego kodu, aby uzyskać zgodność z Python 2 i 3
if sys.version_info < (3, 0): input = raw_input
źródło
Próbuję odpowiedzieć ogólnie, niezwiązane z tym pytaniem, ten błąd generalnie pojawia się, gdy złamiesz składnię na pół i zapomnisz o drugiej połowie. Tak jak w moim przypadku było to:
try : ....
ponieważ Python szukał pliku
except Exception as e: ....
ale napotkał EOF (End Of File), stąd błąd. Sprawdź, czy możesz znaleźć niekompletną składnię w swoim kodzie.
źródło
Natknąłem się na to samo i zorientowałem się, o co chodzi. Kiedy używamy metody input, odpowiedź, którą powinniśmy wpisać, powinna być w podwójnych cudzysłowach. Jak w twojej linii
date=input("Example: March 21 | What is the date? ")
Po wyświetleniu monitu na konsoli należy wpisać „12/12/2015” - zanotuj to
"
przed i po. W ten sposób weźmie to jako ciąg i przetworzy zgodnie z oczekiwaniami. Nie jestem pewien, czy to jest ograniczenie tejinput
metody - ale tak działa.Mam nadzieję, że to pomoże
źródło
Po pierwszej instrukcji if zamiast wpisywać „if” wpisz „elif” i powinno działać.
Dawny.
` while 1: date=input("Example: March 21 | What is the date? ") if date=="June 21": sd="23.5° North Latitude elif date=="March 21" | date=="September 21": sd="0° Latitude" elif date=="December 21": sd="23.5° South Latitude" elif sd: print sd `
źródło
Możesz spróbować normalnie napisać kod dla Pythona przy użyciu zwykłego
input
polecenia. Jednak sztuczka polega na dodaniu na początku programu poleceniainput=raw_input
.Teraz wszystko, co musisz zrobić, to wyłączyć (lub włączyć) w zależności od tego, czy pracujesz w Pythonie / IDLE czy Terminalu. Robisz to, po prostu dodając „#” w razie potrzeby.
Wyłączony do użytku w Pythonie / IDLE
#input=raw_input
I oczywiście włączony do użytku w terminalu.
input=raw_input
Nie jestem pewien, czy zawsze będzie działać, ale jest to możliwe rozwiązanie dla prostych programów lub skryptów.
źródło
Sprawdź wersję swojego kompilatora.
źródło
Sprawdź, czy wszystkie parametry funkcji są zdefiniowane przed ich wywołaniem. Zmierzyłem się z tym problemem podczas ćwiczeń Kaggle.
źródło