我不确定如何说出问题标题。
a = "Alpha";
b = "Bravo";
c = "Charlie";
fn = input("What is your first name: ")
for fletter in fn.split():
fl = fletter[0]
上面的代码会输入第一个字母。我们的目标是在while循环中获得可能检查的第一个字母,以查看fl的值是否为起始字符串之一。这可能吗?关于从哪里开始的提示?
答案 0 :(得分: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.")
不推荐。
使用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
希望这有帮助!