我试图在CMD中运行我的脚本(它在空闲状态下工作正常),但我得到了以下错误:
C:\Python34>rule90.py
Traceback (most recent call last):
File "C:\Python34\rule90.py", line 15, in <module>
print(c)
File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-39: character maps to <undefined>
虽然我对python的经验有限,但我想我知道的足够多,可以解决这个问题。第19行只是linenew = str(''.join(lineA[numberneg:numberpos]))
,我要连接的lineA由字符串形式的“0”和“1”的加载组成。我确实有■和□字符,但它们应该是cmd中的默认字符,而且错误不在那一行。在
任何帮助都将不胜感激!在
lineA = ['0','0','0','0','0','0','1','0','0','0','0','0','0']
lineB = lineA[:]
lineC = lineA[:]
lineC = ['□' if x=='0' else '■' for x in lineC]
counth = 0
max_counth = len(lineA) - 2
countv = 0
max_countv = len(lineA) / 2 - 1
while countv < max_countv:
number = 1
counth = 0
lineCstr = map(str, lineC)
c = ''.join(lineCstr)
print(c)
while counth < max_counth:
numberneg = number - 1
numberpos = number + 2
linenew = str(''.join(lineA[numberneg:numberpos]))
if linenew == str('110') or linenew == str('100') or linenew == str('011') or linenew == str('001'):
lineB[number] = '1'
lineC[number] = '■'
else:
lineB[number] = '0'
lineC[number] = '□'
number = number + 1
counth = counth + 1
lineA = lineB[:]
countv = countv + 1
input("Press Enter to continue...")
lineA
通常是一个较长的列表(25+个数字),但为了节省空间,我缩短了它。在
我可以做一个假设。目前,“□”和“■”符号都是Unicode的。你可以得到这样的十六进制代码:
您可以找到Unicode表here。 由于某些原因,您的控制台无法显示Unicode字符。但您可以在控制台编码中找到它们的等价物:
^{pr2}$记住每个方块的
i
的值。然后您可以这样做:相关问题 更多 >
编程相关推荐