निम्नलिखित कोड पर मदद लेना चाहते हैं। मेरी समझ के आधार पर, IF, ELIF, ELSE का उपयोग करने के बीच के अंतर की तुलना में यदि कई IFs है कि सभी IFs का मूल्यांकन किया जाएगा।

नीचे दिए गए विशेष कोड के लिए, मुझे यह समझने में कठिन समय है कि 60 का मूल्य क्यों देना "आप लालची कमीने!" इसके बजाय "यार, एक नंबर टाइप करना सीखो।"

मेरे विचार की ट्रेन इस प्रकार है: यदि मैं 60 में कुंजी रखता हूं, तो यह न तो 0 या 1 है, इसलिए इसे how_much = int(next) में इनपुट नहीं किया जाएगा और इसे सीधे जाना चाहिए

else:
dead("Man, learn to type a number.")

दूसरा अगर बयान को पायथन द्वारा संसाधित नहीं किया जाना चाहिए क्योंकि how_much = int(next) पहले बयान में छोड़ दिया गया था।

पूर्ण कोड:

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    if "0" in next or "1" in next:
        how_much = int(next)
    else:
        dead("Man, learn to type a number.")
    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")
-1
ferry 4 पद 2015, 10:29

2 जवाब

सबसे बढ़िया उत्तर

in का अर्थ है "सूची, str, आदि। क्या यह मूल्य शामिल है"? इस मामले में, हाँ यह "60" करता है जिसमें "0" शामिल है। हालांकि, यदि आप "54" दर्ज करना चाहते थे, तो यह NOT "0" या "1" शामिल होता है और इसलिए आप अपनी पहली निकास स्थिति तक पहुंच जाएंगे।

आप एक कोशिश में how_much कास्टिंग पर विचार कर सकते हैं / ब्लॉक को छोड़कर:

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    try:
        how_much = int(next)
    except:
        dead("Man, learn to type a number.")
        return # I generally put a "return" statement in places like this one.

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")
1
cwallenpoole 4 पद 2015, 07:53

जब आप 60 दर्ज करते हैं, तो इसे स्ट्रिंग के रूप में next में संग्रहित किया जाता है। "0" in next True है, क्योंकि स्ट्रिंग "60" में एक शून्य है, इसलिए how_much पूर्णांक 60 पर सेट हो जाएगा।

निम्नलिखित if सत्य होगा यदि next सभी अंकों का एक स्ट्रिंग है:

if next.isdigit():
    how_much = int(next)

एक अन्य विकल्प एक try/except है:

try:
    how_much = int(raw_input("> "))
except ValueError:
    dead("Man, learn to type a number.")
1
Mark Tolonen 4 पद 2015, 07:40