Python excersice的麻烦 - 按顺序将字母转换为数字(使用ord和chr)

时间:2017-09-06 11:50:02

标签: python numbers type-conversion letters

我很抱歉,但我在这里无所事事。不知道从哪里开始。我是Python新手,自从我上次尝试任何类型的编程以来已经很多年了。我从来没有很有经验。我正在网上学习这门Python课程,并且在练习中走到了尽头。这是前一个例子。

x = int(input())
if x>=1 and x<=26:
    print('letter', x, 'in the alphabet:', chr(ord('A')+(x-1)))
else:
    print('invalid input:', x)

此示例程序将数字转换为字母。所以,'A'= 1,'B'= 2。 它现在要我制作一个像这样的程序,但恰恰相反。我应该从这一行开始:

letter = input()

以下是练习描述的内容:

编码练习:26封信件 编写一个与上例相反的程序:它应该将一个字符作为输入并输出相应的数字(在1和26之间)。您的程序应该只接受大写字母。作为错误检查,如果输入不是大写字母,则打印无效

现在我可以这样做,但不是它想要我这样做的方式,也不是我应该做的方式。我可以这样做:

if letter == 'A':
    letter = int(1)
    print(letter)
elif letter == 'B':
    letter = int(2)
    print(letter)

当然,这将是非常漫长和草率的。有没有人对我有任何建议?这个让我卡住了。对不起,我知道这可能很简单,这对我来说似乎比它应该更复杂。我试过看了这个,但我在网上发现的一切都不同,我无法弄清楚如何在这段代码中实现它。说实话,chr和ord的东西让我很困惑。对于那些长时间阅读这篇文章的人来说,我感激不尽。谢谢。我不知道该怎么办这个。此外,这是我第一次在这里发布任何内容,所以如果我做了任何草率或错误,我道歉并将尽快删除/编辑它。

问题可以在这里找到:https://cscircles.cemc.uwaterloo.ca/9-else-and-or-not/

添加一些信息。 CScircles要求A = 1而不是0.感谢您的快速回复。我将在今天晚些时候再次讨论这个问题。

1 个答案:

答案 0 :(得分:1)

您必须再次使用ord函数,您在上一个练习中使用该函数来获取角色的字符编号。然后,您可以减去字符A的字符值,以获得126之间的值。

inp = input()
if (len(inp) > 1 or inp != inp.upper()):
    print("invalid input")
else:
    print(ord(inp)-ord("A")+1)

ord(x)函数接受字符x(例如任何UTF8字符)并返回一个整数。此整数值表示编码表中字符的编号:让我们看一下下面的ascii表。 您可以在此处看到char值以及字符的dec / int值。例如,字符Aint65表示,依此类推。

chr(x)函数正好相反:它取int值并返回由此表示的char,这意味着:

ord("A") = 65
chr(65) = "A"
chr(ord(anyCharacter)) = anyCharacter