Python 3.5:使用for循环生成单个字母字符串

时间:2016-02-23 05:28:53

标签: python python-3.5

使用for循环和内置函数ord(char)和chr(pos)从'a'生成字母到'z'并包括'z'。我该如何定义这个功能?输出应该给出:

"abcdefghijklmnopqrstuvwxyz"

4 个答案:

答案 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.您的电话。