क्योंकि आपके if
खंड में स्थिति त्रुटिपूर्ण है; isupper
विधि रिटर्न True
यदि दिए गए स्ट्रिंग में सभी वर्ण अपरकेस रहे हैं:
>>> "UPPER".isupper()
True
>>> "UPPEr".isupper()
False
documentation for str.isupper
देखें:
वापसी True
अगर str
में सभी मामलों पात्रों अपरकेस जाता है और वहाँ पर है str
, False
में कम से कम एक cased चरित्र।
(जोर मेरा)
जब से तुम message.isupper(()
साथ message
पर जाँच कर रहे हैं इस False
हर समय 0
की राशि में जिसके परिणामस्वरूप वापस आ जाएगी।
message.isupper()
के साथ पूर्ण संदेश की जाँच कर के बजाय, अपने if
एक प्रति चरित्र के आधार पर if c.isupper()
के साथ हर message
में c
के लिए उपयोग करें: तथ्य का लाभ
print("Capital Letters: ", sum(1 for c in message if c.isupper()))
तुम भी लग सकता है कि True
कृत्यों की तरह 1
और False
0
की तरह थोड़ा नीचे ट्रिम करने के लिए है कि अगर आप चाहते हैं:
print("Capital Letters: ", sum(c.isupper() for c in message))
या, यदि आप कार्यात्मक दृष्टिकोण, map
अपने इनपुट के लिए समारोह की तरह:
print("Capital Letters: ", sum(map(str.isupper, message)))
यहां तक कि इन हो सकता है, हालांकि, आत्मगत, अच्छे लग रहे; वे मूल दृष्टिकोण (और थोड़ा कम कुशल भी) से अधिक रहस्यमय होते हैं।
स्रोत
2017-01-12 18:30:45
शायद आपकी जांच के बाद से 'if message.isupper()' का मतलब है: 'यदि c.isupper() '? – alfasin
'योग (मानचित्र (str.isupper, संदेश))' –