Найти - Пользователи
Полная версия: Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?
Начало » Python для новичков » Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?
1 2
AnnaKV
На вход подаётся строка, состоящая из слов, разделённых одним пробелом. Слова состоят из маленьких латинских букв. Напечатайте исходную строку, сделав так, чтобы каждое слово начиналось с большой буквы. При этом используйте вашу функцию capitalize().

s=str(input())
def capitalize(s):
    kod1=ord(s[0])
    kod2=kod1-32
    s=s.replace(chr(kod1),chr(kod2),1)
    i=0
    index=0
    while i<=len(s)-1:
        index=s.find(" ",i)
        if index==-1:
            return s
        else:
            kod1=ord(s[index+1])
            kod2=kod1-32
            [u]s=s[:i]+ s[i:].replace(chr(kod1),chr(kod2),1)[/u]
            i=index+1
    return s    
print(capitalize(s))
Подчеркнутая строка не печатает квадратные скобки s(:i ) + s(i: ).replace и т.д.
Firik
Оберните код в теги code
Romissevd
Есть же метод upper(), зачем изощряться с переводом в ASCII
def capitalize(word):
    new_word = word[0].upper() + word[1:]
    return new_word
s = input("Enter word to space").split(' ')
print(' '.join(map(capitalize, s)))
AnnaKV
Romissevd
Есть же метод upper(), зачем изощряться с переводом в ASCII
такое задание
Firik
AnnaKV
Так пишите целиком задание, что ж нам гадать чтоли
old_monty
Для AnnaKV
Если условие именно такое, что слова состоят только из маленьких латинских букв, тогда все решается очень просто. Можно даже не создавать файл .py с программой, а всю работу - определение вашей собственной функции capitalize() и проверку ее работы - сделать прямо в командной строке интерпретатора Python:
>>> def capitalize(s):
...    s1 = []
...    s = s.split()
...    for i in range(len(s)):
...       s[i]  = chr(ord(s[i][0]) - 32) + s[i][1:]
...       s1.append(s[i])
...    s1 = " ".join(s1)
...    return s1
... 
>>> s = "hello, wonderful world!"
>>> print(capitalize(s))
Hello, Wonderful World!
>>> 
AnnaKV
old_monty
Для AnnaKVЕсли условие именно такое, что слова состоят только из маленьких латинских букв, тогда все решается очень просто. Можно даже не создавать файл .py с программой, а всю работу - определение вашей собственной функции capitalize() и проверку ее работы - сделать прямо в командной строке интерпретатора Python:
Спасибо! Да, задание именно такое.
AnnaKV
Firik
На вход подаётся строка, состоящая из слов, разделённых одним пробелом. Слова состоят из маленьких латинских букв. Напечатайте исходную строку, сделав так, чтобы каждое слово начиналось с большой буквы. При этом используйте вашу функцию capitalize().
Так я и написала.
На вход подаётся строка, состоящая из слов, разделённых одним пробелом. Слова состоят из маленьких латинских букв. Напечатайте исходную строку, сделав так, чтобы каждое слово начиналось с большой буквы. При этом используйте вашу функцию capitalize().
old_monty
AnnaKV
Спасибо! Да, задание именно такое.
Пожалуйста. А как насчет моего решения? Вы о нем почему-то ничего не сказали…

А мое решение, с точно той же самой функцией capitalize(), которая выше, пригодно не только для латинских, но и для русских букв:
>>> s = 'здравствуй, удивительный мир'
>>> capitalize(s)
'Здравствуй, Удивительный Мир'
>>> 
Но все же, не для всех 100% русских букв. Для каких русских букв оно не годится - можете найти это сами, если интересно.
AnnaKV
old_monty
Я его скопировала и пошла проверять. Ваша программа помогла мне открыть эталонное решение преподавателя. Я так понимаю, в Вашем решении используется двумерный массив, а мы его еще не учили. Эту задачу наверно требовалось решать более простыми способами.
А вы не могли бы сказать в чем ошибка в моей программе? Все проверочные варианты работают, кроме одного слова:
de noche todos los gatos son pardos
выдает
De Noche Todos Los GatoS son Pardos

P.S. Мне не у кого спросить. Я учусь сама http://pythontutor.ru/lessons/functions/problems/capitalize/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB