Напишите функцию convert_to_python_case(text), которая принимает в качестве аргумента строку в «верблюжьем регистре» и преобразует его в «змеиный регистр».
Следующий программный код:
print(convert_to_python_case('ThisIsCamelCased'))
print(convert_to_python_case('IsPrimeNumber'))
должен выводить:
this_is_camel_cased
is_prime_number
Или намекните на ошибку в моей написанной программе если не лень:
# объявление функции
def convert_to_python_case(text):
s = []
s.append(text)
t = []
for i in range(0, len(s) - 1):
t.append(s[i]) # добавляем каждый элемент отдельно
if s[i].isupper() and i != 0: # проверяем на наличие буквы верхнего регистра
t.append('_')
return t
# считываем данные
txt = input()
# вызываем функцию
print(convert_to_python_case(txt))
Если подаю на вход как по примеру выше, то на выходе получаю : [] ????
Python
Python программирование. Помогите написать программу.

def convert_to_python_case(s):
~~~~t = [s[0].lower()]
~~~~for a in s[1:]:
~~~~~~~~if a.isupper(): # проверяем на наличие буквы верхнего регистра
~~~~~~~~~~~~t.append('_')
~~~~~~~~t.append(a.lower()) # добавляем каждый элемент отдельно
~~~~return ''.join(t)
PS
Для поиска ошибки в крутых IDE есть дебаггер, где можно видеть переменные в ходе выполнения программы.
По-моему в простеньких учебных примерах проще использовать print() для отладки
Например если вставить принт внутрь функции
def convert_to_python_case(text):
~~~~s = []
~~~~s.append(text)
~~~~print(s)
~~~~print(len(s) - 1)
~~~~t = []
~~~~for i in range(0, len(s) - 1):
~~~~~~~~t.append(s[i]) # добавляем каждый элемент отдельно
~~~~~~~~if s[i].isupper() and i != 0: # проверяем на наличие буквы верхнего регистра
~~~~~~~~~~~~t.append('_')
~~~~return t
То будет выдано
==================
ThisIsCamelCased
['ThisIsCamelCased']
0
[]
>>>
То есть видно, что в список s, состоит не из букв строки 'ThisIsCamelCased', а из самой строки и его длина равна единице, а не количеству букв строки.
Чтобы получить список из букв строки, надо к строке применить функцию list()
>>> list('ThisIsCamelCased')
['T', 'h', 'i', 's', 'I', 's', 'C', 'a', 'm', 'e', 'l', 'C', 'a', 's', 'e', 'd']
>>>
~~~~t = [s[0].lower()]
~~~~for a in s[1:]:
~~~~~~~~if a.isupper(): # проверяем на наличие буквы верхнего регистра
~~~~~~~~~~~~t.append('_')
~~~~~~~~t.append(a.lower()) # добавляем каждый элемент отдельно
~~~~return ''.join(t)
PS
Для поиска ошибки в крутых IDE есть дебаггер, где можно видеть переменные в ходе выполнения программы.
По-моему в простеньких учебных примерах проще использовать print() для отладки
Например если вставить принт внутрь функции
def convert_to_python_case(text):
~~~~s = []
~~~~s.append(text)
~~~~print(s)
~~~~print(len(s) - 1)
~~~~t = []
~~~~for i in range(0, len(s) - 1):
~~~~~~~~t.append(s[i]) # добавляем каждый элемент отдельно
~~~~~~~~if s[i].isupper() and i != 0: # проверяем на наличие буквы верхнего регистра
~~~~~~~~~~~~t.append('_')
~~~~return t
То будет выдано
==================
ThisIsCamelCased
['ThisIsCamelCased']
0
[]
>>>
То есть видно, что в список s, состоит не из букв строки 'ThisIsCamelCased', а из самой строки и его длина равна единице, а не количеству букв строки.
Чтобы получить список из букв строки, надо к строке применить функцию list()
>>> list('ThisIsCamelCased')
['T', 'h', 'i', 's', 'I', 's', 'C', 'a', 'm', 'e', 'l', 'C', 'a', 's', 'e', 'd']
>>>
Ahror Nadirov
я понял в чем была ошибка, спасибо
# put your python code here
def convert_to_python_case(text):
return ''.join(['_'+i.lower() if i.isupper() else i.lower() for i in text])[1:]
# считываем данные
txt = input()
# вызываем функцию
print(convert_to_python_case(txt))
def convert_to_python_case(text):
return ''.join(['_'+i.lower() if i.isupper() else i.lower() for i in text])[1:]
# считываем данные
txt = input()
# вызываем функцию
print(convert_to_python_case(txt))
# объявление функции
def convert_to_python_case(text):
for i in text:
if i.isupper():
text = text.replace(i, '_' + i.lower())
return text[1:]
# считываем данные
txt = input()
# вызываем функцию
print(convert_to_python_case(txt))
def convert_to_python_case(text):
for i in text:
if i.isupper():
text = text.replace(i, '_' + i.lower())
return text[1:]
# считываем данные
txt = input()
# вызываем функцию
print(convert_to_python_case(txt))
Похожие вопросы
- Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.
- Помогите написать программу на python
- Помогите написать программу которая посчитает количество строк в отзыве
- Помогите написать программу пожалуйста
- Помогите написать программу на Паскале
- Помогите написать программу на паскале
- Напишите программу на Python
- Очень надо написать программу на Python!!!
- Написать программу в python
- Выразите число в виде суммы четырех квадратов Нужно написать программу на python