Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python TypeError: can't multiply sequence by non-int of type 'str' समाधान

TypeError: can't multiply sequence by non-int of type 'str'

आप पायथन में दो नंबर्स को एक साथ गुणा कर सकते हैं। आप किसी नंबर को स्ट्रिंग से भी गुणा कर सकते हैं। यह एक स्ट्रिंग का सीक्वेंस रिटर्न करता है जो विशिष्ट संख्या में बार दोहराता है।

यदि आप किसी स्ट्रिंग को दूसरी स्ट्रिंग से गुणा करने का प्रयास करते हैं, तो आपको "TypeError: can't multiply sequence by non-int of type 'str'" एरर मिलती है।

इस गाइड में, हम बात करते हैं कि इस एरर का क्या मतलब है और आप इसे अपने कोड में कहां देख सकते हैं। हम इस एरर के एक उदाहरण के माध्यम से चलते हैं ताकि आप यह समझ सकें कि इसे कैसे हल किया जाए।

उदाहरण परिदृश्य

आइए एक प्रोग्राम बनाते हैं जो गणना करता है कि एक रेस्तरां ने गुरुवार दोपहर को अपने जैम स्कोन्स पर कितना पैसा कमाया।

शुरू करने के लिए, हमें जैम स्कोन की कीमत परिभाषित करने की आवश्यकता है। हम यूज़र से यह भी पूछते हैं कि उन्होंने अपने अंतिम बिजनेस डे में कितने जैम स्कोन्स बेचे, input() स्टेटमेंट का उपयोग करके:

jam_scone = "1.95"
sold = input("How many jam scones did you sell yesterday? ")

अगला, हम इन दो मानों को एक साथ गुणा करते हैं। यह हमें बताएगा कि किसी दिए गए दिन स्कोन्स से कितना पैसा कमाया गया:

earned_from_scones = jam_scone * sold

अब जब हम जानते हैं कि स्कोन्स से कितना कमाया गया, हम एक print() स्टेटमेंट लिखते हैं जो यूज़र को हमारी गणना के परिणाम के बारे में सूचित करता है:

print("You earned ${} from selling scones.".format(earned_from_scones))

format() मेथड हमें "earned_from_scones" का मान वहां जोड़ने देता है जहां हमारे कर्ली ब्रेसेस ({}) हमारे स्ट्रिंग में दिखाई देते हैं।

हमें यह भी गणना करने की आवश्यकता है कि प्रत्येक स्कोन पर कितना लाभ होता है। हम जानते हैं कि हम प्रत्येक स्कोन पर 25-सेंट का लाभ कमाते हैं। यह गणना करने के लिए कि कितना लाभ कमाया गया, हम इस कोड का उपयोग करते हैं:

profit = sold * 0.25
print("You made a ${} profit from selling scones.".format(profit))

यह कोड गणना करता है कि प्रत्येक स्कोन से कितना लाभ कमाया गया और फिर उस मान को कंसोल पर प्रिंट करता है। आइए अपना कोड चलाएं और देखें कि क्या यह काम करता है:

How many jam scones did you sell yesterday? 17
Traceback (most recent call last):
  File "main.py", line 4, in 
    earned_from_scones = jam_scone * sold
TypeError: can't multiply sequence by non-int of type 'str'

हमारा कोड एरर रिटर्न करता है।

समाधान

आइए अपने एरर से कोड लाइन का विश्लेषण करें:

earned_from_scones = jam_scone * sold

हालांकि कोड की यह लाइन ठीक दिखती है, एक समस्या है: हम दो स्ट्रिंग मानों को एक साथ गुणा करने का प्रयास कर रहे हैं। हम "jam_scone" को स्ट्रिंग के रूप में स्टोर करते हैं। input() मेथड एक स्ट्रिंग रिटर्न करता है जिसका अर्थ है कि sold() का स्ट्रिंग मान है।

इस समस्या को हल करने के लिए, हमें यह सुनिश्चित करने की आवश्यकता है कि "jam_scone" और "sold" दोनों फ्लोटिंग पॉइंट्स हैं। यह हमें इन मानों पर गणितीय ऑपरेशन करने देता है।

अगला, हम बदलते हैं कि हम इन वेरिएबल्स के मान कैसे घोषित करते हैं:

jam_scone = 1.95
sold = float(input("How many jam scones did you sell yesterday? "))

"jam_scone" का मान अब कोटेशन मार्क्स में नहीं है। यह दर्शाता है कि हमने "jam_scone" को स्ट्रिंग से फ्लोट में बदल दिया है। हमने "sold" के मान को फ्लोटिंग-पॉइंट नंबर में बदलने के लिए float() मेथड का भी उपयोग किया है।

अपना कोड चलाएं और देखें क्या होता है:

How many jam scones did you sell yesterday? 17
You earned $33.15 from selling scones.
You made a $4.25 profit from selling scones.

हमारा कोड सफलतापूर्वक काम करता है। पहले, हमारा कोड यूज़र को कंसोल में कितने स्कोन्स बिके हैं, डालने के लिए कहता है। अगला, हमारा प्रोग्राम गणना करता है कि स्टोर ने स्कोन्स बेचकर कितना पैसा कमाया। अंत में, हमारा प्रोग्राम स्कोन बिक्री से उत्पन्न लाभ की गणना करता है।

निष्कर्ष

"TypeError: can't multiply sequence by non-int of type 'str'" एरर तब होती है यदि आप दो स्ट्रिंग मानों को एक साथ गुणा करने का प्रयास करते हैं। आप इस समस्या को ठीक कर सकते हैं यह सुनिश्चित करके कि आप या तो दो न्यूमेरिकल मानों को एक साथ गुणा करते हैं या आप केवल स्ट्रिंग को इंटीजर से गुणा करते हैं।

अब आप इस एरर को एक पायथनिस्टा की तरह हल करने के लिए तैयार हैं!

  1. - पायथन में स्ट्रिंग में सबसे लंबी दोहराव वाली सीक्वेंस कैसे खोजें

    आप प्रत्येक स्थिति से शुरू होने वाली प्रत्येक सबस्ट्रिंग की गिनती के लिए defaultdict का उपयोग कर सकते हैं। getsubs मेथड एक जेनरेटर मेथड है जो हर बार कॉल किए जाने पर एक छोटी सबस्ट्रिंग देता है। उदाहरण = 2] if filtered: maxkey = max(filtered, key=len) # सबसे लंबी स्ट्रिंग खोजें re

  1. - पायथन में वेरिएबल का प्रकार स्ट्रिंग है या नहीं कैसे जांचें

    हम isinstance(var, class) का उपयोग करके जांच सकते हैं कि var दी गई क्लास का इंस्टेंस है या नहीं। पायथन 2.x में str और unicode का बेस क्लास basestring है। इसलिए हम इसे इस प्रकार उपयोग कर सकते हैं: >>> s = A string >>> isinstance(s, basestring) True >>> isinstance(s, str) Tr

  1. - पायथन में TypeError एक्सेप्शन कैसे पकड़ें?

    TypeErrors गलत प्रकार के ऑब्जेक्ट्स को जोड़ने या गलत प्रकार के ऑब्जेक्ट के साथ फ़ंक्शन कॉल करने के कारण होते हैं। उदाहरण import sys try: ny = Statue of Liberty my_list = [3, 4, 5, 8, 9] print(my_list + ny) except TypeError as e: print(e) print(sys.exc_type) आउटपुट can only concat