我很抱歉,但我在这里无所事事。不知道从哪里开始。我是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.感谢您的快速回复。我将在今天晚些时候再次讨论这个问题。
答案 0 :(得分:1)
您必须再次使用ord
函数,您在上一个练习中使用该函数来获取角色的字符编号。然后,您可以减去字符A
的字符值,以获得1
和26
之间的值。
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
值。例如,字符A
由int
值65
表示,依此类推。
chr(x)
函数正好相反:它取int
值并返回由此表示的char
,这意味着:
ord("A") = 65
chr(65) = "A"
chr(ord(anyCharacter)) = anyCharacter