支持html5的网站,江苏省通信建设交易中心网站,咨询公司属于什么行业,wordpress学校机构1、计算机历史
计算机使用高低电压的两种状态来描述信息。计算机可以理解的只有二进制数据即010100011....#xff0c;1个比特位可以表示的状态只有2种#xff0c;n个比特位可以表示的状态有2的n次方种。
所以如果想要描述天气状态#xff1a;天晴、下雨、刮风、下雪、霜冻1个比特位可以表示的状态只有2种n个比特位可以表示的状态有2的n次方种。
所以如果想要描述天气状态天晴、下雨、刮风、下雪、霜冻则需要使用3个比特位。
2、编程语言历史
计算机只能理解二进制数据二进制数据中蕴含了很多指令、操作、数据计算机通过cpu直接运行二进制代码执行不同的功能二进制代码被称为机器语言。
但是机器语言二进制代码对于人类而言可读性太差、编写太困难所以人类需要使用适合自身的语言来编程以操作计算机。
一开始人类将机器语言中的代码进行分类、标记把蕴含操作行为、蕴含数据的二进制代码使用英语单词标记形成了汇编语言。汇编语言的模式是操作行为被操作数。
操作行为和被操作数都使用英语单词代替了一串010101的二进制代码这样人类只需要编写汇编语言再将汇编语言通过之前的映射关系转换成二进制即可。
通过汇编语言人类即可以方便的编写代码又可以通过转化得到对应的二进制代码让计算机运行。
但是汇编语言依然可读性较差、编写也不是非常的方便要实现一个简单的功能需要非常多的汇编代码代码冗余性依然很高。
于是人类模仿汇编和二进制的对应关系将高级语言和汇编又对应起来这时候人类就只需要编写高级语言再通过编译器将高级语言转换成汇编语言或者直接转换成二进制代码。
高级语言的代码非常接近人类的英语所以使用起来很方便。
因语法规则、语义的不同高级语言分为很多种如pythonjava、c、c、JavaScriptruby等等。
3、编译型高级语言/解释性高级语言
高级语言接近人类英语编写的代码可读性也很强但是计算机是无法直接理解和执行源代码的因为计算机只认识二进制代码所以不论是哪一种高级语言都需要将源代码转换成二进制代码后才能被计算机执行。
在转换过程中有2种不同的情况
1、编译型
编译型高级语言在程序执行之前需要提前将源代码通过编译器转换成目标文件二进制代码然后计算机直接执行目标文件。
优点计算机执行效率高、速度快
缺点
如果程序需要修改必须修改源代码并再次编译修改不方便
一旦编译完成目标文件就只能在当前操作系统和cpu架构上运行无法在其他平台使用除非重新编译
举例c、c、c#
2、解释型
解释型高级语言由解释器实时读取源代码并编译成二级制代码交由计算机执行。
优点
程序的修改直接操作源文件即可修改方便
只要计算机安装了对应平台的解释器源代码就可以被执行即一份源代码可以在不同平台运行平台兼容性好
缺点
因为需要实时编译所以运行效率低、速度较慢
需要一个匹配版本和平台的解释器与源代码共同工作
举例python、java、ruby
4、python版本
python有2个相互不兼容的大版本版本2最高是2.7版本3截止20180603最高是3.6.5。版本2官方宣布将会维护到2020年建议现在选择版本3编码。
5、python解释器
解释器也是一种程序功能是将python源代码翻译成机器语言。解释器可以使用多种语言编写有如下几种
cpython官方发布的解释器使用c语言编写
ipython在cpython基础上套了一个壳提高用户交互性
pypy据说使用jit技术动态实时编译使得代码运行速度更快但是目前暂不成熟
jpython和icronpython使用java和.net编写一般不使用
6、python文件执行
两种方式执行python文件一种是启动解释器并将python源文件作为参数解释器读取文件中代码。一种是启动解释器在交互环境编写代码执行。
7、变量
1、变量存在的原因
用于保存阶段性计算的结果同时变量用于描述程序中的一些数据良好的变量命名和使用会增加代码的可读性。
2、变量命名规范
变量名可以是数字、字母、下划线的任意组合注意不可使用除了下划线之外的特殊字符
变量名开头不能是数字
变量名不能和python预定义的关键字重名
注意python竟然可以使用中文作为变量名
3、变量定义语法
age 26
定义一个变量它的名字是age此变量指向内存中的一个对象此对象值是26
8、常量
常量的命名规范和变量一样不过常量的命名约定俗成的是全大写。
常量用于保存基本不变的数据python没有提供类似c语言的const关键字来强制规定常量的不可变性所以python中的常量是约定俗成的不可变。
9、python安装
www.python.org官网下载最新版本3.6.5根据电脑配置选择32或者64位安装的时候选择add to path并自定义安装位置和其他高级选项安装完成可以直接shell进入python解释器。
10、输入/输出
python中通过input函数提供shell输入通过print函数提供shell打印。
input函数会阻塞程序执行直到获取shell输入值
11、注释
不论哪一种高级语言我们在编码的时候都是将脑海中的思路、信息、步骤简化成实际的代码。将大脑中的信息转换成实际代码的时候会有很大的信息量丢失即代码所表达的信息量是很少的。
所以单独的代码无法还原编码时的全部信息量此时我们就需要使用注释来弥补代码缺失的信息量。优秀的注释代码可以提供很高的可读性也方便后续代码使用和维护。
注释有几个需要遵守的规范
1、注释的内容应该保持与代码的强一致性注释应该精简、准确的表达代码的含义、编码背景等
2、可以使用中文或者英文
3、注意注释的使用量在适当且必要的地方使用注释如重要流程节点、复杂代码块解释等
12、数据类型
计算机只认识二进制对于计算机而言数据没有类别全部都是010101010...
但是对于人类而言人类世界中的数据、信息是五花八门的我们编码的过程其实就是在计算机世界中对现实世界进行建模的过程所以我们需要对人类世界的数据划分类别。
基础的数据类型有数字整数小数、字符串、布尔值
我们使用int来表示整数类型、float表示小数类型
我们使用str表示字符串类型
我们使用bool表示布尔值类型
数字类型用于计算、字符串类型用于表示信息、布尔类型用于判断
13、字符串格式化输出
所谓格式化输出其实就是在编码过程中定义展示模板在模板中通过占位符代表后续有对应数据填充在此。
占位符
%d 整数类型
%f 小数类型
%s 字符串类型%s是万能匹配即任意数据类型都可以填充到%s占位符中
%r 原格式将数据的原始格式存放到%r占位符中如字符串的原格式就包含引号
14、运算符
算数运算符- * / 注意/ 除法运算符得到的商可以是小数即5/2 2.5
// % 地板除得到的结果是商的整数部分如5//2 2。取模得到的结果是未整除的结果如5%2 1对2取模可以判断奇偶。
** 幂运算5**2 25
比较运算符! 表示的是两边对象的值是否相等python3中使用!表示不等于不再使用
赋值运算符赋值- * /
// % **
在原有值的基础上做运算并赋值给原有变量如a 5, a % 2此时a 1
逻辑运算符
and or no 逻辑判断会使用短路判断所以使用and的时候概率小的放前面。使用or的时候概率大的放前面。
15、流程控制-分支
程序默认是自上而下没有分支的执行代码。很多时候我们需要通过判断程序运行中间的某一种状态、情况、值来决策程序下一步该执行哪些代码。
通过分支提供多条执行路线分支有双分支、多分支。
之所以可以划分多种分支是因为可能出现多种不同条件而这些条件的概率和应该为1。
分支需要特别注意条件判断的逻辑性多种条件只会执行其中一个条件条件之间是相互对立的。
通过if elif elif else来提供多分支通过条件的布尔值结果判断条件是否成立。
注意条件判断应该把概率大的放在前面概率小的放后面对于无法明确具体判断条件的可以放在else统一匹配。另外判断input的返回值的时候注意input返回值一定是字符串。
16、流程控制-循环-while
while关键字后面的语义是判断条件是否成立成立的话执行一次循环体然后再次判断条件是否成立。不成立的话跳过此循环体执行后续代码。
因为循环代码有导致死循环的风险所以任何一个循环定义都需要预先设计循环跳出条件。循环可以在循环体中通过break跳出或者通过while条件判断不成立跳过。当然也可以在循环体中exit
通过continue可以提前结束当前循环直接开始下一次的循环while判断注意continue应用于跳过后续本应该执行的代码。
因为continue可以跳过后续本应该执行的代码而后续执行代码中可能包含循环跳出的设置如i 1。所以continue的使用会有死循环风险需要单独处理循环跳出问题。
17、while...else...
据说使用while后面的else如果while正常执行完毕则执行else。如果while没有正常执行完毕如被break打断则不会执行else。可以使用else是否执行来判断循环是否正常执行完毕我觉得这并不合理考虑下述代码
1 i 11
2 while i 10:3 print(i is:, i)4 i 1
5 if i 3:6 break
7 else:8 print(循环正常执行完毕)9
10 #循环没有正常执行完毕实际上循环根本就没执行else也被执行了。所以else被用于判断
11 #while是否正常执行我觉得并不合理。
18、while的使用
思考如下练习
#使用while,完成以下图形的输出
#
#*#* *#* * *#* * * *#* * * * *#* * * *#* * *#* *#*
1 star 1
2 most_star 5
3 while star most_star:4 print(* *star)5 if star most_star:6 while most_star 0:7 most_star - 1
8 print(* *most_star)9 break
10 star 1
11
12 row 1
13 most_row 5
14 while row most_row:15 print(* *row)16 row 1
17 row most_row - 1
18 while row 0:19 print(* *row)20 row - 1
while循环只能打印一个方向如果是两个相反的方向需要两个while。两个while可以写成第二个while放在第一个while的末尾。