具体来说,我接受用户输入的一个词,相当于一个数字(用户不会知道)。
我的代码:
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
不知道怎么做..
答案 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))