如何将一串字母变成整数?

时间:2017-06-07 15:24:36

标签: python python-2.7

具体来说,我接受用户输入的一个词,相当于一个数字(用户不会知道)。

我的代码:

animal = raw_input( > )  #and a user inputs cat
dog = 30 
cat = 10
frog = 5
print 10 + int(animal) #with the hope that will output 20

不知道怎么做..

6 个答案:

答案 0 :(得分:6)

我会在这里使用字典

首先,使用相关值初始化字典。

其次,请求用户输入。

最后,以用户输入为键从地图中获取值。

animals_map = {"dog" : 30, "cat" : 10, "frog" : 5}

animal = raw_input('>') #and a user inputs cat
animal_number = animals_map[animal]

print 10 + int(animal_number) #with the hope that will output 20

修改

作为Ev。 Kounis在评论中提到你可以使用get函数,这样当用户输入不在字典中时你就可以得到一个默认值。

animals_map.get(animal, 0) # default for zero whether the user input is not a key at the dictionary.

答案 1 :(得分:2)

务必处理每个输入值:

types = {'dog': 30, 'cat': 10, 'frog': 5}

def getInput():
  try:
    return 10 + types[raw_input("Give me an animal: ")]
  except:
    print("BAD! Available animals are: {}".format(", ".join(types.keys())))
    return getInput()

print(getInput())

答案 2 :(得分:1)

animal = raw_input(>)
animal_dict = {'dog': 30, 'cat': 10, 'frog': 5}
number = animal_dict.get(animal, 0):
print 10+number

答案 3 :(得分:1)

字典是最好的主意,其他的已发布。只是不要忘记处理错误的输入

animals = dict(dog=30,cat=10,frog=5)
animal = raw_input(">") # and a user inputs cat
if animal in animals:
    print "animal %s id: %d" % (animal,animals[animal])
else:
    print "animal '%s' not found" % (animal,)

https://docs.python.org/2/tutorial/datastructures.html#dictionaries

答案 4 :(得分:0)

您可以使用词典执行此操作:

animal = raw_input( > ) #and a user inputs cat

d = {'dog' : 30, 'cat' : 10, 'frog' : 5}

print 10 + d[animal]

答案 5 :(得分:-4)

使用eval

with
     constants ( x, y, z ) as (
       select 0.5 * ( 1 + sqrt(5) ),
              0.5 * ( 1 - sqrt(5) ),
              sqrt(5)
       from   dual
     ),
     powers ( n ) as (
       select 14 * a.p + b.q
       from   (select level - 1 p from dual connect by level <= 14) a
              cross join
              (select level - 1 q from dual connect by level <= 14) b
     )
select n + 1 as seq, round( ( power(x, n) - power(y, n) ) / z ) as fib
from   constants cross join powers
where  n < 195
;

在您的情况下,这可能是一个问题,但是当创建更复杂的时候,它可能会带来一些安全问题。 请参阅:Is using eval in Python a bad practice?

在某些情况下,如果可能方便生成代码,如评论中所指出,请谨慎使用。

编辑:您可以使用更安全的版本,只有evaluated litteral表达式:

print (10 + eval(animal))