@KeterVik

Как правильно преобразовать строку в число?

Есть список вида:
array = ["one", "two", "three"]
Я создаю функцию:
def func(arg):
    if arg == "one":
        return 1
    elif arg ...
, чтобы преобразовать строку в число.
После этого я пишу:
var = random.choice(array)
new_array = []
new_array.append(func(var))
, но значения в списке всегда [1, 1, 1, ...]. Одни единицы. Предпологаю, что запись функции, которая меняет строковое значение на целочисленное, неправильная. Как её правильно записать? В моём исходном коде есть десятки элементов. Суть в том, что все они строковые литералы. Но каждый из них должен иметь числовое значение, для этого мне нужно каждый строковый литерал преобразовать в число. То есть мне нужно создать функцию, чтобы случайный строковый литерал преобразовался в число.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вместо пелёнки из if'ов намного проще и эффективнее использовать индекс в списке, если элементы в списке - это следующие по порядоку числительные:

NUMERALS = [
    'zero',
    'one',
    'two',
    ...
]

def numeral2number(numeral):
    return NUMERALS.index(numeral.lower)

А если не по порядку, то словарь

NUMERALS = {
    'zero': 0, 
    'one': 1,
    'two': 2,
    ...
}

def numeral2number(numeral):
    return NUMERALS.get(numeral.lower)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kentuck1213
@kentuck1213
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы