2010-03-04 17 views
29

पायथन और प्रोग्रामिंग के लिए नया मुझे यह त्रुटि कैसे मिल रही है?टाइप एरर: असमर्थित ऑपरेंड प्रकार (-) के लिए -: 'str' और 'int'

def cat_n_times(s, n): 
    while s != 0: 
     print(n) 
     s = s - 1 

text = input("What would you like the computer to repeat back to you: ") 
num = input("How many times: ") 

cat_n_times(num, text) 

उत्तर

34
    क्योंकि (अजगर 3) input एक स्ट्रिंग रिटर्न
  1. कारण यह विफल हो रहा है है। इसे एक पूर्णांक में बदलने के लिए, int(some_string) का उपयोग करें।

  2. आप आमतौर पर पाइथन में इंडेक्स का मैन्युअल रूप से ट्रैक नहीं रखते हैं। इस तरह के एक समारोह को लागू करने का एक बेहतर तरीका

    def cat_n_times(s, n): 
        for i in range(n): 
         print(s) 
    
    text = input("What would you like the computer to repeat back to you: ") 
    num = int(input("How many times: ")) # Convert to an int immediately. 
    
    cat_n_times(text, num) 
    
  3. मैंने आपके एपीआई को थोड़ा ऊपर बदल दिया। मुझे लगता है कि n और sस्ट्रिंग होना चाहिए।

  4. एक सभ्य मौका है कि आप अभी पाइथन 2 सीखना चाहते हैं। भविष्य में संदर्भ के लिए अजगर 3.

+13

+1। सिर्फ पायथन में नहीं, बल्कि प्रोग्रामिंग भाषाओं की विशाल बहुमत में, लूप-निर्माण का उपयोग लूप-निर्माण के मुकाबले ज्यादा बेहतर है, क्योंकि प्रारंभिकरण और अद्यतन कोड को समाप्ति की स्थिति के करीब निकटता में रखा जाता है, जिससे मौका कम हो जाता है गलती करने का –

21

के लिए बहुत कम पुस्तकालय समर्थन अजगर strongly typed है नहीं है। अन्य गतिशील भाषाओं के विपरीत, यह स्वचालित रूप से वस्तुओं को एक प्रकार या दूसरे से नहीं डालेगा (str से int पर) ताकि आपको यह स्वयं करना होगा। आप इसे लंबे समय तक पसंद करेंगे, मेरा विश्वास करो! फोर-लूप का उपयोग करने के लिए

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