2011-09-08 18 views
10

में है, मैं एक ऐसा फ़ंक्शन बनाना चाहता हूं जो जांच करेगा कि स्ट्रिंग का पहला अक्षर अपरकेस में है या नहीं।जांच कर रहा है कि स्ट्रिंग का पहला अक्षर अपरकेस

if word[0] in range string.ascii_lowercase 
          ^
SyntaxError: invalid syntax 

किसी एक नजर है और सलाह देने के लिए मैं गलत क्या कर रहा सकता है:

def is_lowercase(word): 
    if word[0] in range string.ascii_lowercase: 
     return True 
    else: 
     return False 

मैं इसे चलाने के लिए मैं इस त्रुटि मिलती है का प्रयास करते हैं: यह क्या मैं अब तक के साथ आया है ?

+0

'रेंज' एक बिल्टिन फ़ंक्शन है जो संख्याओं की एक श्रृंखला देता है, और उस कोड में जो कुछ भी नहीं है। – geoffspear

+2

पैटर्न से बचें 'अगर [बूल]: वापस लौटें: अन्यथा झूठी वापसी करें। आप बस 'वापसी [बूल] ' – wim

उत्तर

30

str.isupper का उपयोग नहीं क्यों();

In [2]: word = 'asdf' 
In [3]: word[0].isupper() 
Out[3]: False 

In [4]: word = 'Asdf' 
In [5]: word[0].isupper() 
Out[5]: True 
+0

यह एक अच्छा जवाब है, लेकिन मैं यह जानना चाहता था कि मैंने एक ही समस्या के एक अलग समाधान की तलाश करने के बजाय मैंने जो कोड लिखा था, उसमें मैंने क्या गलत किया था। वैसे भी धन्यवाद। –

+0

@gameFace अच्छा बिंदु। कभी-कभी सबसे अच्छा समाधान एक अलग समाधान है। ;) – AlG

14

इस तार के लिए निर्मित किया गया है:

word = "Hello" 
word.istitle() # True 

लेकिन ध्यान दें str.istitle लग रहा है कि चाहे स्ट्रिंग में हर शब्द शीर्षक मामलों है, इसलिए इस आप एक आश्चर्य दे सकता है:

"Hello world".istitle() # returns False! 

तुम सिर्फ जाँच करना चाहते हैं एक स्ट्रिंग के पहले चरित्र इस का उपयोग करें:

word = "Hello world" 
word[0].isupper() # True 
+0

@Downvoter का उपयोग कर सकते हैं: समझाने की देखभाल? – orlp

+1

विस्सर प्रतिक्रिया: मूल पोस्ट में, आपके द्वारा संपादित करने से पहले, आपने यह स्पष्ट नहीं किया कि "हैलो वर्ल्ड" और "हेल्लो" जैसे वाक्यांश विफल हो गए हैं। istitle जांचता है कि प्रत्येक शब्द <लोअरकेस वर्णों का अनुक्रम> के प्रारूप को संतुष्ट करता है, और यह स्पष्ट नहीं था कि यह ओपी द्वारा दिया गया प्रतिबंध था। वापस डाउनवोट –

+0

घुमाया धन्यवाद, मैंने इसे देखा है लेकिन उपयोगिता के बजाय खुद को कुछ बनाना चाहता था()। –

1

सिंटेक्स त्रुटि तथ्य की वजह से उपजी है कि आप कोष्ठकों की जरूरत है:

range(string.ascii_lowercase) 

लेकिन वास्तव में आप प्रयोग नहीं करना चाहिए रेंज। यह रूप में आसान है के रूप में:

if word[0] in string.ascii_lowercase 
+2

परीक्षण अगर यह 'ascii_lowercase' में है, तो सड़क के नीचे स्थानीयकरण की समस्याएं हो सकती हैं - isupper() का उपयोग करने के लिए बेहतर। उदाहरण के लिए, यदि शब्द सिरिलिक में है तो क्या होगा? पहला अक्षर ऊपरी मामला होगा, लेकिन यह 'ascii_lowercase' में नहीं होगा। –

+0

'string.ascii_lowercase' एक पूर्णांक नहीं है, और' श्रेणी() 'के लिए एक वैध तर्क नहीं है। – geoffspear

+0

@Wooble समझाते हुए क्यों वाक्यविन्यास त्रुटि पहली जगह में उभरी। इसलिए मैंने यह सुनिश्चित करने के लिए "आपको सीमा का उपयोग नहीं करना चाहिए", यह सुनिश्चित करने के लिए कि मैं उस समाधान का उपयोग करने की वकालत नहीं कर रहा था –

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