PyCONNECT FOUR LABPython · function-first course
必做进度 0/1213 TASKS · FUNCTION FIRST
PYTHON · FUNCTION-FIRST PROJECT

一个函数,一个问题。
最后组合成完整游戏。

课程按原 Connect 4 资料的函数顺序重建:输入、棋盘、落子、胜负、双人对战, 再进入 Easy、Medium、Hard 电脑玩家。没有类,没有对象建模负担。

查看 13 个任务
13 函数任务2 学习与编程视图0 面向对象前置
connect4.py
def create_board():
    return [[0] * 7 for _ in range(6)]

def drop_piece(board, player, column):
    for row in range(5, -1, -1):
        # gravity starts here ↓

def end_of_game(board):
    # four directions, one result
OBJECTIVES / 项目目标

这份作业要练什么?

  • 与小组成员协作,逐步完成同一个文字版游戏。
  • 开发可在终端中运行的 Connect 4,不依赖图形界面。
  • 综合练习课程前五周的变量、判断、循环、列表和函数。
WORKING WITH FUNCTIONS / 函数写法

每一题只完成指定函数

把本题代码缩进到预先给出的函数定义中;需要单独试跑时,再在文件底部调用它。

def function_name(parameters):
    # 本题代码写在这里
    return result


if __name__ == "__main__":
    function_name(arguments)
SUBMISSION / 最终文件

一个主文件,一个选做文件

前十二题累计到同一个 connect4.py;T13 单独保存,不和主游戏混在一起。

A1_<group_name>.zip
├── connect4.py
└── connectk.py  # optional
函数契约保持一致棋盘是 6×7 二维列表;0/1/2 表示空格与两位玩家;对外列号始终为 1–7;end_of_game 返回 0、1、2 或 3。
T0125 min

validate_input

validate_input(prompt, valid_inputs)

反复读取输入,直到用户给出允许的字符串;这是所有菜单和回合输入的共同入口。

函数签名validate_input(prompt, valid_inputs)
Python 概念参数 · 返回值 · while

01 Task Description / 任务介绍

反复读取输入,直到用户给出允许的字符串;这是所有菜单和回合输入的共同入口。

为什么要做:把“询问—检查—重试”集中在一个函数里,后续菜单和玩家回合就不必重复相同的 while 循环。

02 Arguments / 参数

参数名类型作用与约束
promptstr

每次调用 input() 时显示给用户的提示文字;它只负责说明要输入什么,不参与合法性判断。

valid_inputslist[str]

完整的合法答案列表。因为 input() 总是返回字符串,所以列表元素也必须是字符串。

03 Outputs / Returns / 输出与返回

RETURN TYPE / 返回类型str
MEANING / 含义

用户最终输入的合法字符串

04 Dependencies / 依赖

先完成并测试这些函数,再组合当前任务。

05 动手顺序

  1. 先用 input(prompt) 读取一个字符串。
  2. 当答案不在 valid_inputs 中时,输出错误提示并重新读取。
  3. 离开循环后返回答案,不在这个函数里把它转换成整数。

06 需要时再打开提示

Hint 1

input() 的返回值总是字符串,所以合法选项也写成字符串列表。

Hint 2

循环条件直接写 answer not in valid_inputs。

Hint 3

return 应放在 while 循环结束之后。

07 离开前自检

检查标准能说明为什么 valid_inputs 使用字符串,而不是整数。

08 Test Data / 测试数据

输入 / 初始状态预期输出检查目的
prompt="Choose: ", valid_inputs=["a", "b"], 用户输入 a"a"第一次输入合法,直接返回。
prompt="Choose: ", valid_inputs=["a", "b"], 用户依次输入 x、b先打印错误提示,最后返回 "b"非法输入不能结束函数。
valid_inputs=["1", "2", "3"], 用户输入 2"2"(字符串)类型保持为 str。

09 Example / 输入输出样例

INPUT / 调用样例
Please select an option (a, b, c): 1
Please select an option (a, b, c): d
Please select an option (a, b, c): a
OUTPUT / 预期结果
Invalid input, please try again.
Invalid input, please try again.
返回值: "a"
SERVER-TESTED FUNCTIONS

逐关提交通过,最后组合成可运行的 connect4.py。

每关只编写当前函数,服务器会补齐前置依赖并逐项验证。T12 完成完整人机对局,T13 再把相同思路推广到任意尺寸的 Connect-K。

⌘ / Ctrl + Enter · submit tests