我正在编写使用元组进行函数调用的代码
def get_apple():
print('you got an apple.')
def get_pear():
print('you got a pear.')
fruits = (get_apple, get_pear)
print('0. apple\n1. pear')
s = eval(input('which one : '))
fruits[s]()
但是一旦执行此脚本,它只会在“ fruitss”上返回“ TypeError:'function'对象不可下标”。
有人有想法吗?
答案 0 :(得分:2)
您可以这样做:
def get_apple():
print('you got an apple.')
def get_pear():
print('you got a pear.')
fruits = (get_apple, get_pear)
n = int(input('0. apple\n1. pear'))
fruits[n]()
不需要eval
。
您当然必须检查非整数输入。
答案 1 :(得分:0)
def get_apple():
print('you got an apple.')
def get_pear():
print('you got a pear.')
fruits = (get_apple, get_pear)
print('0. apple\n1. pear')
s = eval(str(input('which one : ')))
fruits[s]()
此代码在python 2.7.5和python 3.7.1中均有效。
eval()
将输入字符串作为输入。因此将输入转换为str
。