2011-07-20 11 views
8

मैं कुल शुरुआत कर रहा हूं और http://en.wikibooks.org/wiki/Python_Programming/Conditional_Statements पर देख रहा हूं लेकिन मैं यहां समस्या को समझ नहीं पा रहा हूं। यह बहुत सरल उपयोगकर्ता में प्रवेश करती है, तो y यह इस प्रिंट गणना करना होगा चाहिए, हालांकि मैं अगर जवाब == "वाई"यदि अजगर में तारों के लिए कथन?

answer = str(input("Is the information correct? Enter Y for yes or N for no")) 
proceed="y" or "Y" 
If answer==proceed: 
print("this will do the calculation"): 
else: 
exit() 
+9

नीचे दिए गए उत्तरों को आपकी मदद करनी चाहिए। लेकिन ऐसा लगता है कि आपको स्क्रैच से शुरू करने और प्रोग्रामिंग ट्यूटोरियल का पालन करने की आवश्यकता है। डाइविंग से पहले मूल बातें सीखना सबसे अच्छा है! – samb8s

उत्तर

6

अजगर एक केस-संवेदी भाषा है पर एक सिंटैक्स त्रुटि प्राप्त है। सभी पायथन कीवर्ड लोअरकेस हैं। if का उपयोग करें, If पर नहीं।

इसके अलावा, print() पर कॉल के बाद एक कोलन न डालें। साथ ही, print() और exit() कॉल इंडेंट करें, क्योंकि पाइथन कोड ब्लॉक का प्रतिनिधित्व करने के लिए ब्रैकेट की बजाय इंडेंटेशन का उपयोग करता है।

और proceed = "y" or "Y" जो भी आप चाहते हैं वह नहीं करेंगे। proceed = "y" और if answer.lower() == proceed:, या कुछ इसी तरह का उपयोग करें।

यह भी तथ्य है कि आपका प्रोग्राम तब तक बाहर निकल जाएगा जब तक इनपुट मान एकल वर्ण "वाई" या "वाई" नहीं है, जो वैकल्पिक मामले के लिए "एन" के संकेत के विपरीत है। वहां else क्लॉज के बजाय, का उपयोग करें, info_incorrect = "n" पहले कहीं भी। फिर इनपुट मूल्य कुछ और था अगर प्रतिक्रिया या कुछ के लिए बस reprompt।


मैं अजगर दस्तावेज में ट्यूटोरियल के माध्यम से जाने आप इतना मुसीबत जिस तरह से आप अब सीख रहे हैं आ रही है तो सलाह देते हैं। http://docs.python.org/tutorial/index.html

+0

और इसके बारे में क्या ?! – samb8s

+0

@samb: के बारे में क्या? चूंकि '" y "का बूलियन मान' True' है, 'proceed = "y" या "y" का परिणाम केवल' y ''' '' '' '' '' '' '' '' खाते में अपरकेस मामले में। 'इन' ऑपरेटर का डैनियल का उपयोग अच्छा है, हालांकि। – JAB

+0

क्षमा करें, मैंने कहा कि आपके पोस्ट को संपादित करने से पहले :) – samb8s

36

एक बार जब आप गलत तरीके से if और आपके कोड में अनुचित इंडेंटेशन तय करते हैं, तो यह संभवतः काम नहीं करेगा जैसा कि आप शायद अपेक्षित थे। स्ट्रिंग्स के सेट के खिलाफ स्ट्रिंग की जांच करने के लिए, in का उपयोग करें। यहां बताया गया है कि आप इसे कैसे करेंगे (और ध्यान दें कि if सभी लोअरकेस है और if ब्लॉक के भीतर कोड एक स्तर को इंडेंट किया गया है)।

एक दृष्टिकोण:

if answer in ['y', 'Y', 'yes', 'Yes', 'YES']: 
    print("this will do the calculation") 

एक और:

if answer.lower() in ['y', 'yes']: 
    print("this will do the calculation") 
+0

ध्यान दें कि कोड में ओपी के रूप में कोड में, इंडेंटेशन गलत है। –

+1

आपने समस्या को याद किया है कि 'str (input())' काम नहीं करेगा, 'raw_input() 'सही है। – agf

+2

@agf जो कि पाइथन के किस संस्करण का उपयोग कर रहा है, इस पर निर्भर करता है, हालांकि यह काम करेगा (यानी, पायथन 3.x का उपयोग करके) यह अनावश्यक होगा। –

2
proceed = "y", "Y" 
if answer in proceed: 

इसके अलावा, आप नहीं चाहते

answer = str(input("Is the information correct? Enter Y for yes or N for no")) 

आप

चाहते 10
answer = raw_input("Is the information correct? Enter Y for yes or N for no") 

input() पाइथन अभिव्यक्ति के रूप में जो कुछ भी दर्ज किया गया है उसका मूल्यांकन करता है, raw_input() एक स्ट्रिंग देता है।

संपादित करें: यह केवल पायथन 2 पर सच है। पायथन 3, input पर ठीक है, हालांकि str() रैपिंग अभी भी अनावश्यक है।

+0

"' इनपुट() 'पाइथन अभिव्यक्ति के रूप में जो कुछ भी दर्ज किया गया है उसका मूल्यांकन करता है,' raw_input() 'एक स्ट्रिंग देता है। " पायथन 3 को छोड़कर, जहां 'input() '' raw_input() 'का उपयोग करता है, और आप' eval (input()) 'या कुछ का उपयोग करेंगे यदि आप इनपुट को पाइथन अभिव्यक्ति के रूप में मूल्यांकन करना चाहते हैं। – JAB

7

Ifif होना चाहिए। आपका कार्यक्रम इस तरह दिखना चाहिए:

answer = raw_input("Is the information correct? Enter Y for yes or N for no") 
if answer.upper() == 'Y': 
    print("this will do the calculation"): 
else: 
    exit() 

ध्यान दें कि इंडेंटेशन महत्वपूर्ण है, क्योंकि यह पायथन में एक ब्लॉक को चिह्नित करता है।

+1

अभी भी गलत है। 'raw_input()', नहीं 'str (इनपुट()) '। – agf

+0

@agf: आप सही हैं, ठीक है कि। –

-1

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

+1

'आगे बढ़ें' 'सत्य 'का मूल्यांकन नहीं करेगा, यह' y'' 'का मूल्यांकन करेगा। –

+0

सच, सच, सच :) – viraptor

5

को आप चाहते हैं का मूल्यांकन करेंगे:

answer = str(raw_input("Is the information correct? Enter Y for yes or N for no")) 
if answer == "y" or answer == "Y": 
    print("this will do the calculation") 
else: 
    exit() 

या

answer = str(raw_input("Is the information correct? Enter Y for yes or N for no")) 
if answer in ["y","Y"]: 
    print("this will do the calculation") 
else: 
    exit() 

नोट:

  1. यह "अगर", नहीं "अगर"। पायथन केस संवेदनशील है।
  2. इंडेंटेशन महत्वपूर्ण है।
  3. पायथन आदेशों के अंत में कोई कोलन या सेमी-कोलन नहीं है।
  4. आप raw_inputinput नहीं चाहते हैं; input इनपुट evals।
  5. "या" आपको पहला परिणाम देता है यदि यह सत्य का मूल्यांकन करता है, और दूसरा परिणाम अन्यथा। तो "a" or "b""a" का मूल्यांकन करता है, जबकि 0 or "b""b" पर मूल्यांकन करता है। The Peculiar Nature of and and or देखें।
+2

आपका पांचवां बिंदु गलत है। 'x या y' पहले मान को वापस कर देगा यदि यह 'सत्य' का मूल्यांकन करता है, और दूसरा मूल्य अन्यथा। –

+0

आह हाँ! अपडेट किया गया! – MGwynne

संबंधित मुद्दे