2

目前,我正在网上学习一些计算机科学课程。我接到了编写一个程序的任务,该程序在有效输入后将打印字母表中的下一个字母。这是我的代码:

char = input()
ordchar = ord(char)
nextletter = ordchar + 1
nextletter = chr(nextletter)

if nextletter == ("["):
    print("A")

if nextletter == ("{"):
    print("a")

if nextletter!=("[","{"):
    print(nextletter)

现在,我确实看到了代码的问题,尽管我不知道如何纠正它。基本上,在倒数第二行代码中,我希望它基本上说“如果下一个字母不等于 { 或 [ 打印下一个字母”。

4

5 回答 5

5
if nextletter not in ["[", "{"]:
    print(nextletter)
于 2013-02-17T15:51:52.963 回答
5

您根本不需要测试这些字符。在它之前的代码中,你确保它nextletter永远不会[or {,如果你只是给nextletter那里分配一个不同的字母:

if nextletter == "[":
    nextletter = "A"
elif nextletter == "{":
    nextletter = 'a'

如果您仍然需要进行这样的测试,请使用not in操作符

if nextletter not in '[{':

not inTrue如果左边的操作数不存在于右边的序列中,则返回。我在示例中使用了一个包含两个字符的字符串,它算作一个序列:

>>> '[' in '[{'
True
>>> '0' in '[{':
False
于 2013-02-17T15:53:04.150 回答
3

使用not in成员运算符:

if nextletter not in ("[","{"):
    print(nextletter)

if-elif另请注意,如果您使用的是构造而不是个体,则可以避免第三次测试if's。这样,您可以将第三部分放在一个else块中。

于 2013-02-17T15:51:43.733 回答
0

问题是你在问 nextletter 是否不等于("[","{"). 您想问它是否不等于“[”或“{”。因此,您必须问, if nextletter != "[" and nextletter != "{" 这将检查它是否既不是“[”也不是“{”。希望这可以帮助

于 2013-02-17T15:57:04.077 回答
0

虽然其他答案是正确的,但做你想做的事情的正确方法是使用elifelse

if nextletter == ("[") :
    print("A")
elif nextletter == ("{") :
    print("a")
else :
    print(nextletter)
于 2013-02-17T15:55:32.820 回答