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

1. 打开浏览器

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

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

2. 猜数字游戏

# -*- 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. 贪吃蛇游戏

# -*- 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. 井子棋

# -*- 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.mzph.cn/news/887025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动手学深度学习Pytorch】1. 线性回归代码

零实现 导入所需要的包&#xff1a; # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集&#xff1a;假设w[2, -3.4]&#xff0c;b4.2&#xff0c;存在随机噪音&…

亿咖通科技应邀出席微软汽车行业智享会,分享ECARX AutoGPT全新实践

11月14日&#xff0c;全球出行科技企业亿咖通科技&#xff08;纳斯达克股票代码&#xff1a;ECX&#xff09;应邀于广州参加由微软举行的汽车行业智享会&#xff0c;揭晓了亿咖通科技对“AI定义汽车”时代的洞察与技术布局&#xff0c;分享了亿咖通科技汽车垂直领域大模型ECARX…

鸿蒙开发学习|Promise的介绍与在鸿蒙中的使用

Promise的介绍与在鸿蒙中的使用 异步编程 学习Promise的开始,我们要先了解异步编程 一般代码的执行是单线程的机制,就是按次序执行,执行完一个任务后,再执行下一个,如果我们在页面加载的同时时候执行一个请求,拿到数据后映射到界面上,这时我们就需要异步操作来执行这个请求 异…

第二课 Model模型资源导入设置检查与优化

上期我们学习了最简单的audio音效的优化&#xff0c;接下来我们继续model模型资源的优化&#xff0c;我将汇总各路大神关于模型优化的思路和方法供你和我学习。 首先我们还是要把我们优化的目标重申一遍&#xff1a; 优化的目标 1.文件体积尽可能小 2.内存占用尽可能小 3.…

小米路由器用外网域名访问管理界面

本文在Redmi AX3000 (RA81)设置&#xff0c;其他型号路由器的管理界面端口可能各不相同。 开始之前需要保证路由器SSH功能正常&#xff0c;如果没有SSH可以参考这里。 1. 给WAN口开放80端口 可以通过下载mixbox的firewall插件或者其他防火墙插件开放端口。 2. 把域名解析到路…

一次需升级系统的wxpython安装(macOS M1)

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景&#xff1a;想在macos安装Robot Framework &#xff0c;显示pip3不是最新&#xff0c;更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…

Leetcode 求根节点到叶节点数字之和

使用深度优先搜索 DFS 来做 我提供的代码使用的是 深度优先搜索&#xff08;DFS&#xff0c;Depth-First Search&#xff09; 算法。以下是具体的算法思想和实现步骤的解释&#xff1a; 算法思想 树的路径代表数字&#xff1a; 树中每条从根节点到叶子节点的路径可以看作一个整…

IDEA:2023版远程服务器debug

很简单&#xff0c;但是很多文档没有写清楚&#xff0c;wocao 一、首先新建一个远程jvm 二、配置 三、把上面的参数复制出来 -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 四、然后把这串代码放到服务器中&#xff08;这里的0.0.0.0意思是所有IP都能访问&a…

计算机毕业设计 | SpringBoot+vue汽车资讯网站 汽车购买咨询管理系统(附源码+论文)

1&#xff0c;绪论 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理汽车资讯网站的相关信息成为必然…

RedHat系统配置静态IP

1、执行nmtui命令进入字符配置界面如下图所示 2、选择编辑连接进入 3、选择编辑进入后&#xff0c;将IPv4设置为手动模式后&#xff0c;选择显示后进行ip地址、网关、DNS的配置&#xff0c;配置完成后选择确定退出编辑 4、进入主界面后选择启用连接进入后&#xff0c;选择启用&…

Android开发教程案例源码分享-匹配动画多个头像飘动效果

Android开发教程案例源码分享-匹配动画多个头像飘动效果 匹配往往出现多个头像飘动&#xff0c;吸引人点击&#xff0c;有时出现的位置还不固定 一、思路&#xff1a; 用MotionLayout 二、效果图&#xff1a; 看视频更直观点&#xff1a; Android开发教程案例源码分享-匹配…

设计LRU缓存

LRU缓存 LRU缓存的实现思路LRU缓存的操作C11 STL实现LRU缓存自行设计双向链表 哈希表 LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;缓存是一种常见的缓存淘汰算法&#xff0c;其基本思想是&#xff1a;当缓存空间已满时&#xff0c;移除最近最少使…

SAM-Med2D 训练完成后boxes_prompt没有生成mask的问题

之前对着这这篇文章去微调SAM_Med2D(windows环境),发现boxes_prompt空空如也。查找了好长时间问题SAM-Med2D 大模型学习笔记&#xff08;续&#xff09;&#xff1a;训练自己数据集_sam训练自己数据集-CSDN博客 今天在看label2image_test.json文件的时候发现了一些端倪: 官方…

39页PDF | 毕马威_数据资产运营白皮书(限免下载)

一、前言 《毕马威数据资产运营白皮书》探讨了数据作为新型生产要素在企业数智化转型中的重要性&#xff0c;提出了数据资产运营的“三要素”&#xff08;组织与意识、流程与规范、平台与工具&#xff09;和“四重奏”&#xff08;数据资产盘点、评估、治理、共享&#xff09;…

在 macOS 和 Linux 中,波浪号 `~`的区别

文章目录 1、在 macOS 和 Linux 中&#xff0c;波浪号 ~macOS示例 Linux示例 区别总结其他注意事项示例macOSLinux 结论 2、root 用户的主目录通常是 /root解释示例切换用户使用 su 命令使用 sudo 命令 验证当前用户总结 1、在 macOS 和 Linux 中&#xff0c;波浪号 ~ 在 macO…

【LeetCode每日一题】——485.最大连续 1 的个数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 LeetCode 三【题目编号】 485.最大连续 1 的个数 四【题目描述】 给定…

windows 操作系统下载 Android源码教程

前言 开始我是装了hyber-v 虚拟机ubuntu 的&#xff0c;然而非常的卡顿且难用。因此我尝试在windows上使用repo&#xff0c;因此有了这篇文章 补充 第二天发现编译源码也需要linux命令因为源码中的很多脚本都是.sh的 因此最终通过安装WSL解决&#xff08;在window应用商店就…

单片机进阶硬件部分_day2_项目实践

设计要求 从绘制原理图到画PCB板&#xff0c;完成智能云衣柜项目 STM32 &#xff08;Modbus&#xff09;云IOT衣物云端管理 华为PCB布线规范 基于IoT的智享家主控系统 步骤分析 需求分析 器件选型绘制原理图&#xff08;器件连接&#xff09;PCB布局、布线泪滴、铺铜、添加丝印…

接口上传视频和oss直传视频到阿里云组件

接口视频上传 <template><div class"component-upload-video"><el-uploadclass"avatar-uploader":action"uploadImgUrl":on-progress"uploadVideoProcess":on-success"handleUploadSuccess":limit"lim…

Flutter:photo_view图片预览功能

导入SDK photo_view: ^0.15.0单张图片预览&#xff0c;支持放大缩小 import package:flutter/material.dart; import package:photo_view/photo_view.dart;... ...class _MyHomePageState extends State<MyHomePage>{overrideWidget build(BuildContext context) {return…