2017-02-06 3 views
1

So versuche ich das kleinste/kleinste Zeichen in einer Zeichenfolge zu finden. Das Programm soll jedes Zeichen miteinander vergleichen und das kleinste Zeichen finden. Sollte beim Anruf so aussehen.Wie Char Strings zu vergleichen

least("rcDefxB") 
The least char is B 

dies ist der Code, den ich

bisher haben
def least(inputS): 
for i in range(len(inputS)-1): 
    current = inputS[i] 
    nextt = inputS[i+1] 
    if current > nextt: 
     current = nextt 
     nextt = inputS[i+2] 
     print('The least char is',current) 

aber die Ausgabe, die ich ist diese:

least("rcDefxB") 
C 
D 
IndexError: string index out of range 
in line least nextt = inputS[i+2] 

I erhöht wahrscheinlich die falsche Art und Weise oder meine Charaktere verglichen die Falsche Weg. Ich habe das Gefühl, dass ich das richtige Setup habe, lass mich wissen, wo ich meinen Code verpasst habe.

+1

Schieben Sie alles unter 'def destChar (inputString)' 4 Felder auf der rechten Seite. –

+1

Und natürlich, ändern Sie 'index

+1

mit der kleinsten meinen Sie die ASCII-Position oder die Alphabet-Position (ignorieren Groß- oder Kleinschreibung) – armnotstrong

Antwort

5

Sie könnten nur verwenden:

min("rcDefxB") 

Wenn Sie wirklich es auf eigene Faust schreiben möchten, können Sie verwenden:

def leastChar(inputString): 
    min_char = inputString[0] 
    for char in inputString: 
    if char < min_char: 
     min_char = char 
    print 'The leastchar is %s' % min_char 

Beide Methoden erfordern eine nicht leere Zeichenfolge.

2

Eric Duminil Lösung ist besser, aber wenn Sie Ihren Code wollen richtig funktioniert, sollten Sie es wie folgt ändern:

inputString = "rcDefxB" 
index = 0 
while index < len(inputString) - 1: 
    currentChar = inputString[index] 
    nextChar = inputString[index + 1] 
    if currentChar > nextChar: 
     currentChar = nextChar 
    index += 1 
print('The leastchar is',currentChar) 
2

wenn durch kleinste meinen Sie den ASCII-Code Position gerade:

>>> s = "aBCdefg" 
>>> min(s) 
'B' 

aber wenn Sie die Position des Alphabets meinen, ignorieren Sie den Groß- oder Kleinbuchstaben:

>>> min(s, key=lambda x: x.upper()) 
'a' 
0

Bitte cons ider den folgenden Ansatz:

def least(inputString): 
    leastChar = min(list(inputString)) 
    print('The leastchar is', leastChar) 

Nach least("rcDefxB") läuft, müssen Sie:

The leastchar is B 
0

Nun, Sie sind nicht wirklich in Zeichenfolge, die die niedrigsten Zeichen zu finden. Sie vergleichen nur benachbarte Zeichen. Ihr Code zeigt den Fehler immer dann an, wenn das letzte Zeichen der Zeichenfolge kleiner als das vorletzte Zeichen ist.