2

我目前正在编写一个使用海龟绘制字母的程序。我知道turtle.write 函数,但我想让turtle 绘制字符。无论如何,当我要求用户输入字母时,我希望我的代码检查它是什么字母,然后根据输入的字母执行一个函数。到目前为止,这是我的代码:

#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()。如何让我的代码识别输入的其他字母并随之执行该函数?任何帮助表示赞赏,谢谢!

4

4 回答 4

4

改变你的条件:

x == 97 or 65:

x == 97 or x == 65:
于 2013-11-04T03:13:35.200 回答
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
于 2013-11-04T04:31:16.940 回答
0

这个:

if x == 97 or 65:

不做你认为它做的事。它等于:

if (x == 97) or 65:

这显然不是你想要的。

将其更改为:

if x == 97 or x == 65:

或者改用in运算符:

if x in (97, 65):

同样的事情有另一个条件!

这应该可以解决它,希望它有帮助!

于 2013-11-04T03:18:13.677 回答
0
x = letter.lower()

if x == 'a':
    a()
    print(x)
elif x == 'b':
    b()
    print(x)
elif x == 'c':
    c()
    print(x)
于 2013-11-04T03:18:55.513 回答