计算机基础入门及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)
上一篇 2017-09-16 14:53
下一篇 2017-09-16 19:54

相关推荐

  • 2016年8月11号学习博客

    shell脚本编程 shell脚本是包含一些命令或声明,并符合一定格式的文本文件 shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 命令查询过程:别名–>内部变量–>hash–>$PATH ~]#bash -n 检测脚本语法错误 ~]#bash -x 顺…

    Linux干货 2016-08-15
  • 第8天磁盘管理练习—增加SWAP分区

          SWAP交换空间,指在物理内存不够用时,充当虚拟内存使用。在实际操作中,使用1-2G的一个分区并指定分区类型为SWAP,挂载至SWAP来使用。 一、新增分区 fdisk /dev/sda n     #新增加分区 t   &nb…

    Linux干货 2016-07-04
  • 文件系统管理&raid&脚本编程之参数、算数运算练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; (1) ~]# fdisk /dev/sdb Welcome to…

    Linux干货 2016-11-08
  • 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

    Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。 但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢? 答案是需要由用户来为内核指定进程的优先级 大部分进程启动时的优先级是相同…

    Linux干货 2015-02-14
  • Linux文件权限管理-2016-8-04

    Linux文件权限管理 学习大纲 一 关于文件和目录的权限基本概述(rwx); 二 针对文件或目录权限管理的命令: a) 相关命令:chown , chgrp ,chmod chown修改文件属主 和 属组 语法:chown  [OPTION]…  [OWNER][:[GROUP]]  FILE&#8230…

    Linux干货 2016-08-04
  • LVM 逻辑卷管理器-缩小LV容量及快照区的建立

    LVM 逻辑卷管理器-缩小LV容量 将/dev/sdb2分区抽离出来,缩小LV容量 (1)首先查看/dev/sdb2的容量大小 [root@centos6 ~]# df -h /mnt/lvm/ Filesystem        &nbs…

    Linux干货 2016-09-19