如果字符串名称完全相同,则获取变量的值

时间:2020-09-16 11:01:45

标签: python function variables

考虑到我们已经定义了一组变量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)

3 个答案:

答案 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)
相关问题