Python练习的问题-按顺序将字母转换为数字(使用ord和chr)
我很抱歉,但我对这里的每个人都感到不知所措。不知道从哪里开始。我是Python新手,自从我上次尝试任何编程以来已经很多年了。我从来都不是很有经验。我正在网上学习这门Python课程,在一次练习中走到了死胡同。它与上一个例子不同Python练习的问题-按顺序将字母转换为数字(使用ord和chr),python,numbers,type-conversion,letters,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 = int(input())
if x>=1 and x<=26:
print('letter', x, 'in the alphabet:', chr(ord('A')+(x-1)))
else:
print('invalid input:', x)
以下是练习描述的内容:
编码练习:26个字母
写一个与上面例子相反的程序:它应该以一个字符作为输入,并输出相应的数字(1到26之间)。您的程序应该只接受大写字母。作为错误检查,如果输入不是大写字母,则打印无效
这是我能做的,但不是它希望我做的,也不是我应该做的。我可以这样做:
if letter == 'A':
letter = int(1)
print(letter)
elif letter == 'B':
letter = int(2)
print(letter)
当然,那将是非常漫长和草率的。有人对我有什么建议吗?这个让我卡住了。对不起,我知道这可能很简单,这对我来说似乎比它应该的复杂得多。我已经试着查找过了,但是我在网上找到的所有东西都非常不同,以至于我不知道如何在代码中实现它。老实说,chr和ord的东西让我很困惑。我很感激任何一个在这里呆了足够长时间读到这篇文章的人。非常感谢。我不知道该怎么处理这个。此外,这是我第一次在这里发布任何东西,因此如果我做了任何马虎或错误的事情,我道歉,并将尽快删除/编辑它
问题可在此处找到:
添加一些信息。CScircles要求A=1而不是0。谢谢你的快速回复。今天晚些时候我将再次处理此问题。您必须再次使用上一个练习中使用的
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
使用
ord
获取字符的数值,然后从中减去一个数字,使“a”的代码变为0。那么,让你困惑的是什么?
ord("A") = 65
chr(65) = "A"
chr(ord(anyCharacter)) = anyCharacter