繁体   English   中英

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

[英]get value of a variable if the string name is the exact same

考虑我们有一组变量 A,B,C, .. X,Y,Z 都已经定义,每个变量分别代表一个整数 0,1,2, ... 23,24,25。

例如 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

如您所见,这对于大量变量是不可行的,因为我必须为每个变量编写这些规则。 我想知道是否有办法在不使用此函数的情况下获取值(如果字符串名称相同,则只需返回值),例如使用内置函数。

为我的英语道歉,Forp

作为参考,这是我完成的示例代码:

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)

您可以使用eval(inp1)通过变量名称获取值,但这不是很安全。 不过,如果这是一个宠物项目,请继续。 您还可以从locals()globals()获取变量的值,它们都是字典。

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()

你可以创建一个字典。 我不知道你是否被允许进行这个特定的练习,但我认为这是最简单的方法。 它会是这样的:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM