考虑到我们已经定义了一组变量A,B,C,.. X,Y,Z,每个变量分别代表整数0、1、2,...,23、24、25。 / p>
例如A = 0,B = 1
现在,我想编写将变量名作为输入并在处理它们后返回其值的代码。
这是一些执行此操作的示例代码。
inp1 = input("Enter letter 1->")
inp2 = input("Enter letter 2->")
def connect(inp1,inp2):
print(str(inp1) + " = " + str(inp2) + "\n")
我想退回
0 = 1
如果输入是A,B。
当前代码将产生此结果,因为输入的数据为字符串格式:
A = B
要解决这个问题,我做了一个小函数,可以从字符串输入中获取值:
def get_value(x):
if x == "A":
return A
elif x == "B":
return B
如您所见,这对于大量变量是不可行的,因为我必须为每个变量编写这些规则。我想知道是否有一种无需使用此函数即可获取值的方法(如果字符串名称相同,则仅返回值)。通过使用内置功能。</ p>
我的英语道歉,
作为参考,这是我完成的示例代码:
A = 0
B = 1
inp1 = "A"
inp2 = "B"
def get_value(char):
if char == "A":
return A
elif char == "B":
return B
def connect(inp1,inp2):
part1 = get_value(inp1)
part2 = get_value(inp2)
print(str(part1) + " = " + str(part2) + "\n")
connect(inp1,inp2)
答案 0 :(得分:0)
您可以使用eval(inp1)
通过变量名获取值,但这不是很安全。不过,如果这是一个宠物项目,那就继续吧。
您还可以从locals()
或globals()
这两个字典中获取变量的值。
答案 1 :(得分:0)
ord()函数返回一个数字,该数字表示以10为基的指定字符的unicode码。
def connect(inp1,inp2):
part1 = ord(inp1) - 65
part2 = ord(inp2) - 65
print(str(part1) + " = " + str(part2) + "\n")
def main():
inp1 = input("Enter letter 1->")
inp2 = input("Enter letter 2->")
connect(inp1, inp2)
main()
之所以要减去65,是因为您已将大写字母A定义为0,B定义为1,依此类推,因为'A'的ASCII值为65
编辑:
如果还要确保将小写字母转换为大写字母,则可以使用.upper()函数
inp1 = input("Enter letter 1->").upper()
inp2 = input("Enter letter 2->").upper()
答案 2 :(得分:0)
您可以创建字典。我不知道您是否可以参加此特定练习,但是我认为这是最简单的方法。会是这样的:
variables = {'A':0, 'B':1, 'C':2}
inp1 = input('Enter letter: ')
inp2 = input('Enter letter: ')
def connect(inp1,inp2):
print(str(variables[inp1]) + " = " + str(variables[inp2]) + "\n")
connect(inp1, inp2)