生成器只能生成int?

def Letters():
a = xrange(ord('a'),ord('z')+1)
b = xrange(ord('a'),ord('z')+1)
而真:
产生chr(a)
产生chr(b)
Trackback(最近的最新电话):
文件" ",第1行,
l.next()
文件" ",第5行,在字母中
产生chr(a)
TypeError:需要一个整数
有什么办法解决这个问题吗?

# 回答1


Defn Noob:
您的代码是错误的,这是正确的版本之一:
从Itertools导入IZIP
def Letters():
lower = xrange(ord('a'),ord('z')+1)
upper = xrange(ord('a'),ord('z')+1)
对于LC,在IZIP(下,上)中的UC:
产生CHR(LC)
产生CHR(UC)
打印列表(Letters())
还有其他方法可以做同样的事情.
再见,
# 回答2


在2008年8月22日星期五下午6:44,Defn Noob 否.问题是" chr函数"接收" int"
" A"和" B"是" int"项目的生成器.
您对该代码到底有什么意图?
也许:
#<代码>
def Letters():
对于i在Xrange(ord('a'),ord('z')+1)中的i.
产生chr(i)
对于i在Xrange(ord('a'),ord('z')+1)中的i.
产生chr(i)
对于字母中的字母():
印刷信
#
问候
# 回答3


在2008年8月22日星期五15:44:15 -0700(PDT),Defn Noob写道:
Trackback(最近的最新电话):
文件" ",第1行,
l.next()
文件" ",第5行,在字母中
产生chr(a)
TypeError:需要一个整数
您看到的错误是通过的结果
非直集到chr()函数,无关紧要
与发电机:
Trackback(最近的最新电话):
文件" ",第1行,<模块>
TypeError:需要一个整数
我已经简化了您的代码:
--------------------------
导入字符串
def Letters():
a,b =(string.letters,) * 2
因为我在zip(a,b)中:
产量我[0]
产量我[1]
l = letters()
打印L.Next()
打印L.Next()
打印L.Next()
------------------
和输出:
$ python genlet.py
一个
一个
b
$
那是您试图实现的目标吗?
- -
问候,
wojtek walczak,http://tosh.pl/gminick/
# 回答4


在2008年8月22日星期五15:44:15 -0700,Defn Noob写道:
Trackback(最近的最新电话):
文件" ",第1行,
l.next()
文件" ",第5行,在字母中
产生chr(a)
TypeError:需要一个整数
有什么办法解决这个问题吗?
是的,写不货的代码:)
发电机可以返回您想要的任何东西.你的问题是你
将Xrange对象传递到chr()而不是int.尝试这个:
def Letters():
a = xrange(ord('a'),ord('z')+1)
b = xrange(ord('a'),ord('z')+1)
对于zip中的t(a,b):
产生CHR(t [0])
产生CHR(T [1])
但是(可以说)更好的方法是:
def Letters():
从字符串导入ascii_letters作为字母
对于a,b中的b(字母[0:26],字母[26:]):
产生
产量b
请注意,使用ascii_letters而不是字母很重要,
因为在某些地区,大写字母和小写字母的数量
不同.
- -
史蒂文
# 回答5


8月23日,5:44*am,defn noob 追溯(大多数R 最后一个电话):
*文件" ",第1行,在<模块>中
* * l.next()
*文件" ",第5行,在字母中
* *屈服CHR(A)
TypeError:需要一个整数
有什么办法解决这个问题吗?
对您所做的工作,更正的最直接翻译是
要么这是:
def Letters():
a = xrange(ord('a'),ord('z') + 1)
b = xrange(ord('a'),ord('z') + 1)
而真:
产生
产量b
Xrange(97,123)
或这个:
def Letters():
a = xrange(ord('a'),ord('z') + 1)
b = xrange(ord('a'),ord('z') + 1)
而真:
在a中产生[chr(char)的char]
屈服[chr(char)在b中的char]
['a','b','c','d','e','f','g','h','i','','j','k','k','l','','' m','n',
'o','p','q','r','s','t','u','v','w','w','x','y',z']
但是我的心理能力猜测您实际上想要这个:
def Letters():
a = xrange(ord('a'),ord('z') + 1)
b = xrange(ord('a'),ord('z') + 1)
a = [char(char)for a]
b = [chr(char)在b中的char]
索引= 0
而索引<26:
产生[索引]
产量B [索引]
索引 += 1
'一个'
或可能以更高的Pythonic风格使用:
def Letters():
a = xrange(ord('a'),ord('z') + 1)
b = xrange(ord('a'),ord('z') + 1)
对于下部,ZIP(a,b)中的较高:
产生chr(较低)
产生CHR(上)
'一个'
帕拉利(Paralelly),我的心理能力也告诉我,您可能更喜欢这个
反而:
def Letters():
a = xrange(ord('a'),ord('z') + 1)
b = xrange(ord('a'),ord('z') + 1)
对于下部,ZIP(a,b)中的较高:
产生CHR(下),ChR(上)
('a','a')

标签: python

添加新评论