我目前正在编写一个使用乌龟来绘制字母的程序。我知道的 turtle.write函数,但我希望有乌龟绘制字符。无论如何,当我向用户询问输入信时,我希望我的代码检查它是什么字母,然后执行一个函数 根据输入的字母。到目前为止,这是我的代码:
#this section asks for a letter to type
while 1:
letter = input("Letter: ")
x = ord(letter)
print(x,letter)
#the code will call a certain function for each letter typed
if x == 97 or 65:
a()
print("a")
if x == 98 or 66:
b()
print("b")
elif x == 99 or 67:
c()
(其中a()
,b()
,c()
是之前定义的函数,用于绘制该字母)
问题出在我发表if语句时。输出仅为a()
。我输入的字母无关紧要,它总是给我a()
。怎样才能让我的代码识别出其他字母输入并执行该功能呢?感谢任何帮助,谢谢!
答案 0 :(得分:4)
更改条件:
x == 97 or 65:
到
x == 97 or x == 65:
答案 1 :(得分:0)
此:
if x == 97 or 65:
不按照您的想法行事。它等于:
if (x == 97) or 65:
这显然不是你想要的。
将其更改为:
if x == 97 or x == 65:
或者改为使用in
运算符:
if x in (97, 65):
与另一个条件相同的事情!
这应该解决它,希望它有所帮助!
答案 2 :(得分:0)
x = letter.lower()
if x == 'a':
a()
print(x)
elif x == 'b':
b()
print(x)
elif x == 'c':
c()
print(x)
答案 3 :(得分:0)
我知道这不能回答你的问题(其他人有),但是在Python中你想根据条件调用函数;另一种模式是使用字典。
由于函数与任何其他名称一样,它们可以在字典中指定为值,以下是代码如何显示的示例:
func_map = {97: a, 98: b, 99: c}
letter_code = ord(lower(letter))
if letter_code in func_map:
func_map[letter_code]()
由于您正在运行相同的功能,因此无需检查该字母两次;你可以只映射小写或大写代码(在我的例子中,我已经映射了小写代码)。
if
条件检查字典func_map
中是否存在密钥。默认情况下,当您遍历字典时,它们会返回其键:
>>> d = {'a': 1, 'b': 2}
>>> for i in d:
... print(i)
...
a
b
所以我们检查的是代码是否存在于字典中,然后我们得到该代码的值;这是函数对象,然后用()
调用它。这可能看起来很奇怪,但由于函数与Python中的任何其他名称一样,您可以将它们重新分配给其他名称:
>>> def a():
... print('I am A')
...
>>> b = a
>>> b()
I am A