Вас просят следить за тем, чтобы в паспортах имена и фамилии людей начинались > с большой буквы. Например, Элисон Хек > следует правильно писать с заглавной буквы как Элисон Хек. ПРИМЕЧАНИЕ. В слове только первый символ пишется с большой буквы. Пример 12abc с заглавной буквы остается 12abc.
Один тестовый случай не пройден, т.е. Ввод (стандартный ввод)
1 w 2 r 3g
Ожидаемый результат
1 W 2 R 3g
Мой вывод
1 W 2 R 3G
import math
import os
import random
import re
import sys
def solve(s):
x = re.sub("[^A-Za-z0-9]", " ", s)
a = x.title()
return a
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
s = input()
result = solve(s)
fptr.write(result + '\n')
fptr.close()
В ваших разбиениях вы можете проверить с помощью встроенных функций Python, если первая буква не является цифрой или строчной буквой, и только в этих случаях вы можете заменить первую букву буквой верхнего регистра. Подсказка: isdigit, upper, replace (это можно использовать с 1 в качестве третьего параметра, чтобы заменить только первую букву)






Вы можете split ввести пробел, а затем использовать capitalize, который преобразует первый символ каждой строки в заглавный. Затем вы можете join слова снова вместе. Например:
inp = '1 w 2 r 3g'
res = ' '.join(s.capitalize() for s in inp.split())
Вывод:
1 W 2 R 3g
Попробуйте простой цикл, в котором символ заглавной буквы, если перед ним стоит пробел.
x = re.sub("[^A-Za-z0-9]", " ", s)
a = x[0]
for i in range(1, len(x)):
if x[i - 1] == " ":
a = a + x[i].title()
else:
a = a + x[i]
return a
Выход:
1 W 2 R 3g
Разве ты не можешь просто str.title() это? Не существует такого понятия, как число в верхнем регистре, поэтому ”123abc”.title() все еще должен давать желаемый результат.
'123abc'.title() производит 123Abc, что не является желаемым результатом
Убедитесь, что вы используете правильное форматирование фрагментов кода.