2012-08-01 18 views
11

मैं रैंकिंग प्रकार की बात कर रहा हूं, क्या होता है कि मैं स्कोर को वर्तमान स्कोर से तुलना करता हूं और यदि स्कोर कम होता है तो वर्तमान में खिलाड़ी को उच्च स्कोर मिला है, लेकिन इसका उपयोग करते समय यहाँ कोडसे कम की तुलना में ग्रेटर, पायथन

 print "Score = " + str(score) + ", Compared to = " + str(array[x]) 
     if score < array[x]: 
       #Do stuff here 

लेकिन भले ही स्कोर 4 और सरणी है अगर बयान अभी भी किया जाता है [x] 2 है?

मैं कुछ गलत कर रहा हूं?

मेरी समझ यह है कि यदि स्कोर 4 और सरणी [x] 2 है तो 4 2 से अधिक है जिसका अर्थ है कि यह वापस आ गया है?


यहाँ पूर्ण कोड

def getRank(array, score): 
    rank = 0 
    rankSet = False 
    for x in range(0, len(array)): 
     print "Score = " + str(score) + ", Compared to = " + str(array[x]) 
     if score < array[x]: 
      if not rankSet: 
       rank = x 
       print "Set rank to: " + str(rank) 
       rankSet = True 
     elif score == array[x] or score > array[x]: 
      rank += 1 
      print "Rank higher than " + str(x) 
    print "Rank = " + str(rank) 
    return rank 

यह इस करता है, तो स्कोर = 4 और सरणी से बना है [1, 2]

Score = 4, Compared to = 1 
Set rank to: 0 
Score = 4, Compared to = 2 
Rank = 0 

उत्तर

21

चेक सुनिश्चित करने के लिए प्रिंट दोनों कि स्कोर और सरणी [x] संख्यात्मक प्रकार हैं। आप एक स्ट्रिंग के लिए एक पूर्णांक की तुलना कर सकते हैं ... जो Python 2.x में दिल से संभव है।

>>> 2 < "2" 
True 
>>> 2 > "2" 
False 
>>> 2 == "2" 
False 

संपादित

आगे स्पष्टीकरण: How does Python compare string and int?

+3

सबसे आसान तरीका है की जाँच करने के: 'प्रिंट रेपर (स्कोर), रेपर (सरणी [x])'। इसके अलावा: पायथन 3 में, आपको 'TypeError: unorderable प्रकार: int() Dougal

+0

मैंने डी के बारे में क्यों नहीं सोचा था: मुझे लगता है कि मैं 'प्रिंट प्रकार (स्कोर)' का उपयोग करके – FabianCook

+0

हो सकता हूं, यह ' 'के साथ वापस आता है, लेकिन मुझे लगता है कि यह वह सरणी है जो इसे कर रही है। – FabianCook

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