2016-12-07 6 views
-4

Я довольно новичок в языке python, но наткнулся на что-то, что я нашел тревожным. Есть ли способ превратить строку в целое число?Как преобразовать строку в целые числа python

Нет, я не имею в виду, как преобразовать строку, число, как это:

int('1') 

Я уверен, что я могу сделать что-то вроде этого:

foo = 'foo' 
foo = 10 
int(foo) 

Но есть там более простой способ сделать это, вместо того, чтобы набирать его так?

В контексте, что я пытаюсь вставить его, я пытаюсь превратить ценность карты, например, Jack, эквивалентную 10 в карточной игре.

+0

Вы хотите функцию для преобразования ' "Foo"' в '10'? – qxz

+0

По существу, да – Mushy0364

+0

'foo = 'foo'', за которым следует' foo = 10', бессмысленно, поскольку присваивает 'foo' значение 10. –

ответ

0

Я пытаюсь превратить ценность карты, например, Jack, эквивалентную 10 в карточной игре

Вам нужно проверить строку - если цифра, а затем конвертировать, еще получить соответствующее значение.

def get_card_value(s): 
    if s.isdigit() and (1 < int(s) < 10): 
    return int(s) 
    elif s.lower() == 'jack': 
    return 10 
    elif s.lower() == 'queen': 
    return 11 
    elif s.lower() == 'king': 
    return 12 
    else: 
    return -1 # Unknown 

Изменить соответственно для различных значений и тузы

-3

К сожалению, это единственный способ, которым вы можете объявить тип переменной в Python 3. Что вы делаете, это отличать строку до целого числа. То, как вы это делаете, - лучший способ.

+1

Здесь нет никакого «каста». Объект 'str', содержащий' 'foo" ', привязан к имени' foo', тогда 'foo' восстанавливается до объекта' int', содержащего '10'. Ничто не меняет тип, 'foo' просто указывается на совершенно другой объект. – ShadowRanger

+0

Этот вопрос еще не подотчетен. – qxz

0

Основываясь на вашем последнем комментарии, я думаю, вы можете назначить целочисленное значение строковому ключу. Для этого вы можете использовать словарь. Объявите:

>>> cards = {"jack": 10, "queen": 10} 
>>> print(cards["jack"]) 
10 
1

С your goal is to map specific cards (как в игре в блэкджек) к их значениям, сделать dict для поиска фронт:

# 2-10 
name_to_value = {str(num): num for num in range(2, 11)} 
# Face cards 
name_to_value.update(dict.fromkeys(('Jack', 'Queen', 'King'), 10)) 
# Ace is special 
name_to_value['Ace'] = 11 # If it's blackjack, you might want to special case Ace 

Затем использовать его для преобразования позже, например:

>>> name_to_value['Jack'] 
10 
>>> name_to_value['9'] 
9 
Смежные вопросы