futurecoder icon indicating copy to clipboard operation
futurecoder copied to clipboard

Finishing the course

Open alexmojaki-bot opened this issue 3 years ago • 0 comments

User Issue Email: (not given) User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15

Thanks for the congratulations! Now that I've completed the tic tac toe game, I would like to see some kind of recap of everything I've learned and some suggestions of what to do next please.

Redux state

{"book":{"error":null,"route":"main","previousRoute":"toc","pageSlugsList":["IntroducingTheShell","NavigatingShellHistory","IntroducingStrings","AddingStrings","IntroducingVariables","UsingVariables","WritingPrograms","StoringCalculationsInVariables","IntroducingForLoops","Indentation","BasicForLoopExercises","BuildingUpStrings","BuildingUpStringsExercises","BasicTerminology","IntroducingIfStatements","CombiningCompoundStatements","UnderstandingProgramsWithSnoop","IfAndElse","TheEqualityOperator","IntroducingElif","OtherComparisonOperators","IntroducingLists","BuildingNewLists","UsingBreak","GettingElementsAtPosition","GettingElementsAtPositionExercises","CallingFunctionsTerminology","FunctionsAndMethodsForLists","MoreListFunctionsAndMethods","StringMethodsUnderstandingMutation","HowToFindInformationWithGoogleAndMore","UnderstandingProgramsWithPythonTutor","EqualsVsIs","ModifyingWhileIterating","SingleAndDoubleQuotesInStrings","IntroducingFstrings","IntroducingNestedLoops","IntroducingBirdseye","IntroducingNestedLists","LoopingOverNestedLists","DefiningFunctions","CallingFunctionsWithinFunctions","ReturningValuesFromFunctions","TestingFunctions","MoreOnReturn","IntroducingOr","IntroducingAnd","MultiLineExpressions","CombiningAndAndOr","IntroducingNotPage","IntroducingTicTacToe","NewlinesAndFormatBoard","Types","InteractiveProgramsWithInput","NestedListAssignment","MakingTheBoard","TheFullTicTacToeGame"],"user":{"uid":"JKsT9oAPxWXzffUIGq0vV2CRbWE3","email":null,"developerMode":false,"pageSlug":"TheFullTicTacToeGame","pagesProgress":{"BasicForLoopExercises":{"step_name":"final_text"},"BuildingNewLists":{"step_name":"final_text"},"BuildingUpStrings":{"step_name":"final_text"},"BuildingUpStringsExercises":{"step_name":"final_text"},"CallingFunctionsTerminology":{"step_name":"final_text"},"CallingFunctionsWithinFunctions":{"step_name":"final_text"},"CombiningAndAndOr":{"step_name":"final_text"},"CombiningCompoundStatements":{"step_name":"final_text"},"DefiningFunctions":{"step_name":"final_text"},"EqualsVsIs":{"step_name":"final_text"},"FunctionsAndMethodsForLists":{"step_name":"final_text"},"GettingElementsAtPosition":{"step_name":"final_text"},"GettingElementsAtPositionExercises":{"step_name":"final_text"},"HowToFindInformationWithGoogleAndMore":{"step_name":"final_text"},"IfAndElse":{"step_name":"final_text"},"Indentation":{"step_name":"final_text"},"IntroducingAnd":{"step_name":"final_text"},"IntroducingElif":{"step_name":"final_text"},"IntroducingForLoops":{"step_name":"final_text"},"IntroducingFstrings":{"step_name":"final_text"},"IntroducingIfStatements":{"step_name":"final_text"},"IntroducingLists":{"step_name":"final_text"},"IntroducingNestedLists":{"step_name":"final_text"},"IntroducingNotPage":{"step_name":"final_text"},"IntroducingOr":{"step_name":"final_text"},"IntroducingTicTacToe":{"step_name":"final_text"},"LoopingOverNestedLists":{"step_name":"final_text"},"ModifyingWhileIterating":{"step_name":"final_text"},"MoreListFunctionsAndMethods":{"step_name":"final_text"},"MoreOnReturn":{"step_name":"final_text"},"MultiLineExpressions":{"step_name":"final_text"},"OtherComparisonOperators":{"step_name":"final_text"},"ReturningValuesFromFunctions":{"step_name":"final_text"},"SingleAndDoubleQuotesInStrings":{"step_name":"final_text"},"StringMethodsUnderstandingMutation":{"step_name":"final_text"},"TestingFunctions":{"step_name":"final_text"},"TheEqualityOperator":{"step_name":"final_text"},"UnderstandingProgramsWithPythonTutor":{"step_name":"final_text"},"UnderstandingProgramsWithSnoop":{"step_name":"final_text"},"UsingBreak":{"step_name":"final_text"},"IntroducingTheShell":{"step_name":"first_expression"},"NavigatingShellHistory":{"step_name":"final_text"},"IntroducingStrings":{"step_name":"hello_string"},"AddingStrings":{"step_name":"hello_world_concat"},"IntroducingVariables":{"step_name":"word_assign"},"UsingVariables":{"step_name":"name_assign"},"WritingPrograms":{"step_name":"editor_hello_world"},"StoringCalculationsInVariables":{"step_name":"sentence_equals_word_plus_name"},"BasicTerminology":{"step_name":"final_text"},"IntroducingNestedLoops":{"step_name":"first_nested_loop"},"IntroducingBirdseye":{"step_name":"first_birdseye_example"},"NewlinesAndFormatBoard":{"step_name":"final_text"},"Types":{"step_name":"final_text"},"InteractiveProgramsWithInput":{"step_name":"final_text"},"NestedListAssignment":{"step_name":"final_text"},"MakingTheBoard":{"step_name":"final_text"},"TheFullTicTacToeGame":{"step_name":"final_text"}}},"processing":false,"running":false,"numHints":0,"editorContent":"def winning_line(strings):\n    strings = set(strings)\n    return len(strings) == 1 and ' ' not in strings\n\ndef row_winner(board):\n    return any(winning_line(row) for row in board)\n\ndef column_winner(board):\n    return row_winner(zip(*board))\n\ndef main_diagonal_winner(board):\n    return winning_line(row[i] for i, row in enumerate(board))\n\ndef diagonal_winner(board):\n    return main_diagonal_winner(board) or main_diagonal_winner(reversed(board))\n\ndef winner(board):\n    return row_winner(board) or column_winner(board) or diagonal_winner(board)\n\ndef format_board(board):\n    size = len(board)\n    line = f'\\n  {\"+\".join(\"-\" * size)}\\n'\n    rows = [f'{i + 1} {\"|\".join(row)}' for i, row in enumerate(board)]\n    return f'  {\" \".join(str(i + 1) for i in range(size))}\\n{line.join(rows)}'\n\ndef play_move(board, player):\n    print(f'{player} to play:')\n    row = int(input()) - 1\n    col = int(input()) - 1\n    board[row][col] = player\n    print(format_board(board))\n\ndef make_board(size):\n    return [[' '] * size for _ in range(size)]\n\ndef print_winner(player):\n    print(f'{player} wins!')\n\ndef print_draw():\n    print(\"It's a draw!\")\n\ndef play_game(board_size, player1, player2):\n    board = make_board(board_size)\n    print(format_board(board))\n    \n    player = player1\n    for i in range(board_size * board_size):\n        play_move(board, player)\n        if winner(board):\n            print_winner(player)\n            return\n        if player == player1:\n            player = player2\n        else:\n            player = player1\n   \n    print_draw() \n        \nplay_game(3, 'X', 'O')","messages":[],"pastMessages":["<p>You must define a function <code>format_board</code></p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">XXO</span>\n<span class=\"n\">OOX</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"kc\">None</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">XXO</span>\n<span class=\"n\">OOX</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>NameError: name 'join' is not defined\n</code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">XXO</span>\n<span class=\"n\">OOX</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>NameError: name 'x' is not defined\n</code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">XXO</span>\n<span class=\"n\">OOX</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">X</span>\n<span class=\"n\">X</span>\n<span class=\"n\">O</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">XXO</span>\n<span class=\"n\">OOX</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">XXO</span>\n<span class=\"n\">OOX</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code> | |\n-+-+-\nX|X|O\n-+-+-\nO|O|X\n</code></pre>","<p><strong>STOP!</strong></p>\n<p>Try to avoid copy pasting code. You will learn, absorb, and remember better if you type in the code yourself.</p>\n<p>When copying is appropriate, there will be a button to click to make it easy. If there's no button, try typing.</p>\n<p>Having said that, we're not going to force you. Copy if you really want to.</p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>   f'\n -+-+-\n'XXOf'\n -+-+-\n'OOX\n</code></pre>\n<p>when it should output:</p>\n<pre><code> | |\n-+-+-\nX|X|O\n-+-+-\nO|O|X\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> -+-+-\n'XXO\n -+-+-\n'OOX\n</code></pre>\n<p>when it should output:</p>\n<pre><code> | |\n-+-+-\nX|X|O\n-+-+-\nO|O|X\n</code></pre>","<p><strong>Unused variable <code>lines</code></strong></p>\n<p>You defined a variable <code>lines</code> but never used it. Did you forget to use it?\nMaybe you used the wrong variable in its place? If you don't need it, just remove it entirely.</p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"kc\">None</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code> | |\n-+-+-\nX|X|O\n-+-+-\nO|O|X\n</code></pre>","<p><strong>Unused variable <code>line</code></strong></p>\n<p>You defined a variable <code>line</code> but never used it. Did you forget to use it?\nMaybe you used the wrong variable in its place? If you don't need it, just remove it entirely.</p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> | |\n\nX|X|O\n\nO|O|X\n</code></pre>\n<p>when it should output:</p>\n<pre><code> | |\n-+-+-\nX|X|O\n-+-+-\nO|O|X\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">O</span><span class=\"o\">|</span><span class=\"n\">O</span><span class=\"o\">|</span><span class=\"n\">X</span>\n\n<span class=\"n\">O</span><span class=\"o\">|</span><span class=\"n\">O</span><span class=\"o\">|</span><span class=\"n\">X</span>\n\n<span class=\"n\">O</span><span class=\"o\">|</span><span class=\"n\">O</span><span class=\"o\">|</span><span class=\"n\">X</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code> | |\n-+-+-\nX|X|O\n-+-+-\nO|O|X\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>NameError: name 'i' is not defined\n</code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> 1 1\nX1X1O\nO1O1X\n</code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> 1XXO\n 1OOX\n</code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> str(row)XXO\n str(row)OOX\n</code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>   ['O', 'O', 'X']XXO['O', 'O', 'X']OOX\n</code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> [' ', ' ', ' '] [' ', ' ', ' ']\nX['X', 'X', 'O']X['X', 'X', 'O']O\nO['O', 'O', 'X']O['O', 'O', 'X']X\n</code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"kc\">None</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'O'</span><span class=\"p\">,</span> <span class=\"s1\">'X'</span><span class=\"p\">]]</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"mi\">3</span>\n<span class=\"n\">O</span>\n<span class=\"n\">O</span>\n<span class=\"n\">X</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code> 123\n1\n2XXO\n3OOX\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n<span class=\"n\">player</span> <span class=\"o\">=</span> <span class=\"s1\">'X'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> 123\n1\n2X\n3\n</code></pre>\n<p>when it should output:</p>\n<pre><code>&lt;input: 2&gt;\n&lt;input: 1&gt;\n 123\n1\n2X\n3\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n<span class=\"n\">player</span> <span class=\"o\">=</span> <span class=\"s1\">'X'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> 123\n1\n2\n3\n</code></pre>\n<p>when it should output:</p>\n<pre><code>&lt;input: 2&gt;\n&lt;input: 1&gt;\n 123\n1\n2X\n3\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n<span class=\"n\">player</span> <span class=\"o\">=</span> <span class=\"s1\">'X'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>TypeError: can only concatenate str (not \"int\") to str\n</code></pre>\n<p>when it should output:</p>\n<pre><code>&lt;input: 2&gt;\n&lt;input: 1&gt;\n 123\n1\n2X\n3\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n<span class=\"n\">player</span> <span class=\"o\">=</span> <span class=\"s1\">'X'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code> 123\n1 X\n2\n3\n</code></pre>\n<p>when it should output:</p>\n<pre><code>&lt;input: 2&gt;\n&lt;input: 1&gt;\n 123\n1\n2X\n3\n</code></pre>","<p>You must define a function <code>play_move</code></p>","<p>The sublists in the result are not all separate objects.</p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]</span>\n</span></code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>[&lt;built-in method copy of list object at 0x19364d0&gt;, &lt;built-in method copy of list object at 0x19364d0&gt;]\n</code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>AttributeError: 'builtin_function_or_method' object has no attribute 'append'\n</code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>[[&lt;built-in method copy of list object at 0x17610b0&gt;, &lt;built-in method copy of list object at 0x17610b0&gt;], [&lt;built-in method copy of list object at 0x17610b0&gt;, &lt;built-in method copy of list object at 0x17610b0&gt;]]\n</code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n</span></code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>UnboundLocalError: local variable 'row' referenced before assignment\n</code></pre>\n<p>when it should output:</p>\n<pre><code class=\"codehilite\"><span><span class=\"p\">[[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">],</span> <span class=\"p\">[</span><span class=\"s1\">' '</span><span class=\"p\">,</span> <span class=\"s1\">' '</span><span class=\"p\">]]</span>\n</span></code></pre>","<p>You must define a function <code>make_board</code></p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board_size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n<span class=\"n\">player1</span> <span class=\"o\">=</span> <span class=\"s1\">'A'</span>\n<span class=\"n\">player2</span> <span class=\"o\">=</span> <span class=\"s1\">'B'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>ValueError: No more test inputs - solution should have finished by now\n</code></pre>\n<p>when it should output:</p>\n<pre><code>  1 2\n1  |\n  -+-\n2  |\nA to play:\n&lt;input: 1&gt;\n&lt;input: 1&gt;\n  1 2\n1 A|\n  -+-\n2  |\nB to play:\n&lt;input: 1&gt;\n&lt;input: 2&gt;\n  1 2\n1 A|B\n  -+-\n2  |\nA to play:\n&lt;input: 2&gt;\n&lt;input: 1&gt;\n  1 2\n1 A|B\n  -+-\n2 A|\nA wins!\n</code></pre>","<p>You must define a function <code>play_game</code></p>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board_size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n<span class=\"n\">player1</span> <span class=\"o\">=</span> <span class=\"s1\">'A'</span>\n<span class=\"n\">player2</span> <span class=\"o\">=</span> <span class=\"s1\">'B'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>TypeError: object of type 'int' has no len()\n</code></pre>\n<p>when it should output:</p>\n<pre><code>  1 2\n1  |\n  -+-\n2  |\nA to play:\n&lt;input: 1&gt;\n&lt;input: 1&gt;\n  1 2\n1 A|\n  -+-\n2  |\nB to play:\n&lt;input: 1&gt;\n&lt;input: 2&gt;\n  1 2\n1 A|B\n  -+-\n2  |\nA to play:\n&lt;input: 2&gt;\n&lt;input: 1&gt;\n  1 2\n1 A|B\n  -+-\n2 A|\nA wins!\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board_size</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n<span class=\"n\">player1</span> <span class=\"o\">=</span> <span class=\"s1\">'A'</span>\n<span class=\"n\">player2</span> <span class=\"o\">=</span> <span class=\"s1\">'B'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>NameError: name 'plater2' is not defined\n</code></pre>\n<p>when it should output:</p>\n<pre><code>  1 2\n1  |\n  -+-\n2  |\nA to play:\n&lt;input: 1&gt;\n&lt;input: 1&gt;\n  1 2\n1 A|\n  -+-\n2  |\nB to play:\n&lt;input: 1&gt;\n&lt;input: 2&gt;\n  1 2\n1 A|B\n  -+-\n2  |\nA to play:\n&lt;input: 2&gt;\n&lt;input: 1&gt;\n  1 2\n1 A|B\n  -+-\n2 A|\nA wins!\n</code></pre>","<p>Given these values:</p>\n<pre><code class=\"codehilite\"><span><span class=\"n\">board_size</span> <span class=\"o\">=</span> <span class=\"mi\">3</span>\n<span class=\"n\">player1</span> <span class=\"o\">=</span> <span class=\"s1\">'X'</span>\n<span class=\"n\">player2</span> <span class=\"o\">=</span> <span class=\"s1\">'O'</span>\n</span></code></pre>\n<p>your code outputs:</p>\n<pre><code>ValueError: No more test inputs - solution should have finished by now\n</code></pre>\n<p>when it should output:</p>\n<pre><code>  1 2 3\n1  | |\n  -+-+-\n2  | |\n  -+-+-\n3  | |\nX to play:\n&lt;input: 1&gt;\n&lt;input: 1&gt;\n  1 2 3\n1 X| |\n  -+-+-\n2  | |\n  -+-+-\n3  | |\nO to play:\n&lt;input: 1&gt;\n&lt;input: 2&gt;\n  1 2 3\n1 X|O|\n  -+-+-\n2  | |\n  -+-+-\n3  | |\nX to play:\n&lt;input: 1&gt;\n&lt;input: 3&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2  | |\n  -+-+-\n3  | |\nO to play:\n&lt;input: 2&gt;\n&lt;input: 1&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2 O| |\n  -+-+-\n3  | |\nX to play:\n&lt;input: 2&gt;\n&lt;input: 3&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2 O| |X\n  -+-+-\n3  | |\nO to play:\n&lt;input: 3&gt;\n&lt;input: 3&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2 O| |X\n  -+-+-\n3  | |O\nX to play:\n&lt;input: 3&gt;\n&lt;input: 1&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2 O| |X\n  -+-+-\n3 X| |O\nO to play:\n&lt;input: 2&gt;\n&lt;input: 2&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2 O|O|X\n  -+-+-\n3 X| |O\nX to play:\n&lt;input: 3&gt;\n&lt;input: 2&gt;\n  1 2 3\n1 X|O|X\n  -+-+-\n2 O|O|X\n  -+-+-\n3 X|X|O\nIt's a draw!\n</code></pre>"],"requestingSolution":0,"prediction":{"choices":null,"answer":null,"userChoice":"","wrongAnswers":[],"state":"hidden","codeResult":{"passed":true,"messages":[],"output":"  1 2 3\n1  | | \n  -+-+-\n2  | | \n  -+-+-\n3  | | \nX to play:\n  1 2 3\n1 X| | \n  -+-+-\n2  | | \n  -+-+-\n3  | | \nO to play:\n  1 2 3\n1 X|O| \n  -+-+-\n2  | | \n  -+-+-\n3  | | \nX to play:\n  1 2 3\n1 X|O| \n  -+-+-\n2  |X| \n  -+-+-\n3  | | \nO to play:\n  1 2 3\n1 X|O| \n  -+-+-\n2  |X| \n  -+-+-\n3  | |O\nX to play:\n  1 2 3\n1 X|O| \n  -+-+-\n2  |X| \n  -+-+-\n3 X| |O\nO to play:\n  1 2 3\n1 X|O| \n  -+-+-\n2 O|X| \n  -+-+-\n3 X| |O\nX to play:\n  1 2 3\n1 X|O| \n  -+-+-\n2 O|X| \n  -+-+-\n3 X|X|O\nO to play:\n  1 2 3\n1 X|O|O\n  -+-+-\n2 O|X| \n  -+-+-\n3 X|X|O\nX to play:\n  1 2 3\n1 X|O|O\n  -+-+-\n2 O|X|X\n  -+-+-\n3 X|X|O\nIt's a draw!\n"}},"questionWizard":{"messages":[],"requestExpectedOutput":false,"expectedOutput":""}}}

alexmojaki-bot avatar May 13 '22 15:05 alexmojaki-bot