comp9021 第三课
文章目录
- 前言
- *, Raise ValueError,
- 一些函数, set(), input(), while true, choice(), pop() , remove()
- 三门问题
前言
课前谈了一些quiz1相关的东西,但没听清,反正我做完了:)。本节课比较重要的是三门问题,全课程都是围绕着三门问题的实现以及介绍相关的函数。
三门问题背景(Monty Hall problem)
youtube 链接:https://www.youtube.com/watch?v=onEVIBcG4zk
解法
换门得到汽车概率P1 = 1/3 + 1/3 = 2/3,不换门得到概率P2 = 1/3 * 1/2 + 1/3 * 1/2 = 1/3
*, Raise ValueError,
在list里面把元素导出来(解压参数)
加了*, print 里面的函数
也有一种用法是将所有参数以元组导入
raise 一种方法让bug发生
raise ValueError 给与一种方法直接跳到except语句
一些函数, set(), input(), while true, choice(), pop() , remove()
没有冒号在里面的大括号{‘A’} 会变成set
而有了key, value 的{‘A’: 1} 会变成dict
但这样用很愚蠢(说了好多次:))
set()
set() : 创建一个空集合
注意,set是无序的,而list是有序的
input() & try … except
input输出的是字符串(重要)
用try…except(ValueError)防止不合法直输入导致的报错
While True: 可以一直提示用户输入,直到输入正确的直
同时raise 可以直接跳到except语句
pop()
pop(), 将list里面的元素删除, pop以index为准, 比remove()快,因为remove()要scan list
choice([ ])选择list里面的元素random
remove(x), 移除x from list
三门问题
首先创建门 A, B, C
使用choice(),预先指定一个门为正确的门winning_door ‘C’
确定第一次选择的门first_choice,注意此处用的是pop(), 或的是str 被排除的门’A’,因此此时集合door还剩两个门‘B’,‘C’(winning_door),注意pop不生成新list。而采用pop()原因除了pop()不生成新list外,还有pop()是对index进行操作,使用randrange()保证不受doors参数影响。
不换门的一选和二选相同
如果一选是正确的门情况
那么开的门需要在两扇门中选一扇打开,注意此时用的仍然是pop(),doors此时只有一个参数(门)
如果第二次换门。那么第二次选择的门就是doors[0],此时doors里面也只有一个参数
否则一选不是正确的门
由于游戏规则,裁判不能打开正确的门,因此使用remove()移除正确的门(winning_door),remove()移除的直接是元素,而不是pop()按index移除。
因此此时doors里面仅有一个参数
如果选择换门,则第二个选择为正确的门
代码
from random import choice, randrange
contestant_switches = True # Could also be False!
doors = ['A', 'B', 'C']
winning_door = choice(doors)
first_choice = doors.pop(randrange(3))
if not contestant_switches:second_choice = first_choice
if first_choice == winning_door:opened_door = doors.pop(randrange(2))if contestant_switches:second_choice = doors[0]
else:doors.remove(winning_door)opened_door = doors[0]if contestant_switches:second_choice = winning_door
comp9021 第三课相关推荐
- 第三课.运算符与表达式
第三课目录 运算符与表达式 算术运算符 关系运算符 逻辑运算符 德摩根律 使用断言assert 位运算符 补码 补码与位运算 赋值运算符 杂项运算符 运算符与表达式 数学是科技发展的基础,数学公式的意 ...
- 第三课.Linux代码编辑器
第三课目录 vi/vim vi/vim简介 vi的模式 vi在命令模式下的操作 vi在底线命令模式下的操作 Visual Studio Code Git git简介 关于git的故事 git的使用 v ...
- 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...
- 【C语言探索之旅】第三部分第三课:SDL开发游戏之显示图像
内容简介 1.第三部分第三课: SDL开发游戏之显示图像 2.第三部分第四课预告: SDL开发游戏之事件处理 第三部分第三课:SDL开发游戏之显示图像 上一课中,我们学习了如何加载SDL库(SDL_I ...
- 矩阵理论及其应用_有限元分析ansys理论与应用视频第三课 绪论:直接法矩阵求解...
我们拒绝关注获取资源的行为, 我们拒绝分享文章获取资源的行为, 我们拒绝收费获取资源的行为, 我们拒绝一切套路. 是否关注是大家的自由, 我们只为努力分享机械行业资源, 让更多的学习者受益. 本期视频 ...
- 斯坦福大学机器学习第三课“多变量线性回归“
斯坦福大学机器学习第三课"多变量线性回归(Linear Regression with Multiple Variables)" 斯坦福大学机器学习第四课"多变量线性回归 ...
- 投资学习网课笔记(part3)--基金第三课
学习笔记,仅供参考 文章目录 基金第三课 指数基金 指数基金的优势 基金第三课 指数基金 什么是指数基金 指数基金是一种特殊的股票基金,它复制.追踪指数.买指数基金就是买国运,只要国家经济正常发展,指 ...
- 光谱 波长_【第三课】红外光谱仪及其联用技术
第三课 前两节课:[第一课]什么是红外光谱方法.[第二课]如何进行红外光谱结构解析,孙素琴教带我们学习了红外光谱的前世今生,以及红外光谱的理论基础.相信小伙伴们都有所收获,今天咱们将跟随另一位清华大学 ...
- 曲曲直直线条图计算机教案,【曲曲直直的美术画】_美术教案第三课:曲曲直直(三年级美术下册教案)——小学美术...
美术教案第三课:曲曲直直(三年级美术下册教案) 教学目标: 认知目标:能够认识生活中的各种曲线和直线,说说曲线.直线给自己的感受. 能力目标:能够用绘画.剪贴等方法表现曲线和直线的画面,培养学生自主探 ...
最新文章
- MATLAB学习笔记(一)——入门与操作
- 从PCB焊接角度谈画PCB图时应注意的问题
- qunee for html5 api,Qunee for HTML5
- 全世界还有44亿人无法上网
- asp.net广告控件的使用
- .NET 6 Preview 3 发布
- Javascript——Math对象
- Mac安装Redis
- 【python】我用python抓取了19个一线城市三年的房价数据,并做了走势分析
- html象棋游戏源码分享
- 永恒之蓝(ms17010)漏洞利用
- 6.4 利用色彩范围命令快速选择一定色彩范围内的像素 [原创Ps教程]
- 新浪微博分享遇到的心酸的问题
- 洛谷每日三题之第四天
- DirectX11 计时和动画
- 浙江大学软件学院网络自动认证+Padavan路由器挂python脚本
- Pycharm报错:AttributeError: ‘NoneType‘ object has no attribute ‘_gdal‘的解决办法
- Unity3d:一个简单的画圈圈手势判断
- TensorFlow 使用 slim 模块搭建复杂网络
- Educoder头歌单总线CPU设计(定长指令周期3级时序)(HUST)谭志虎 华中科技大学计算机组成原理实验计算机硬件系统设计