Python在Tic-Tac-Toe中定义函数

Python在Tic-Tac-Toe中定义函数,python,tic-tac-toe,Python,Tic Tac Toe,我正在用python编写一个简单的井字游戏的早期阶段。我定义了3个函数,一个用于初始化游戏,一个用于绘制棋盘,另一个用于询问玩家是否希望成为X或O。据我所知,我的函数是按顺序和正确顺序请求的,但我无法让程序通过第一个输入部分。任何帮助都将是惊人的 def start(): print("Do you want to play Tic Tac Toe? Type yes or no.") choice = input() while choice == ('yes','no

我正在用python编写一个简单的井字游戏的早期阶段。我定义了3个函数,一个用于初始化游戏,一个用于绘制棋盘,另一个用于询问玩家是否希望成为X或O。据我所知,我的函数是按顺序和正确顺序请求的,但我无法让程序通过第一个输入部分。任何帮助都将是惊人的

def start():
    print("Do you want to play Tic Tac Toe? Type yes or no.")
    choice = input()
    while choice == ('yes','no'):
        if choice.lower == ('yes'):
           player_choice()
        elif choice.lower == ('no'):
           print("goodbye")
           quit()
        else:
              print("That was not a valid response. Type yes or no.")
start()

def drawsmall():
    a = (' ___' *  3 )
    b = '   '.join('||||')
    print('\n'.join((a, b, a, b, a, b, a, )))



def player_choice():
    print("Player one it's time to choose, X or O")
    select= input()
    if select.lower ==("x","o"):
        print("Let the game begin.")
        drawsmall()
    elif select.lower != ('x','o'):
        print("Please choose either X or O.")
    else:
        print("Come back when you're done messing around.")
        quit()

首先,您的问题是调用
lower
方法错误。您应该这样称呼它:

str = 'Test'
print(str.lower())
print(str.lower)
>> test
>> <built-in method lower of str object at 0x7ff42c83ebb0>
def start():
    print("Do you want to play Tic Tac Toe? Type yes or no.")
    choice = ‘’
    while choice not in ['yes','no']:
        choice = input()
        if choice.lower() == 'yes':
           player_choice()
        elif choice.lower() == 'no':
           print("goodbye")
           quit()
        else:
              print("That was not a valid response. Type yes or no.")
请注意,如果不设置
choice='
,则不会进入循环

第三,应该将对
start()
函数的调用移动到所有函数的末尾,以便正确识别它们

注意


使用我在
start()
中提供的逻辑纠正
player\u choice()
,首先,您的问题是调用
lower
方法错误。您应该这样称呼它:

str = 'Test'
print(str.lower())
print(str.lower)
>> test
>> <built-in method lower of str object at 0x7ff42c83ebb0>
def start():
    print("Do you want to play Tic Tac Toe? Type yes or no.")
    choice = ‘’
    while choice not in ['yes','no']:
        choice = input()
        if choice.lower() == 'yes':
           player_choice()
        elif choice.lower() == 'no':
           print("goodbye")
           quit()
        else:
              print("That was not a valid response. Type yes or no.")
请注意,如果不设置
choice='
,则不会进入循环

第三,应该将对
start()
函数的调用移动到所有函数的末尾,以便正确识别它们

注意


用我在我的
start()

中提供的逻辑纠正
player\u choice()
。好吧,在弄清楚你的意图之后,我看到了许多必须改变的事情

首先,试试这个,看一看:

def start():
  print("Do you want to play Tic Tac Toe? Type yes or no.")
  while True:
    choice = input()
    if choice.lower() == 'yes':
      player_choice()
    elif choice.lower() == 'no':
      print("goodbye")
      quit()
    else:
      print("That was not a valid response. Type yes or no.")


def drawsmall():
  a = (' ___' * 3)
  b = '   '.join('||||')
  print('\n'.join((a, b, a, b, a, b, a,)))


def player_choice():
  print("Player one it's time to choose, X or O")
  select = input()
  if select.lower() in ("x", "o"):
    print("Let the game begin.")
    drawsmall()
  else:
    print("Please choose either X or O.")

start()
  • .lower,应该是.lower()
  • 字符串不是('string'),必须删除括号
  • 如果要将一个变量与多个值进行比较,则必须在中使用,而不是==
  • 这将是很难画的'X'和'O'选择的球员使用标准输出

  • 在弄清楚你的意图之后,我看到了一些必须改变的事情

    首先,试试这个,看一看:

    def start():
      print("Do you want to play Tic Tac Toe? Type yes or no.")
      while True:
        choice = input()
        if choice.lower() == 'yes':
          player_choice()
        elif choice.lower() == 'no':
          print("goodbye")
          quit()
        else:
          print("That was not a valid response. Type yes or no.")
    
    
    def drawsmall():
      a = (' ___' * 3)
      b = '   '.join('||||')
      print('\n'.join((a, b, a, b, a, b, a,)))
    
    
    def player_choice():
      print("Player one it's time to choose, X or O")
      select = input()
      if select.lower() in ("x", "o"):
        print("Let the game begin.")
        drawsmall()
      else:
        print("Please choose either X or O.")
    
    start()
    
  • .lower,应该是.lower()
  • 字符串不是('string'),必须删除括号
  • 如果要将一个变量与多个值进行比较,则必须在中使用,而不是==
  • 这将是很难画的'X'和'O'选择的球员使用标准输出

  • 你能用语言解释一下你期望看到的事件的顺序吗?是的,我很抱歉。基本上,在我看来,流程是这样的。def start(),初始化游戏并要求玩家输入与是或否相对应的输入。如果是,则应传递给玩家_选择,询问玩家一是否希望成为X或O。玩家选择应通过,玩家一是否选择X或O来绘制小图,这应绘制实际的棋盘。我认为第一个问题(如果没有所有的代码,很难知道完整的流程)这里是:'if select.lower==(“x”,“o”)',应该是'if select.lower in(“x”,“o”);对于您来说也是一样的elif,应该是'else:'(select可能等于或不等于“x”或“o”。它不能是任何其他东西)。抱歉,我以前没有看到它。这里同样:while choice==('yes','no')。它应该是'whilechoice not in('yes','no'):'你能用语言解释一下你期望看到的事件的顺序吗?是的,我道歉。基本上,在我看来,流程是这样的。def start(),初始化游戏并要求玩家输入与是或否相对应的输入。如果是,则应传递给玩家_选择,询问玩家一是否希望成为X或O。玩家选择应通过,玩家一是否选择X或O来绘制小图,这应绘制实际的棋盘。我认为第一个问题(如果没有所有的代码,很难知道完整的流程)这里是:'if select.lower==(“x”,“o”)',应该是'if select.lower in(“x”,“o”);对于您来说也是一样的elif,应该是'else:'(select可能等于或不等于“x”或“o”。它不能是任何其他东西)。抱歉,我以前没有看到它。这里同样:while choice==('yes','no')。它应该是'whilechoice not in('yes','no')):'非常感谢。我对这一切都非常陌生,一直在努力自学。很抱歉,我之前的描述不清楚。一点也不担心!我们都在学习。试着解释你的问题、你的尝试、你的输入和输出,这样人们可以更好地帮助你……如果你犯了错误,不要犹豫,还有继续努力!很高兴能提供帮助。非常感谢。我对所有这些都非常陌生,一直在努力自学。很抱歉我之前的描述不清楚。一点也不担心!我们都在学习。试着解释你的问题,你的尝试,你的输入和输出,这样人们可以更好地帮助你…做吗如果你犯了错误,不要犹豫,继续努力!非常乐意为你提供帮助。