python爬虫初体验(五)—— 边学边玩小游戏

server/2024/11/17 1:08:44/

1. 打开浏览器

利用webbrowser 模块的 open()函数可以启动一个新浏览器,打开指定的 URL。

python">import webbrowser 
webbrowser.open('http://inventwithpython.com/') 

2. 猜数字游戏

python"># -*- coding: utf-8 -*-
# This is a guess the number game.
import randomsecretNumber = random.randint(1, 20)
print('I am thinking of a number between 1 and 20.')# Ask the player to guess 6 times.
for guessesTaken in range(1, 7):print('Take a guess.')guess = int(input())if guess < secretNumber:print('Your guess is too low.')elif guess > secretNumber:print('Your guess is too hight.')else:break # This condition is the correct guess!if guess == secretNumber:print('Good job!You guessed my number in ' + str(guessesTaken) + ' guesses!')
else:print('Nope. The number I was thinking of was ' + str(secretNumber))

3. 贪吃蛇游戏

python"># -*- coding: utf-8 -*-
import curses
import randomdef main(stdscr):# 隐藏光标curses.curs_set(0)# 设置非阻塞输入模式stdscr.nodelay(1)# 设置刷新间隔为100毫秒stdscr.timeout(100)# 获取屏幕的高度和宽度sh, sw = stdscr.getmaxyx()# 初始化蛇的位置,初始时蛇只有一个单元格snake = [(sh//2, sw//2)]# 初始方向为向右direction = curses.KEY_RIGHT# 随机生成食物的位置food = (random.randint(1, sh-2), random.randint(1, sw-2))# 在屏幕上显示食物stdscr.addch(food[0], food[1], '*')while True:# 获取用户输入的按键key = stdscr.getch()# 根据用户输入更新方向if key in [curses.KEY_RIGHT, curses.KEY_LEFT, curses.KEY_UP, curses.KEY_DOWN]:direction = key# 获取蛇头的位置head = snake[0]# 根据当前方向计算新的蛇头位置if direction == curses.KEY_RIGHT:new_head = (head[0], head[1] + 1)elif direction == curses.KEY_LEFT:new_head = (head[0], head[1] - 1)elif direction == curses.KEY_UP:new_head = (head[0] - 1, head[1])elif direction == curses.KEY_DOWN:new_head = (head[0] + 1, head[1])# 将新的蛇头插入到蛇的头部snake.insert(0, new_head)# 如果新的蛇头位置与食物位置相同,则生成新的食物if snake[0] == food:food = (random.randint(1, sh-2), random.randint(1, sw-2))stdscr.addch(food[0], food[1], '*')else:# 如果没有吃到食物,移除蛇尾tail = snake.pop()stdscr.addch(tail[0], tail[1], ' ')# 检查游戏是否结束if (snake[0][0] in [0, sh-1] orsnake[0][1] in [0, sw-1] orsnake[0] in snake[1:]):# 显示游戏结束信息stdscr.addstr(sh//2, sw//2 - 5, "Game Over!")stdscr.refresh()# 暂停2秒curses.napms(2000)break# 在屏幕上显示新的蛇头stdscr.addch(snake[0][0], snake[0][1], '#')# 使用curses.wrapper来初始化和清理curses环境
curses.wrapper(main)

4. 井子棋

python"># -*- coding: utf-8 -*-
import curses
import randomdef print_board(board):"""打印当前的游戏棋盘。:param board: 3x3 的二维列表,表示当前的棋盘状态。"""for row in board:print " | ".join(row)  # 使用 '|' 分隔符打印每一行print "-" * 5  # 打印分隔线def check_winner(board, player):"""检查当前玩家是否赢了。:param board: 3x3 的二维列表,表示当前的棋盘状态。:param player: 当前玩家的符号 ('X' 或 'O')。:return: 如果当前玩家赢了,返回 True;否则返回 False。"""# 检查每一行是否有三个相同的符号for row in board:if all([cell == player for cell in row]):return True# 检查每一列是否有三个相同的符号for col in range(3):if all([board[row][col] == player for row in range(3)]):return True# 检查两条对角线是否有三个相同的符号if all([board[i][i] == player for i in range(3)]) or all([board[i][2-i] == player for i in range(3)]):return Truereturn Falsedef main():"""主函数,控制游戏的流程。"""# 初始化棋盘board = [[' ' for _ in range(3)] for _ in range(3)]current_player = 'X'  # 当前玩家while True:print_board(board)  # 打印当前棋盘# 获取用户输入的行和列row = int(raw_input("Enter row (0, 1, 2): "))col = int(raw_input("Enter column (0, 1, 2): "))# 检查所选单元格是否已被占用if board[row][col] != ' ':print "Cell already occupied. Try again."continue# 更新棋盘board[row][col] = current_player# 检查当前玩家是否赢了if check_winner(board, current_player):print_board(board)  # 再次打印棋盘print "Player {} wins!".format(current_player)break# 检查是否平局if all([cell != ' ' for row in board for cell in row]):print_board(board)  # 再次打印棋盘print "It's a tie!"break# 切换玩家current_player = 'O' if current_player == 'X' else 'X'if __name__ == "__main__":main()  # 运行主函数

http://www.ppmy.cn/server/142515.html

相关文章

构建Spring Boot编程训练系统:全面指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理编程训练系统的相关信息成为必然。开发合适…

STM32芯片EXIT外部中断的配置与原理以及模板代码(标准库)

配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好 第一步&#xff1a;配置RCC&#xff0c;把我们涉及到的外设的时钟都打开 &#xff08;此处EXTI是默认打开的&#xff0c;而NVIC是内核外设无需配置&#xff09; 第二步&#xff1a;配置GPIO,选择端口为输入模式 第三…

python遇到问题

1&#xff0c;BeautifulSoup lxml 解析器安装 问 1&#xff0c;BeautifulSoup lxml 解析器安装2&#xff0c;BeautifulSoup 如何引入第三方库 BeautifulSoup lxml&#xff0c;默认是导入的是python内置的解析器答1 1. 安装 Python 和 pip 确保你已经安装了 Python 和 pip。你…

JVM——类加载器、类加载器的分类

类加载器是java虚拟机提供给应用程序去 实现获取类和接口字节码数据 的技术 类加载器的分类&#xff1a; 一类是 Java代码中实现的一类是 Java虚拟机底层源代码实现的 通常可以细分为三大类&#xff1a;jdk8版本中的 java代码中的 扩展类加载器&#xff1a;Extension 允许扩…

力扣-Mysql-3322- 英超积分榜排名 III(中等)

一、题目来源 3322. 英超积分榜排名 III - 力扣&#xff08;LeetCode&#xff09; 二、数据表结构 表&#xff1a;SeasonStats --------------------------- | Column Name | Type | --------------------------- | season_id | int | | team_id …

Element-ui Select选择器自定义搜索方法

效果图 具体实现 <template><div class"home"><el-selectref"currencySelect"v-model"currency"filterable:spellcheck"false"placeholder"请选择":filter-method"handleCurrencyFilter"change&q…

刷题统计(C语言)

问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 aa 道题目, 周六和周日每天做 bb 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 nn 题? 输入格式 输入一行包含三个整数 a,ba,b 和 nn. 输出格式 输出一个整数代表天…

将 HTML 转换为 JSX:JSX 和 JSX 规则

JSX 是 JavaScript 的语法扩展。您可以在 JavaScript 文件中编写 HTML 格式。 它基于 Web、Html、Css 和 JavaScript。Web 开发人员将页面内容分别编写为 Html 文件&#xff0c;将设计编写为 Css 文件&#xff0c;将逻辑编写为 JavaScript 文件。 须知 &#xff1a; JSX 是一个…