计算机基础入门及Pyhton基础

编程基础

计算机基础

  • 程序(program识别并执行的指令
  • 计算机是执行程序的机器
  • 现代计算机
    • 艾伦·麦席森·图灵奠定了现在计算机的逻辑工作方式的基础
    • 冯·诺依曼提出计算机应该有五大部件组成:输入/输出设备、运算器、控制器、输出设备。这是现代计算机基本框架。

语言基础

  • 计算机语言:与计算机之间交互的语言
  • 机器语言:一定位数的二进制代码成为机器指令,指令集合则称为机器语言 – 汇编语言:就是用一些便于记忆和识别的符号带起机器指令,通过汇编程序转换为机器指令后再交给机器执行。
  • 低级语言:指面向机器的语言,不同的机器不能执行,例如汇编语言和机器语言
  • 高级语言:指更接近自然语言和数学语言的计算机语言,高级语言首先要写好源代码,再通过编译程序转换为机器指令来执行,最早的高级语言是1954年IBM公司发表的fortran语言。
  • 高级语言更适合人类使用和理解,而低级语言更适合机器理解,高级语言要最终让机器执行,一是通过编译器编译成为机器可以执行的指令,而是通过解释器转换成字节码(Bytecode)在虚拟机上运行。
  • 高级语言的分类
    • 非结构化语言 有编号或标签、goto,子程序可以有多个入口出口 有分支循环
    • 结构化语言 任何基本机构只允许一个出口和一个入海口 有顺序、分支、循环,废弃了goto
    • 面向对象语言 更加接近人类认识世界的方式,将事物抽象为对象将对象间的关系抽象类和继承 封装、集成、多态
    • 函数式语言 将编程范式在数学中的应用,应用带程序中
  • Python的语言类型 Python是强类型动态语言
    - 静态编译语言
        一旦声明变量类型,变类型不可改变,编译时需要检查
    - 动态编译语言
        不用生变量类型,随时可以改变变量类型,很难推断变量类型
    - 强类型语言
        不同类型之间操作,必须提前强制转化为同一类型
    - 弱类型语言
        不同类型之间可以操作,自动隐式转换

程序

  • 程序
    • 算法+数据结构=程序
    • 数据是程序的核心
    • 数据结构是计算机中数据的类型和组织方式
    • 算法是数据的处理方式
  • 难点
    • 找不到数据的规律
    • 找不到合适的处理方法
    • 无法将规律转换为数据结构,将方法转换为算法
    • 无法将思路转换成程序结构
    • 没有排错(debug)能力

Python解释器

  • 官方的Cpython C语言写的解释器
  • Ipyhton 升级的、有交互的Cpython
  • Pypy pyhton编写的解释器,拥有JIT(just in time)技术,动态编写python代码
  • jython 将python代码转换成Java字节码,运行在java虚拟机上
  • Ironpython 运行在.net平台的解释器,将pyhton代码转换为.net字节码

Python基础语法

  • 注释 — #标注的文本
  • 数字
    • 整数:不区分long和int,只有long;
      • 进制数 0xz(十六进制) 0b10(二进制) 0o10(八进制)
      • 布尔值(Bool),共两个值true和false
    • 浮点数:由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,例如:1.34 0.12 -3.1 1.46e9=1.36*10^9
    • 复数:在python’中表示为a+bj,就是特定的表示,a和b是数字。
  • 字符串
    • 引用的字符序列
    • 单双三引号应用的字符序列可以跨行可以在其中使用任意引号
    • 在字符串前面家上r或R则表示字符串不做特殊处理
  • 转义序列
    • \n 换行
    • \t tab键
    • \ 转义斜杠
    • ‘(“) 转义引号
    • \r 转义R,原先使用R则表示使用真实字符
  • 缩进 Python采用缩进来表示层次关系,默认为缩进四个空格
  • 续行 在行末是用符号\ 如果使用括号则认为括号内的才是一个整体
  • 标识符
1. 只能表示一个值
2. 只能使用字母、下划线和数字
3. 只能用字母和下划线开头
4. 不能是python关键字
5. 区分大小写
6. 不能随便使用下划线开头的表示符,不能使用有歧义的单词,不允许使用中文
  • 常量 赋值后不能改变值的标识符,python无法定义常量
  • 字面常量 一个单独的量,如:12 “abc”
  • 变量 赋值后只可以改变的表示符

运算符

  • 算术运算符
+ 
- 
* 
/ 自然除,结果是浮点数
// 整除结果是整数
** 2**3 表示2的三次方
%  取模,返回除法的余数
  • 位运算符
运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a| b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
  • 比较运算符
运算符 描述 实例
== 等于 – 比较对象是否相等 (a == b) 返回 False。
!= 不等于 – 比较两个对象是否不相等 (a != b) 返回 true.
<> 不等于 – 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。
> 大于 – 返回x是否大于y (a > b) 返回 False。
< 小于 – 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 true。
>= 大于等于 – 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 – 返回x是否小于等于y。 (a <= b) 返回 true。
  • 赋值运算符
运算符 描述 实例
= 简单的赋值运算符 = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c – a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 //= a 等效于 c = c // a
  • 逻辑运算符
运算符 逻辑表达式 描述 实例
and x and y 布尔”与” – 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔”或” – 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔”非” – 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False
```
 简单来说
And:与运算。只有同为真时才为真,近似于乘法。
Or:或运算。只有同为假时才为假,近似于加法。
Xor:异或运算。相同为假,不同为真。
```
  • 成员运算符
运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
  • 身份运算符
运算符 描述 实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
  • 运算符优先级
运算符 描述
** 指数 (最高优先级)
~ + – 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ – 加法减法
>> << 右移,左移运算符
& 位 ‘AND’
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符

注意:算数运算符–>位运算符–>身份运算符–>成员运算符–>逻辑运算符

  • 表达式 是数字、符号、括号、变量等的组合
    • 算数表达式
    • 逻辑表达式
    • 赋值表达式
  • 程序控制
    • 顺序 按照顺序一步一步执行
    • 分支 按条件判断,当满足什么条件式做相对应的操作
    • 循环 条件满足就反复执行,不满足就结束执行
  • 单分支结构
    • if if condition(条件): 代码块(当满足上述条件执行什么操作) 例如:
    if n>1:
                print(n)
    • 真值表
对象/常量 值(value)
1 2
3 3
“” false
“string” true
0 false
>=1 ture
<=-1 true
()空元组 false
[]空列表 false
{}空字典 false
none false
- if语句
if...else...

```
if condition1:  
    代码块(满足上面的条件要执行的操作)代码块)
else:
    代码块(不满足else之前的条件要执行的操作)
```
  • 分支嵌套
    • if…elif…else语句 例如:
score = 80 
if score<0: 
   print('wrong') 
else: 
   if score==0: 
     print('egg') 
   elif score <= 100: 
     print('right') 
   else: 
     print('too big')
  • 循环语句while和for
    • while语句
    while condition 
        block
    当条件满足即conditionTrue,进入循环体执行block
    例子:
        flag=10
    while flag
        print(flag)
        flag-=1
    • for语句
    for element in iteratable:
        block
    当可迭代(或者称为循环)对象中有元素可以迭代进入循环体,执行block
    for i in range(10):
        print(i)
    • 循环continue语句:中断当前循环的当次执行,继续下一次循环
    for i in range(10)
        if i%5==0:
            continue
        print(i)
    • 循环break语句:中断当前循环
    for i in range(10)
        print(i)
        if i%5==4:
            break
    • 循环else子句:当for或者while循环正常循环结束就执行else子句,如果是break打断循环则不执行
    while condition
        block
    else
        block
    或者
    for element in iteratable
        block
    else
        block

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87257

(1)
KX_ilKX_il
上一篇 2017-09-16 14:53
下一篇 2017-09-16 19:54

相关推荐

  • linux用户权限管理

       在linux文件系统中使用ls -l命令可以查看文件的属性,但是我们明白其中属性各自代表的意思吗?下面我们就来看一看,这其中的奥义。。。 文件属性 使用ls命令查看文件,可以发现列表分为几个部分,各自所代表的意义如图所示: 文件属性操作     chown 设置文件的所有者  &nb…

    Linux干货 2016-08-04
  • Linux 文本编辑器三剑客之 sed

    参考手册: http://www.gnu.org/software/sed/manual/sed.html 转载请注明:马哥教育!!

    Linux干货 2017-01-12
  • 博客

       这是我的第一篇博客!   平时学习中,总会遇到或大或小的问题,以及一些新的感悟,在当时能够十分清晰记得,但过一些时日,便发现又忘记了。以前十分明白的东西,又变得有些模糊,甚至完全忘记。因此特别需要记录下来,方便日后的查阅或分享给其他遇到类似问题的朋友。    如果以后忘记的某些知识,这时候,翻开以往博客…

    Linux干货 2017-07-11
  • 马哥教育网络班22期+第9周课程练习

    week9: 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin); 分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # SHELL1="/sbin/nologin" declare -i sum1=sum2=0 for&nb…

    Linux干货 2016-10-17
  • 程序包管理

    程序包 linux的程序包主要分为两类;二进制可执行安装包和源代码程序文件包     二进制应用程序的组成部分:     二进制文件、库文件、配置文件、帮助文件   查看二进制程序所依赖的库文件:     ldd&nbs…

    Linux干货 2016-05-30