我的课程是用Python创建Tic Tac Toe,我的导师帮助我让它在2.7中工作但是它需要在3.5中。
首先在2.7中,下面的代码打印一个3x3列表,但是在3.5中它只打印列表而不是3x3。我的导师说可能会把def printBoard( board ):
counter = 0
for y in range(3):
for x in range(3):
print (board[counter]),
counter += 1
print
print
放在最后,但这也行不通。
value = input("input number between 1 and 9")
value = int(value)
if value == 1:
alist[0] = player1
printBoard( alist )
value = input("input number between 1 and 9")
if value == 2:
alist[1] = player1
printBoard( alist )
value = input("input number between 1 and 9")
第二个问题是2.7它允许我继续输入数字直到电路板充满X或O,在3.5它只允许输入一次然后程序结束?
Console.Read();
等
答案 0 :(得分:4)
print
在Python 3.x中从statement更改为a function。要打印没有换行符的语句,您需要传递end=' '
参数(如果将print
放在代码的开头,则可以使用from __future__ import print_function
作为Python 2.7中的函数:< / p>
print(board[counter], end=' ')
input
在Python 3.x中返回一个字符串。 (不评估输入字符串)。您需要在使用int
的每个地方将值转换为input
:
value = input("input number between 1 and 9")
value = int(value)
或者,不是将输入与整数文字1
或2
进行比较,而是将输入字符串与字符串'1'
,'2'
进行比较,而不将字符串转换为整数。 (但这需要您在Python 2.7中使用raw_input
而不是input
)
print
:print()
。否则,不会打印任何内容。
答案 1 :(得分:0)
我认为board
类似[['*', '*', '*'], ['*', '*', '*'], ['*', '*', '*']]
。这意味着您可以通过一次print()
调用轻松打印此内容。
print(*(''.join(row) for row in board), sep='\n')
这会将每一行连接成一个新字符串,将每一行作为生成器的一部分生成。此生成器已使用*
解压缩并发送到print()
,其中每行由换行符分隔。
对于您的第二个问题,问题很简单:您为第一个int()
投射value
,而不是后续版本for i in range(n):
。但是,这是你应该用循环做的事情。它会完全防止这种错误。如果你发现自己用 Ctrl + V 写了很多代码,那么你做错了什么。如果每个块略有不同,并且数字递增,则可以使用类似while
的方法来执行此操作,这允许您在每次迭代时使用递增的数字执行相同的代码。
但是,我建议使用一个简单的while True:
move = request_move()
do_move('X', move)
if game_complete():
break
request_move()
do_move('O', move)
if game_complete():
break
循环来检查游戏是否完整:
public class MyException extends RuntimeException {
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
method1();
}catch(MyException ne){
System.out.print("A");
}
}
public static void method1() {
// TODO Auto-generated method stub
try{
throw Math.random() > 0.5 ?new MyException(): new RuntimeException();
} catch (RuntimeException re){
System.out.print("B");
}
}
}
然后你会编写适当的函数来请求移动坐标,输入移动到棋盘中,然后检查游戏是否完整。