अपने कोड है जो अभी भी काम करता है की एक संशोधित संस्करण है प्लस यह कैसे एक ValueError
जिस तरह से आप चाहते हैं बढ़ाने के लिए दिखाया गया है। वैसे, मुझे लगता है कि find_last()
, find_last_index()
, या कुछ सिमलर इस फ़ंक्शन के लिए एक और वर्णनात्मक नाम होगा।
def contains(char_string, char):
largest_index = -1
for i, ch in enumerate(char_string):
if ch == char:
largest_index = i
if largest_index > -1: # any found?
return largest_index # return index of last one
else:
raise ValueError('could not find {} in {}'.format(char, char_string))
print(contains('mississippi', 's')) # -> 6
print(contains('bababa', 'k')) # ->
Traceback (most recent call last):
File "how-to-raise-a-valueerror.py", line 15, in <module>
print(contains('bababa', 'k'))
File "how-to-raise-a-valueerror.py", line 12, in contains
raise ValueError('could not find {} in {}'.format(char, char_string))
ValueError: could not find k in bababa
अपडेट - एक काफी सरल तरीके से
वाह! यहां एक बहुत अधिक संक्षिप्त संस्करण है-अनिवार्य रूप से एक-लाइनर-जो भी तेज़ी से संभव है क्योंकि यह पहले मिलान करने वाले चरित्र के लिए आगे की खोज करने से पहले स्ट्रिंग ([::-1]
के माध्यम से) स्ट्रिंग करता है और यह तेजी से निर्मित- स्ट्रिंग index()
विधि में। आपके वास्तविक प्रश्न के संबंध में, index()
का उपयोग करने के साथ आता है कि एक अच्छी छोटी बोनस सुविधा यह है कि चरित्र सबस्ट्रिंग नहीं मिलने पर यह पहले से ही ValueError
उठाता है, इसलिए ऐसा करने के लिए अतिरिक्त कुछ भी आवश्यक नहीं है।
यहाँ यह एक त्वरित इकाई परीक्षण के साथ है:
def contains(char_string, char):
# (-1 adjusts returned index to account for searching in reverse)
return len(char_string) - char_string[::-1].index(char) - 1
print(contains('mississippi', 's')) # -> 6
print(contains('bababa', 'k')) # ->
Traceback (most recent call last):
File "better-way-to-raise-a-valueerror.py", line 9, in <module>
print(contains('bababa', 'k'))
File "better-way-to-raise-a-valueerror", line 6, in contains
return len(char_string) - char_string[::-1].index(char) - 1
ValueError: substring not found
आपका प्रश्न क्या है? – Falmarri
मैं ValueError – user531225
कैसे बढ़ा सकता हूं, वैल्यूएरर() हाहाहा – slezica