Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2016 11:32:08

AnnaKV
Зарегистрирован: 2016-01-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

На вход подаётся строка, состоящая из слов, разделённых одним пробелом. Слова состоят из маленьких латинских букв. Напечатайте исходную строку, сделав так, чтобы каждое слово начиналось с большой буквы. При этом используйте вашу функцию 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 и т.д.

Отредактировано AnnaKV (Янв. 24, 2016 14:02:01)

Офлайн

#2 Янв. 24, 2016 11:45:59

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

Оберните код в теги code

Офлайн

#3 Янв. 24, 2016 12:03:01

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

Есть же метод 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)))

Офлайн

#4 Янв. 24, 2016 14:02:36

AnnaKV
Зарегистрирован: 2016-01-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

Romissevd
Есть же метод upper(), зачем изощряться с переводом в ASCII
такое задание

Офлайн

#5 Янв. 24, 2016 14:33:46

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

AnnaKV
Так пишите целиком задание, что ж нам гадать чтоли

Офлайн

#6 Янв. 24, 2016 17:42:11

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

Для 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!
>>> 

Офлайн

#7 Янв. 24, 2016 19:20:08

AnnaKV
Зарегистрирован: 2016-01-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

old_monty
Для AnnaKVЕсли условие именно такое, что слова состоят только из маленьких латинских букв, тогда все решается очень просто. Можно даже не создавать файл .py с программой, а всю работу - определение вашей собственной функции capitalize() и проверку ее работы - сделать прямо в командной строке интерпретатора Python:
Спасибо! Да, задание именно такое.

Офлайн

#8 Янв. 24, 2016 19:21:27

AnnaKV
Зарегистрирован: 2016-01-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

Firik
На вход подаётся строка, состоящая из слов, разделённых одним пробелом. Слова состоят из маленьких латинских букв. Напечатайте исходную строку, сделав так, чтобы каждое слово начиналось с большой буквы. При этом используйте вашу функцию capitalize().
Так я и написала.
На вход подаётся строка, состоящая из слов, разделённых одним пробелом. Слова состоят из маленьких латинских букв. Напечатайте исходную строку, сделав так, чтобы каждое слово начиналось с большой буквы. При этом используйте вашу функцию capitalize().

Офлайн

#9 Янв. 24, 2016 19:53:16

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

AnnaKV
Спасибо! Да, задание именно такое.
Пожалуйста. А как насчет моего решения? Вы о нем почему-то ничего не сказали…

А мое решение, с точно той же самой функцией capitalize(), которая выше, пригодно не только для латинских, но и для русских букв:
>>> s = 'здравствуй, удивительный мир'
>>> capitalize(s)
'Здравствуй, Удивительный Мир'
>>> 
Но все же, не для всех 100% русских букв. Для каких русских букв оно не годится - можете найти это сами, если интересно.

Отредактировано old_monty (Янв. 24, 2016 20:00:00)

Офлайн

#10 Янв. 25, 2016 09:40:31

AnnaKV
Зарегистрирован: 2016-01-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста!!! Замена первой буквы слова на большую. Почему не всегда работает?

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/

Отредактировано AnnaKV (Янв. 25, 2016 09:40:58)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version