Я работаю над примерами, в которых мне нужно преобразовать циклы for в циклы while, и это меня озадачило. Проблема для меня заключается в том, что циклы for идеально спроектированы для итерации по каждому символу в строке, а затем этот символ может быть легко приведен как 'ord', чтобы получить его код ASCII. Но преобразование этого в цикл while вызывает у меня проблемы, когда я пытаюсь получить часть ord. Я попытался с помощью split () и попытался найти каждую букву с помощью индекса, но пока он не работает.
Обратите внимание, что сам код является просто мусорным кодом, который не производит ничего полезного - он просто предназначен для выполнения циклов while. Спасибо!
Поставляемая задача для преобразования в цикл while:
def convert(string):
"""take string and return an int that is the unicode version"""
num = 0
for char in string:
if ord(char) > 20:
num = ord(char) - 10
else:
num = ord(char) * 2
return num
print(convert('Test this string'))
Моя попытка версии цикла while:
def convert(string):
"""take string and return an int that is the unicode version"""
char_value = string.split()
num = 0
char_index = 0
while char_index < len(string):
if ord(char_value[char_index]) > 20:
num = char_value - 10
else:
num = char_value * 2
char_index += 1
return num
print(convert('Test this string'))
РЕДАКТИРОВАТЬ: вот рабочее решение, адаптированное после предложения NPE (на случай, если новички захотят увидеть полное решение):
def convert(string):
"""take string and return an int that is the unicode version"""
num = 0
char_index = 0
while char_index < len(string):
char = string[char_index]
if ord(char) > 20:
num = ord(char) - 10
else:
num = ord(char) * 2
char_index += 1
return num
print(convert('Test this string'))