- 继续完成本周遗留的任务: 完成函数功能,并且把函数的理解写下心得总结。--4.9
- 继续阅读Python指南数据结构章节,用脑图反馈你的输出记录。--4.10
- 按下面的要求重新修改代码:--4.11-4.14 a. 随机生成5个1~100内的数字,把它们放到列表(list)里 b. 然后把这个list里的元素从小到大进行排序(可以搜索一下冒泡排序),用一个独立的排序函数来排序 c. 根据排序,得出列表里最大的那个数,作为猜数字的答案 截止时间:04月14日 周日 18:00
写一个程序,它将生成一个从一到一百的随机整数。在命令行运行该程序,然后它会提示你输入一个猜测值。然后你随便输入一个数字,它会依据你的输入的猜测值,告诉你猜测值是否过低或者过高。一旦你猜正确,它会输出祝贺你猜测成功的字符串。
关键字:
- 生成一个从一到一百的随机整数
- 提示你输入一个猜测值
- 随便输入一个数字
- 过低或者过高
- 它会输出祝贺你猜测成功的字符串。
猜数字程序思路:
- 先定义的一个整数变量,变量的范围是1-100
- 变量随机生成一个整数
- 提示用户输入所猜数值
- 获取数值
- 判断数值类型,若不是整数,提示重新输入整数
- 用户输入的数与生成数比大小
- 输出结果,若大,输出大。若小,输出小,程序进入循环步骤“3-7”
- 如果相等,输出猜对了,程序结束。
- 5.1. 关于列表更多的内容
-
list.append(x)list.extend(L)list.insert(i, x)list.remove(x)list.pop([i])list.clear()list.index(x)list.sort()list.reverse()list.copy()
- 5.1.1. 把列表当作堆栈使用
-
- 堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进append()先出pop())
- 5.1.2. 把列表当作队列使用
-
- 队列作为特定的数据结构,最先进入的元素最先释放(先进先出)--使用
collections.deque
- 队列作为特定的数据结构,最先进入的元素最先释放(先进先出)--使用
- 5.1.3. 列表推导式
-
- 列表推导式由包含一个表达式的括号组成,表达式后面跟随一个 for 子句,之后可以有零或多个 for 或 if 子句。结果是一个列表,由表达式依据其后面的 for 和 if 子句上下文计算而来的结果构成。
-
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
-
- 如果想要得到一个元组(例如,上面例子中的 (x, y)),必须要加上括号:
- 5.1.4. 嵌套的列表推导式
- 5.2. del 语句
-
- 从列表中按给定的索引而不是值来删除一个子项: del 语句.
- 5.3. 元组和序列
-
- 元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可以有或没有括号,不过经常括号都是必须的
-
- 能给元组的一个独立的元素赋值(尽管你可以通过联接和切割来模拟)。
-
- 元组就像字符串, 不可变的。
- 5.4. 集合
-
- 大括号或 set() 函数可以用来创建集合
-
- 集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b # letters in either a or b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # letters in both a and b
{'a', 'c'}
>>> a ^ b # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}
- 5.5. 字典
-
- dict() 构造函数可以直接从 key-value 对中创建字典:
-
- 字典推导式可以从任意的键值表达式中创建字典:
-
- 如果关键字都是简单的字符串,有时通过关键字参数指定 key-value 对更为方便
- 5.6. 循环技巧
- 5.7. 深入条件控制
-
- 比较操作符 in 和 not in 审核值是否在一个区间之内。操作符 is 和 is not 比较两个对象是否相同;
-
- not 具有最高的优先级, or 优先级最低
- 5.8. 比较序列和其它类型
-
- 比较操作按 字典序 进行:首先比较前两个元素,如果不同,就决定了比较的结果;如果相同,就比较后两个元素,依此类推,直到所有序列都完成比较。如果两个元素本身就是同样类 型的序列,就递归字典序比较。如果两个序列的所有子项都相等,就认为序列相等。如果一个序列是另一个序列的初始子序列,较短的一个序列就小于另一个。字符 串的字典序按照单字符的 ASCII 顺序。
(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
- break
- continue
- pass
- 4.1 if语句
-
- if else/if elif else
- 4.2 for语句
- 4.3 range()函数
-
- range(3,10,2)"2"为步数,不能直接打印print(range(1,10))--使用list(range(5))
- 4.4 break 和continue,以及循环中的else语句
-
- break 循环被 break 中止的情况下不会执行。
-
- continue 表示循环继续执行下一次迭代
- 4.5. pass 语句 --啥也不做
- 4.6. 定义函数
-
- 关键字 def 引入了一个函数 定义。在其后必须跟有函数名和包括形式参数的圆括号。函数体语句从下一行开始,必须是缩进的。
-
- return 语句从函数中返回一个值,不带表达式的 return 返回 None。
- 4.7. 深入 Python 函数定义
- 4.7.1. 默认参数值
-
- 默认值只被赋值一次。
- 4.7.2. 关键字参数
-
- def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue')--"voltage"位置参数,state='a stiff'关键字参数。
-
- 接受一个必选参数 (voltage) 以及三个可选参数 (state, action, 和 type)。
-
- 关键字的参数必须跟随在位置参数的后面。
-
**name的参数时,它接收一个字典
-
*name的形式参数,它接收一个元组
- 4.7.3. 可变参数列表
-
def concat(*args, sep="/"):
-
- 可变 参数是参数列表中的最后一个,因为它们将把所有的剩余输入参数传递给函数。任何出现在
*args后的参数是关键字参数,这意味着,他们只能被用作关键字,而不是位置参数:
- 可变 参数是参数列表中的最后一个,因为它们将把所有的剩余输入参数传递给函数。任何出现在
- 4.7.4. 参数列表的分拆
-
- 当你要传递的参数已经是一个列表,但要调用的函数却接受分开一个个的参数值。这时候你要把已有的列表拆开来。例如内建函数 range() 需要要独立的 start,stop 参数。你可以在调用函数时加一个 * 操作符来自动把参数列表拆开:
-
- 以同样的方式,可以使用 ** 操作符分拆关键字参数为字典:
- 4.7.5. Lambda 形式
-
- lambda a, b: a+b
- 4.7.6. 文档字符串
-
- 如果文档字符串有多行,第二行应该空出来,与接下来的详细描述明确分隔。接下来的文档应该有一或多段描述对象的调用约定、边界效应等。
-
- python 的解释器不会从多行的文档字符串中去除缩进,所以必要的时候应当自己清除缩进。
- 4.7.7. 函数注解
-
- 参数注解(Parameter annotations)是定义在参数名称的冒号后面,紧随着一个用来表示注解的值得表达式。返回注释(Return annotations)是定义在一个 -> 后面,紧随着一个表达式,在冒号与 -> 之间。
- 4.8. 插曲:编码风格
-
- 使用 4 空格缩进,而非 TAB
-
- 折行以确保其不会超过 79 个字符
-
- 可能的话,注释独占一行
-
- 把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格:a = f(1, 2) + g(3, 4)
- 3.12 字符
-
'''...''',"""..."""进行标示字符串
-
n标示转义
-
- print() 函数生成可读性更好的输出, 它会省去引号并且打印出转义后的特殊字符
-
- 如果你前面带有 \ 的字符被当作特殊字符,你可以使用 原始字符串,方法是在第一个引号前面加上一个 r:
-
-
- 操作符连接, * 表示重复:
-
-
- 相邻的两个字符串文本自动连接在一起,不能用于字符串表达式
-
- 支持索引和切片
-
- 切片长度就是两个索引之差。例如,word[1:3] 是 2 。正0,倒 -1。
- 3.12 列表
-
- 列表可以被索引和切片
-
squares = [1, 4, 9, 16, 25]
-
- 列表是 可变的,可以使用 append() 方法在列表的末尾添加新的元素:
-
- 也可以对切片赋值,此操作可以改变列表的尺寸,或清空它:
- 3.2. 编程的第一步
-
- 了解代码结构
- 1.什么是脚本?
- 2.python -c command [arg] ... 不生效?
- 介绍python是一门解释型语言和扩展性
- 2.1 Python 解释器
'source ~/.bash_profile'配置环境变量 - python / ipython
- quit() 退出
- 2.1.1. 参数传递
-
- import sys
- 2.1.2. 交互模式
- 我们称解释器工作于 交互模式。这种模式下它根据主提示符来执行,主提示符通常标识为三个大于号(>>>);继续的部分被称为 从属提示符,由三个点标识(...)
- 2.2. 解释器及其环境
- 2.2.1. 源程序编码
# -*- coding: encoding -*-
- Python 简介
-
- 从属提示符表示你需要在最后多输入一个空行,解释器才能知道这是一个多行命令的结束。
-
- Python 中的注释以 # 字符起始,直至实际的行尾,文本字符串中的 # 字符仅仅表示 #
- 3.1. 将 Python 当做计算器
- 3.1.1. 数字
-
- 运算符 +,-,* 和 / 与其它语言一样(例如:Pascal 或 C);括号 (()) 用于分组。
-
- 除法(/)永远返回一个浮点数。 floor 除法 -- // ;余数-- %;** 运算符计算幂乘方;
-
- 等号( '=' )用于给变量赋值,变量在使用前必须 “定义”(赋值)。
-
- 交互模式中,最近一个表达式的值赋给变量 _
-
- int 整数型,浮点型float。
写一个程序的时候不可能一步到位,先分解任务,实现最小单位,一步一步的来,造一辆车不是先想怎么怎么让他跑起来,而是先搭建最小的元素,做一个轮子,搭建起一个框架,再想怎么让它跑起来,在这个过程中学会提问,将问题变形,不断思考解决问题的方式,并验证,在这个过程中,熟悉一个程序的语法和规则,从简单到复杂,再到简单,建立简单移动的命名方式。在这本书里,作者不仅教了怎么做一个游戏,更重要的是怎么思考。从做一个方块开始,引用存储区来存储数据,到运用背景色涂黑来实现移动,怎么缩短代码行数来引入循环,来实现下移这个过程,引用重复程序,进行复用来简化代码,测试程序,修正错误,找出问题的原因,为了让程序可读性更强,引入了中文命名,避免为了短而忽略可读性,理解操作是怎么回事,通过装置操控存储区,了解计算的本质,将问题转化,引用“输入”,目标和手段。
- 第八章
- 进行转化成计算机明白的话
- 从计算机的外部获取信息时还是使用存储区
- 第九章
- 调整速度时,不仅有修改移动距离的方法,还有修改移动频率的方法
- 使用除法时,小数点以下会直接舍去
- 有条件运行和便于使用的“如果”
- 之前所谓的条件是“计算的一种”
- 第十章
- 最后想到两种以上的方法再编程
- 或 用+连接
- 且 用*连接
- 从结果开始考虑
- 当需要用大量的存储区时,需要计算编号,这时只能使用指定的编号的方法
- 第11章
- 针对局部程序的“输入”这一新功能
- 第12章
- 相对位置
- 一点一点进行追加
- 第13章
- 运用表格,缩短表格
- 第14章
- 不断分解问题,将问题变形
- 分解为最小目标
- 学习功能、缩短程序、编写易懂的代码
- 准备多个选项,进行对比、选择
1.第6⃣️章
- 要让图像运动起来,就要先让他消除(涂上同样的背景色),再让他出现
- 局部程序与外部程序的储存区编号不要重复
- 关闭调控的功能和调控功能??????不明白 2.第7⃣️章
- 局部程序内部创建的内容,只能在局部程序内部使用。
- 局部程序外部创建的内容,只能在局部程序外部使用。
- 如果局部程序不同,即使名字相同,存储区编号也不同。
- 循环内部创建的内容,循环外部无法看到。
- 使用命名存储区减少对注释的依赖
1.第一章
- 思考怎么入手
- 第二章
- 画面中由像素组成
- 第三章
- 存储区可以替换成它保存的数字。
- 算式中用括号来改变计算顺序
- 第四章
- 程序不一定越短越好
- 有时循环可以进行内外对调
- 写注释 #
- 第五章
- 使用局部程序可以通过引用来进行多次利用同一行
- 1969unix,贝尔实验室
- 1973,C语言重写
- GNU,自由开放的操作系统--GCC,开源,自由修改使用
- GPL授权,通用公共许可证,防止专利软件,自由软件
- 1991,芬兰
- Ubuntu 2004.9 最为流行的桌面Linux发行版
- RedHat,使用最广,商业
- centOS,免费
- 性能稳定,安全性高,多人多任务,资源耗费低
- 专业软件支持不够,厂商支持不够,标准化不足
- centOS,免费
- pwd 当前目录
- ls list
- .. 上层目录
- . 当前目录
-
- ~
- /home
- /bin
- / media
- /etc 系统配置文件
- /tmp 临时文件
- /boot 系统内核和开机必要文件
- /dev 系统所有的设备文件
- /usr
- /lost+found
- /var/srv 用户数据
- /proc
- /lib
- 不超过255
- 区分大小写
- ls -a -l /路径 -ld
- 相对路径
- 绝对路径 /
- cp 复制
- mv 移动
- rm 删除 -f 直接删除 -r 递归删除 -i 交互式的
- cat 查看文件 -b
- less 分页显示 n next f
- p 粘贴
- u 撤销最近操作
- touch 创建新文档
- /text 查找
- 创建自己的仓库
- 修改并提交
- 删除仓库
- 回退版本
- 命令行clone文件到本地
-
- git clone
-
- 编辑器修改
-
- git status s - git add .
-
- git commit -m '记录'
-
- git push
-
- git log
-
- git reset --hard '版本号'
-
- git reflog
-
- git reset --hard '未来版本号'
-
- vi 文件名
-
- s 插入文件
-
- :w
-
- :q :wq
-
- git checkout bug
-
- git merge
-
- mkdir
使用回顾
- fork 分叉成自己的
- clone 克隆一个项目
- commmit to master 提交内容
- roll back to this commit 版本回退
- pull 跟新
- #标题
- 1.列表
- 2 列表
- 链接
- 斜体
- 粗体
- 'hello world!'