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

पायथन टाइप एरर:गैर-इंट प्रकार 'str' समाधान द्वारा अनुक्रम को गुणा नहीं कर सकता है

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

यदि आप किसी स्ट्रिंग को किसी अन्य स्ट्रिंग से गुणा करने का प्रयास करते हैं, तो आप "TypeError:'str' प्रकार के गैर-int से अनुक्रम को गुणा नहीं कर सकते" त्रुटि का सामना करते हैं।

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

लेखन त्रुटि:'str' प्रकार के गैर-इंट से अनुक्रम को गुणा नहीं कर सकता

स्ट्रिंग्स एक प्रकार का अनुक्रम है। ऐसा इसलिए है क्योंकि उनमें ऐसे पात्र होते हैं जिन पर पायथन पुनरावृति कर सकता है। अन्य प्रकार के अनुक्रमों में टुपल्स, शब्दकोश और सूचियाँ शामिल हैं।

आप एक स्ट्रिंग बनाने के लिए गुणन ऑपरेटर (*) का उपयोग करते हैं जो एक स्ट्रिंग की सामग्री को दोहराता है। निम्नलिखित कोड पर विचार करें:

print("Cakes! " * 2)

यह कोड लौटाता है:“केक! केक!"। गुणन ऑपरेटर हमारे स्ट्रिंग को दो बार दोहराता है।

आप एक स्ट्रिंग को एक स्ट्रिंग से गुणा करने के लिए गुणन ऑपरेटर का उपयोग नहीं कर सकते। पूर्णांक और फ़्लोटिंग-पॉइंट नंबर ही एकमात्र मान हैं जिन्हें समान डेटा प्रकार के मानों से गुणा किया जा सकता है। पाइथन के पास दो स्ट्रिंग्स को गुणा करने की व्याख्या करने का कोई तरीका नहीं है।

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

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

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

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

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))

फ़ॉर्मेट () विधि हमें "अर्जित_फ्रॉम_स्कोन्स" का मान जोड़ने देती है जहाँ हमारे घुंघराले ब्रेसिज़ ({}) हमारे स्ट्रिंग में दिखाई देते हैं।

हमें यह भी गणना करने की आवश्यकता है कि प्रत्येक स्कोन पर कितना लाभ होता है। हम जानते हैं कि हम प्रत्येक स्कोन पर 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 <module>
	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" को एक स्ट्रिंग से एक फ्लोट में बदल दिया है। हमने "बिके" के मान को फ्लोटिंग-पॉइंट नंबर में बदलने के लिए फ्लोट () विधि का भी उपयोग किया है।

हमारा कोड चलाएँ और देखें कि क्या होता है:

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.

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

निष्कर्ष

यदि आप दो स्ट्रिंग मानों को एक साथ गुणा करने का प्रयास करते हैं तो "लेखन त्रुटि:गैर-int प्रकार 'str' द्वारा अनुक्रम को गुणा नहीं कर सकता" त्रुटि उत्पन्न होती है। आप यह सुनिश्चित करके इस समस्या को ठीक कर सकते हैं कि आप या तो दो संख्यात्मक मानों को एक साथ गुणा करते हैं या आप केवल एक स्ट्रिंग को एक पूर्णांक से गुणा करते हैं।

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


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

    आप इनपुट स्ट्रिंग में प्रत्येक स्थिति से शुरू होने वाले प्रत्येक उप स्ट्रिंग का मिलान करने के लिए डिफॉल्टडिक्ट का उपयोग कर सकते हैं। गेटसब विधि एक जनरेटर विधि है जो हर बार कॉल करने पर एक छोटी उप स्ट्रिंग उत्पन्न करती है। उदाहरण from collections import defaultdict def getsubs(loc, s):     s

  1. कैसे जांचें कि पाइथन में एक चर का प्रकार स्ट्रिंग है या नहीं?

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

  1. पायथन में TypeError अपवाद कैसे पकड़ें?

    TypeErrors गलत प्रकार की वस्तुओं के संयोजन, या किसी फ़ंक्शन को गलत प्रकार के ऑब्जेक्ट के साथ कॉल करने के कारण होते हैं। उदाहरण आयात systry :ny =Statue of Libertymy_list =[3, 4, 5, 8, 9] my_list + nyexcept TypeError को e:print eprint sys.exc_type के रूप में प्रिंट करें आउटपुट केवल सूची को जोड़ सकते ह