使用for循环和内置函数ord(char)和chr(pos)从'a'生成字母到'z'并包括'z'。我该如何定义这个功能?输出应该给出:
"abcdefghijklmnopqrstuvwxyz"
答案 0 :(得分:1)
我们知道ord()函数将返回'a'和'z'
的字符代码>>> ord("a")
97
>>>ord("z")
122
逻辑上,小写字母的其余部分将介于这些代码之间;鉴于122和97的差异是25(字母表的大小)。但首先让我们创建一个变量来将所有字符放入其中,以防我们需要它来处理某些事情。
>>>alph = ""#two quotes to create an empty string
现在我们可以使用for循环用小写字母表来膨胀变量。既然我们知道'a'和'z'的值,根据我们对其余字母表在这两个值中的推理,我们可以使用range()函数来为我们创建一个序列。
>>>for i in range(97,123):
... alph+= chr(i)
...
>>>
注意,range()函数的第二个参数是123而不是122,这是因为它将在该点结束序列。现在我们的变量alph拥有我们需要的所有东西,打印它以确保。
>>>print(alph)
abcdefghijklmnopqrstuvwxyz
>>>
对这样一个可以通过多种方式解决的简单问题的冗长解释,但在批判性思维和解决问题方面优化您的方法非常重要。这比答案本身更重要,因为你会变得更加自给自足。
答案 1 :(得分:0)
试试这个:
{{1}}
答案 2 :(得分:0)
如果您确实需要在不使用常量string.ascii_lowercase
的情况下执行该操作,那么您只需要range()
从ord('a')
到ord('a')+26
,然后将其转回chr()
,例如:
>>> ''.join(chr(c) for c in range(ord('a'), ord('a')+26))
'abcdefghijklmnopqrstuvwxyz'
答案 3 :(得分:0)
当恐龙在地球上漫游时,一些计算机公司聚集在一起组成了一个名为“除了IBM之外的所有人(那些混蛋!)”的小组。
IBM有一个“字符集” - 即一个带有相关“字符”或“字母”的数字列表 - 称为“EBCDIC”。 EBCDIC存在两个问题。首先,它很糟糕。其次,它来自IBM。因此,“每个人”聚在一起,想出了一个非常糟糕的字符集,称为“美国信息交换标准代码”或“ASCII”。
ASCII是一组常见的字符分配。当计算机A向计算机B发送数字72时,计算机B知道计算机A表示“H”。为什么?因为那是标准。 ASCII定义数字72为“H”。周期。
后来,另一群没有住在美国的人聚在一起组成了一个名为“其他人”的团体。其他人都说:“嘿!我们怎么样?”而“每个人”(在美国)说,“搞砸你们!”所以每个人都聚在一起摇摇欲坠,想出了JIS和Latin1以及Latin1-北欧,微软说:“我们将'拥抱和扩展'字符集并称之为'代码页'!”而等等等等。
最后,多年后,Everybody Else(在欧洲和亚洲)与Everybody(在美国)和IBM(那些混蛋!)聚在一起,并提出了Unicode。这对每个人都有一些东西,呀!
但是为了向后兼容,他们保持前128个数字相同,因此Latin1是ASCII的超集,Unicode是Latin1的超集,因此是ASCII的超集。因此,在所有这些字符编码方案中(因为“字符集”听起来不够豪华,当你出售的书只是一个巨大的字母目录,每个150美元)一台看到72的电脑知道,“嘿!那仍然是'H'!“
酷!但你为什么关心?
因为特殊函数chr()
和ord()
可用于在字母与数字之间来回切换,使用(等待)... ASCII代码。 (至少对于a-z。如果你想要特殊字符,你将获得Latin1代码或Unicode代码点......)
所以:
>>> print(ord('A'))
65
>>> print(ord('H'))
72
相反:
>>> print(chr(65))
A
因此,如果要生成一组字母,可以使用字符代码。你怎么知道从哪里开始?使用ord()
。
如何将数字转换为字母?使用chr()
。
你怎么知道在哪里停下来?使用ord()
或只添加26.您的电话。