2017-02-06 2 views
1

Итак, я пытаюсь найти наименьший/наименьший символ в строке. Предполагается, что программа сравнивает каждый символ друг с другом и находит наименьший символ. Должно выглядеть так, когда вы звоните.Как сравнить Char Strings

least("rcDefxB") 
The least char is B 

это код, который я до сих пор

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) 

но вывод, что я получаю это:

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

я, вероятно, увеличивается неправильный путь или по сравнению мои символы, в которых Неправильный путь. Я чувствую, что у меня есть правильная настройка, дайте мне знать, где я пропустил свой код.

+1

Нажмите все ниже 'def lessChar (inputString)' 4 пробела справа. –

+1

И, конечно, измените 'index

+1

по наименьшей, вы имеете в виду позицию ASCII или позицию алфавита (игнорировать верхний или нижний регистр). – armnotstrong

ответ

5

Вы могли бы просто использовать:

min("rcDefxB") 

Если вы действительно хотите написать его самостоятельно, вы можете использовать:

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 

Оба метода требуют непустой строки.

решение
2

Эрик Duminil лучше, но если вы хотите, чтобы ваш код работает правильно, вы должны изменить его следующим образом:

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

если по Наименьшее вы имеете в виду позицию кода ASCII просто:

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

но если вы имеете в виду позицию алфавита, игнорируйте верхний или нижний регистр:

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

Просьба просить IDER следующий подход:

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

После запуска least("rcDefxB"), вы будете иметь:

The leastchar is B 
0

Ну вы на самом деле не найти наименьший символ в строке. Вы сравниваете только соседние символы. Ваш код покажет ошибку, если последний символ вашей строки меньше, чем второй последний символ.

Смежные вопросы