2012-01-29 20 views
11

मैं एक साधारण प्रोग्राम बनाने की कोशिश कर रहा हूं जो आपको संख्यात्मकता के अनुसार आपका भाग्यशाली नंबर बताता है।टाइपरर: 'int' ऑब्जेक्ट सबस्क्रिप्ट करने योग्य नहीं है

File "number.py", line 12, in <module> 
    sumln = (int(sumall[0])+int(sumall[1])) 
TypeError: 'int' object is not subscriptable 

मेरे स्क्रिप्ट है:: मैं इस त्रुटि हो रही पर रखने

birthday = raw_input("When is your birthday(mm/dd/yyyy)? ") 
summ = (int(birthday[0])+int(birthday[1])) 
sumd = (int(birthday[3])+int(birthday[4])) 
sumy= (int(birthday[6])+int(birthday[7])+int(birthday[8])+int(birthday[9])) 
sumall = summ + sumd + sumy 
print "The sum of your numbers is", sumall 
sumln = (int(sumall[0])+int(sumall[1])) 
print "Your lucky number is", sumln` 
+0

'sumall' में संग्रहीत मान एक पूर्णांक (3 अन्य पूर्णांक के योग का परिणाम) है। फिर भी कुछ पंक्तियां नीचे, आप पूर्णांक को पूर्णांक करने का प्रयास करते हैं इसलिए त्रुटि। (!) –

+3

आप भी उपयोग करना चाहेंगे 'birthday.split ('/') 'दिन, महीने और वर्ष अलग करने के लिए। –

उत्तर

2

आप एक नंबर के अंकों का योग करना चाहते हैं, एक तरह से यह sum() उपयोग कर रहा है करने के लिए + एक जनरेटर अभिव्यक्ति:

sum(int(i) for i in str(155)) 

मैं एक छोटे से अपने कोड sum() का उपयोग कर संशोधित, हो सकता है आप एक ले जाना चाहते हैं इस पर गौर:

birthday = raw_input("When is your birthday(mm/dd/yyyy)? ") 
summ = sum(int(i) for i in birthday[0:2]) 
sumd = sum(int(i) for i in birthday[3:5]) 
sumy = sum(int(i) for i in birthday[6:10]) 
sumall = summ + sumd + sumy 
print "The sum of your numbers is", sumall 
sumln = sum(int(c) for c in str(sumall))) 
print "Your lucky number is", sumln 
6

त्रुटि यह वास्तव में क्या कहना है कि वह है, आप Sumall [0] लेने की कोशिश कर रहे हैं जब Sumall एक int है और यह कोई मतलब नहीं है। आपको क्या लगता है कि योग होना चाहिए? (int(sumall[0])+int(sumall[1]))

ऐसा इसलिए है क्योंकि sumall एक int और नहीं किसी सूची या dict है:

0

आप ऐसा ही कुछ नहीं कर सकते।

तो, summ + sumd आप भाग्यशाली संख्या

3
sumall = summ + sumd + sumy 

आपका sumall एक पूर्णांक है कर रहे हैं हो जाएगा। यदि आप इसके से अलग वर्ण चाहते हैं, तो इसे पहले एक स्ट्रिंग में कनवर्ट करें।

1

ऐसा करें:

sumall = summ + sumd + sumy 
print "The sum of your numbers is", sumall 
sumall = str(sumall) # add this line 
sumln = (int(sumall[0])+int(sumall[1])) 
print "Your lucky number is", sumln 

sumall एक संख्या है, और आप सबस्क्रिप्ट संकेतन (sumall[0], sumall[1]) का उपयोग कर अपने अंकों का उपयोग नहीं कर सकते हैं। इसके लिए काम करने के लिए, आपको इसे एक स्ट्रिंग में बदलना होगा।

0

बस स्पष्ट होना, सभी जवाब अब तक सही हैं, लेकिन उनके पीछे के कारणों को बहुत अच्छी तरह से व्याख्या नहीं की है।

sumall चर अभी तक एक स्ट्रिंग नहीं है। Parentheticals एक स्ट्रिंग में परिवर्तित नहीं होंगे (उदाहरण के लिए summ = (int(birthday[0])+int(birthday[1])) अभी भी एक पूर्णांक देता है। ऐसा लगता है कि आप str((int(sumall[0])+int(sumall[1]))) टाइप करने के लिए सबसे अधिक संभावना रखते हैं, लेकिन भूल गए हैं। str() फ़ंक्शन सभी को ठीक करता है क्योंकि यह किसी स्ट्रिंग के अनुकूल में परिवर्तित करता है।

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