寻找一个相等的字符串?

时间:2016-05-09 01:49:15

标签: python python-3.x

我不确定如何说出问题标题。

a = "Alpha";
b = "Bravo";
c = "Charlie";

fn = input("What is your first name: ")

for fletter in fn.split():
    fl = fletter[0]

上面的代码会输入第一个字母。我们的目标是在while循环中获得可能检查的第一个字母,以查看fl的值是否为起始字符串之一。这可能吗?关于从哪里开始的提示?

1 个答案:

答案 0 :(得分:1)

解决方案1 ​​[使用字典]

也使事情变得更加简单。

在这种情况下,不是为每个字符串定义单独的变量,而是将它们存储在字典中。例如,而不是:

a = "Alpha"
b = "Bravo"
c = "Charlie"

你会有这个:

letterwords = {"a":"Alpha", "b":"Bravo", "c":"Charlie"}

这与列表的工作方式非常相似,但是不是索引字典,而是根据引用字典中的单独对象。因此,如果上面定义了字典letterwords,则可以通过调用Alpha来引用字符串letterwords["a"]。因此,在这种情况下,代码看起来像这样:

letterwords = {"a":"Alpha", "b":"Bravo", "c":"Charlie"}
fn = input("Please enter your first name: ")
try:
    letterwords[fn[0]]
except KeyError:
    print("There is no matching variable with that letter in the database.")

解决方案2 [使用eval()函数]

不推荐。

使用eval函数完全可以实现。 但是,您应该知道这是一个非常危险的运行功能,因为恶意用户可以使用它来控制控制台。 (特别是如果你导入了os。)但是,它现在应该让你超过驼峰。这是代码:

a = "Alpha"
b = "Bravo"
c = "Charlie"
fl = input("Please enter your first name: ")
try:
    compared = eval(fl[0])
except NameError:
    print("Your first name's first letter does not match any strings in the database.")

有关eval()函数的更多信息,请访问:https://docs.python.org/3/library/functions.html#eval

希望这有帮助!