python的新手,尝试编写井字游戏,并最终遇到这种情况,在这种情况下,我似乎无法打印出表的版本(多行字符串),并且将新O分配给了输入,即使将O分配给该位置的变量也是如此。
下面的代码不完整,目前仅关注上面的问题。
mydict=dict.fromkeys(['a1','a2','a3','b1','b2','b3','c1','c2','c3'],' ')
table = ' | | \n' \
' {} | {} | {} \n' \
'_______|_______|_______\n' \
' | | \n' \
' {} | {} | {} \n' \
'_______|_______|_______\n' \
' | | \n' \
' {} | {} | {} \n' \
' | | '.format(mydict['a1'],mydict['a2'],mydict['a3'],mydict['b1'],mydict['b2'],mydict['b3'],mydict['c1'],mydict['c2'],mydict['c3'])
def assign(i):
if q%2==0:
mydict[str(i)]='O'
print(mydict)
else:
mydict[str(i)]='X'
q=2
while q%2==0:
x=input('Player 1, please choose your position:')
assign(x)
print(table)
当我跑步时:
TIC TAC TOE
| |
| |
_______|_______|_______
| |
| |
_______|_______|_______
| |
| |
| |
Player 1, please choose your position:a1
{'a1': 'O', 'a2': ' ', 'a3': ' ', 'b1': ' ', 'b2': ' ', 'b3': ' ', 'c1': ' ', 'c2': ' ', 'c3': ' '}
| |
| |
_______|_______|_______
| |
| |
_______|_______|_______
| |
| |
| |
Player 1, please choose your position:
答案 0 :(得分:1)
修改mydict
是不够的,还需要其他一些更改:
mydict=dict.fromkeys(['a1','a2','a3','b1','b2','b3','c1','c2','c3'],' ')
def table():
table = ' | | \n' \
' {} | {} | {} \n' \
'_______|_______|_______\n' \
' | | \n' \
' {} | {} | {} \n' \
'_______|_______|_______\n' \
' | | \n' \
' {} | {} | {} \n' \
' | | '.format(mydict['a1'],mydict['a2'],mydict['a3'],mydict['b1'],mydict['b2'],mydict['b3'],mydict['c1'],mydict['c2'],mydict['c3'])
return table
def assign(i, q):
if q%2 == 0:
mydict[str(i)]='O'
print(mydict)
else:
mydict[str(i)]='X'
print(table())
q=0
while ' ' in mydict.values():
x=input('Player %s, please choose your position:' % ((q % 2) + 1))
q += 1
assign(x, q)
答案 1 :(得分:0)
格式化仅会创建字符串的新副本,并且不会应用于任何进一步的更改。您应该创建一个函数来格式化表格并使用基本模板。
table = (' | | \n'
' {} | {} | {} \n'
'_______|_______|_______\n'
' | | \n'
' {} | {} | {} \n'
'_______|_______|_______\n'
' | | \n'
' {} | {} | {} \n'
' | | ')
def format_table():
return table.format(mydict['a1'], mydict['a2'],
mydict['a3'], mydict['b1'],
mydict['b2'], mydict['b3'],
mydict['c1'], mydict['c2'],
mydict['c3'])
现在,当您打印表格时,只需执行以下操作:
print(format_table())
答案 2 :(得分:0)
代码不起作用的原因是因为每次打印变量表时都不会调用format。为了保留格式并使用新值更新字符串,您需要每次都进行调用。我的建议如下。
mydict=dict.fromkeys(['a1','a2','a3','b1','b2','b3','c1','c2','c3'],' ')
tablestring = ' | | \n' \
' {} | {} | {} \n' \
'_______|_______|_______\n' \
' | | \n' \
' {} | {} | {} \n' \
'_______|_______|_______\n' \
' | | \n' \
' {} | {} | {} \n' \
' | | '
def assign(i):
if q%2==0:
mydict[str(i)]='O'
print(mydict)
print(tablestring.format(mydict['a1'],mydict['a2'],mydict['a3'],mydict['b1'],mydict['b2'],mydict['b3'],mydict['c1'],mydict['c2'],mydict['c3']))
else:
mydict[str(i)]='X'