पार्सिंग करते समय पायथन अप्रत्याशित ईओएफ


82

यहाँ मेरा अजगर कोड है। क्या कोई मुझे दिखा सकता है कि इसमें क्या गलत है।

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

और यहाँ क्या होता है:

>>> 
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
>>> 

जवाबों:


122

raw_inputइसके बजाय का उपयोग करें input:)

यदि आप उपयोग करते हैं input, तो आपके द्वारा टाइप किया गया डेटा पायथन एक्सप्रेशन के रूप में व्याख्या किया जाता है, जिसका अर्थ है कि आप गॉड के साथ समाप्त होते हैं, यह जानता है कि आपके लक्ष्य चर में किस प्रकार की वस्तु है, और अपवादों की एक विस्तृत श्रृंखला की एक बिल्ली जो उत्पन्न हो सकती है। इसलिए आपको तब तक उपयोग नहीं करना चाहिए inputजब तक कि आप अस्थायी परीक्षण के लिए कुछ नहीं डाल रहे हों, केवल किसी ऐसे व्यक्ति द्वारा उपयोग किया जाना चाहिए जो पायथन अभिव्यक्ति के बारे में थोड़ा जानता है।

raw_inputहमेशा एक स्ट्रिंग लौटाता है क्योंकि, बिल्ली, वह है जो आप हमेशा टाइप करते हैं ... लेकिन फिर आप इसे आसानी से उस विशिष्ट प्रकार में बदल सकते हैं जिसे आप चाहते हैं, और विशिष्ट अपवादों को पकड़ सकते हैं जो हो सकते हैं। उम्मीद है कि उस स्पष्टीकरण के साथ, यह जानना आपके लिए एक दिमाग नहीं है, जिसका आपको उपयोग करना चाहिए।

संदर्भ

नोट: यह केवल पायथन 2 के लिए है। पायथन 3 के लिए, raw_input()सादा हो गया है input()और पायथन 2 input()को हटा दिया गया है।


यह मेरे लिए काम किया! लेकिन, मुझे यकीन नहीं है कि मेरे लिनक्स मिंट 18.3 इंस्टॉलेशन पायथन 2 को चलाता है, भले ही मैंने पायथन 3 स्थापित किया हो ...
बाजीरू

1
मिंट 18.3 में (और उबंटू ज़ेनियल कि यह पर आधारित है) /usr/bin/pythonएक अजगर 2 निष्पादन योग्य है, और /usr/bin/python3आपका अजगर 3 निष्पादन योग्य है। मिंट 19 के साथ, सिस्टम डिफॉल्ट पायथन पायथन 3 है, मेरा मानना ​​है।
सिमोन

16

इसे इंडेंट करो! प्रथम। जो आपका ख्याल रखेगा SyntaxError

इसके अलावा आपके कार्यक्रम में कुछ अन्य समस्याएं हैं।

  • raw_inputजब आप स्ट्रिंग को इनपुट के रूप में स्वीकार करना चाहते हैं तब उपयोग करें । inputकेवल पायथन एक्सप्रेशन लेता है और यह evalउन पर करता है।

  • आप अपनी स्क्रिप्ट में कुछ 8bit वर्णों का उपयोग कर रहे हैं जैसे । आपको अपनी स्क्रिप्ट के शीर्ष पर एन्कोडिंग को परिभाषित करने की आवश्यकता हो सकती है # -*- coding:latin-1 -*-जिसे आमतौर पर कोडिंग-कुकी के रूप में कहा जाता है।

  • इसके अलावा, स्ट्रिंग्स की तुलना करते समय, स्ट्रिंग्स को सामान्य करें और तुलना करें। (कम उपयोग करने वाले लोग () इसे) यह उपयोगकर्ता इनपुट के साथ थोड़ा लचीलापन देने में मदद करता है।

  • मुझे भी लगता है कि पाइथन ट्यूटोरियल पढ़ना आपके लिए मददगार हो सकता है। :)

नमूना कोड

#-*- coding: latin1 -*-

while 1:
    date=raw_input("Example: March 21 | What is the date? ")
    if date.lower() == "march 21":

    ....

ठीक है, यह सिंटेक्स त्रुटि के लिए था। मुझे अब अन्य गलतियों के लिए संपादित करने दें।
सेंथिल कुमारन

1
लूप का शरीर इंडेंटेड है: इंडेंटेशन पायथन के बयानों को समूह बनाने का तरीका है। इंटरैक्टिव प्रॉम्प्ट पर, आपको प्रत्येक इंडेंटेड लाइन के लिए एक टैब या स्पेस (एस) टाइप करना होगा।
जेरेमी ए। वेस्ट

6

एक पंक्ति में एक बंद कोष्ठक के लापता होने के कारण मुझे यह त्रुटि हुई।

मैंने एक पंक्ति के साथ एक समस्या कहना शुरू कर दिया: invalid syntax (<string>, line ...)? अपनी स्क्रिप्ट के अंत में।

मैंने वह लाइन हटा दी, फिर EOF संदेश मिला।


4

जबकि @ सिमोन का उत्तर पायथन 2 में सबसे अधिक मददगार है, raw_inputपायथन 3 में मौजूद नहीं है। मैं यह सुझाव देना चाहूंगा कि आपका कोड पायथन 2 और पायथन 3 में समान रूप से काम करता है:

सबसे पहले, भविष्य स्थापित करें:

$ pip install future

दूसरा: Future.builtins से इंपोर्ट इनपुट

# my_file.py    
from future.builtins import input
str_value = input('Type something in: ')

और ऊपर सूचीबद्ध विशिष्ट उदाहरण के लिए:

# example.py
from future.builtins import input
my_date = input("Example: March 21 | What is the date? ")

4

मैं पायथन 2 और 3 संगतता प्राप्त करने के लिए अनुसरण कोड का उपयोग कर रहा हूं

if sys.version_info < (3, 0):
    input = raw_input

3

मैं सामान्य रूप से जवाब देने की कोशिश कर रहा हूं, इस सवाल से संबंधित नहीं, यह त्रुटि आम तौर पर तब होती है जब आप आधे में एक सिंटैक्स को तोड़ते हैं और दूसरे आधे को भूल जाते हैं। जैसे मेरे मामले में यह था:

try :
 ....

जब से अजगर एक के लिए खोज रहा था

except Exception as e:
 ....

लेकिन इसमें EOF (फ़ाइल का अंत) का सामना करना पड़ा, इसलिए त्रुटि। देखें कि क्या आपको अपने कोड में कोई अधूरा वाक्यविन्यास मिल सकता है।


1

मैं एक ही बात भर में आया था और मुझे पता चला कि मुद्दा क्या है। जब हम विधि इनपुट का उपयोग करते हैं, तो हमें जो प्रतिक्रिया टाइप करनी चाहिए वह दोहरे उद्धरण चिह्नों में होनी चाहिए। जैसे आपकी लाइन में date=input("Example: March 21 | What is the date? ")

कंसोल पर टाइप करने पर आपको "12/12/2015" टाइप करना चाहिए - "पहले और बाद की बात पर ध्यान दें । इस तरह यह एक स्ट्रिंग के रूप में ले जाएगा और इसे अपेक्षित रूप से संसाधित करेगा। मुझे यकीन नहीं है कि यह इस inputपद्धति की सीमा है - लेकिन यह इस तरह से काम करता है।

आशा है कि इससे सहायता मिलेगी


1

पहले के बाद अगर टाइप करने के बजाय "इफ" टाइप करें तो "एलिफ" और फिर काम करना चाहिए।

पूर्व।

`    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 `

0

आप जो कोशिश कर सकते हैं वह सामान्य inputकमांड का उपयोग करके अजगर के लिए अपने कोड को सामान्य के रूप में लिख रहा है । हालाँकि, कमांड शुरू करने के लिए ट्रिक को जोड़ना है input=raw_input

अब आपको केवल इतना करना है कि आप Python / IDLE या Terminal में चल रहे हैं, इस आधार पर अक्षम (या सक्षम) है। आप केवल जरूरत पड़ने पर '#' जोड़कर ऐसा करते हैं।

पायथन / आईडीएलई में उपयोग के लिए बंद

    #input=raw_input 

और निश्चित रूप से टर्मिनल में उपयोग के लिए बंद है।

    input=raw_input 

मुझे यकीन नहीं है कि यह हमेशा काम करेगा, लेकिन सरल कार्यक्रमों या लिपियों के लिए इसका एक संभव समाधान है।


0

अपने संकलक के संस्करण की जाँच करें।

  1. यदि आप Python2 के साथ काम कर रहे हैं तो उपयोग करें -

n= raw_input("Enter your Input: ")

  1. यदि आप python3 उपयोग के साथ काम कर रहे हैं -

n= input("Enter your Input: ")


-2

जाँच करें कि क्या फ़ंक्शन के सभी मापदंडों को परिभाषित करने से पहले उन्हें कहा जाता है। कागले का अभ्यास करते समय मुझे इस समस्या का सामना करना पड़ा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.