【发布时间】:2016-12-13 15:08:31
【问题描述】:
我有一个二十一点游戏的程序。它尚未完成,但我遇到了 Unicode 问题。当它打印一个字符串时,它的格式不正确(看下面)。它是 Python 3。
from unicurses import *
import sys
import time
from random import choice as rc
import random
def total(hand): #total
aces = hand.count(11)
t = sum(hand)
if t > 21 and aces > 0:
while aces > 0 and t > 21:
t -= 10
aces -= 1
return t
def random(one,two):
import random
number = random.randint(one,two)
return number
def number():
number = random(1,13)
if number == 13:
value = '0'
elif number == 12:
value = '0'
elif number == 11:
value = '0'
elif number == 10:
value = '0'
elif number < 10:
value = number
return value
def card():
cardnumber = number()
card = cardnumber
return card
def store10Cards():
tenCards = [card(),
card(),
card(),
card(),
card(),
card(),
card(),
card(),
card(),
card()]
return tenCards
stdscr = initscr()
cards = store10Cards()
mvaddstr(10, 10, '┌──────────┐\n│{} │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ {}│\n└──────────┘'.format(cards[0], cards[0]).encode('utf-8'))
#deck = [] #deck of cards
#cwin = 0 #computer wins
#pwin = 0 #player wins
#for i in range (2, 11):
# for j in range ([24, 72][i == 10]):
# deck.append(i)
#stdscr = initscr() #Start the standard screen
start_color() #Start the color service
init_pair(1, COLOR_RED, 0) #color pair 1 is red text and no highlighting
init_pair(2, COLOR_WHITE, 0) #color pair 2 is white text and no highlighting
addstr('\n\n------------------------------------------------------------------------', color_pair(1) | A_BOLD)
addstr('\n\n\nAre You Ready To Try And Defeat The Undefeated Blackjack Master?\n\n\nThe First One To Win 10 Hands Wins!!!\n\n\nAces Are Counted As 11s And Automaticlly Change To 1 If You Go Over 21. \n\n\nWinning 1 Hand Does Not Mean You Win The Game\n\n\nIt Is Possible To Win But Very Hard!!! Good Luck!!!\n\n\n', color_pair(2))
addstr('------------------------------------------------------------------------', color_pair(1) | A_BOLD)
addstr('\n\nDo You Know The Rules Of Blackjack? (Y or N)\n\n', color_pair(2))
addstr('------------------------------------------------------------------------', color_pair(1) | A_BOLD)
refresh() #refreshes
cbreak() #lets user do Ctrl + C
noecho() #Stops inputs from being shown
a = getch() #Gets input
while a == ord('q'): #Checks if input is q
clear() #clears before exit
exit() #quits
while a == ord('n'): #Checks if input is n
clear() #clears before displaying the next text
addstr('\n\n\n----------------------------------------------------------------------------------', color_pair(1) | A_BOLD)
addstr('\n\nOk. That Is Ok. The Rules Are As Follows: \n\nThe Goal Is To Get To 21.\n\nYou Can Hit A Card (Receive Another) Or Stand And See What The Dealer Has And Does.\n\nThe Person With The Higest Value 21 Or Below Wins That Hand.\n\nAces Start As 11s But Change Automatticly To 1s If You Go Over 21 To Save You.\n\nIf You Get 21 Exactly You Get A Blackjack.\n\nA Blackjack Means You Automaticly Win Unless The Computer Gets A 21 And Ties You.\n\nBe Careful Not To Hit Too Many Times Because If You Go Over 21 You Lose That Hand.\n\nAny Face Card Is Automaticly A 10 At All Times.\n', color_pair(2))
addstr('\n----------------------------------------------------------------------------------\n\n\n', color_pair(1) | A_BOLD)
sleep(15)
a = getch() #resets input variable
while a == ord('q'): #Checks if input is q
clear() #Clears before exit
exit() #quits
while a == ord('y'): #Checks if input is y
clear() #clears before displaying the next text
addstr('\n\n\n\n\n----------------------------------------------------------------------------------', color_pair(1) | A_BOLD)
addstr('\n\n\n\nGreat!\n\n\n\nHave Fun!\n\n\n\nGood Luck!\n\n\n', color_pair(2))
addstr('----------------------------------------------------------------------------------\n\n\n', color_pair(1) | A_BOLD)
refresh()
time.sleep(1)
b = '1'
a = '' #resets input variable
这是我遇到问题的行:
mvaddstr(10, 10, '┌──────────┐\n│{} │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ │\n│ {}│\n└──────────┘'.format(cards[0], cards[0]).encode('utf-8'))
我尝试使用 UTF-8 对其进行编码,并通过执行 chcp 将命令提示符设置为 UTF-8,然后当我运行该字符串打印的程序时:
b'\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\x e2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x823 \xe2\x94\x82\n\xe2\x94\x82\t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2 \x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\x e2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 \t \xe2\x94\x82\n\xe2\x94\x82 3\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe 2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\ x94\x80\xe2\x94\x80\xe2\x94\x98'
请帮助我按应有的方式打印字符串,而不是使用 unicode。
如果您对我的代码有任何其他建议,请告诉我。
【问题讨论】:
-
你的源文件的编码是什么?
-
您正在打印 bytes,生成它们的调试表示。先解码字节。
标签: python windows unicode utf-8 utf