計算機基礎入門及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.www58058.com/87257

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

相關推薦

  • 硬鏈接與軟鏈接的聯系與區別

    硬鏈接與軟鏈接的聯系與區別     文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。元數據中的inode才是…

    Linux干貨 2016-10-20
  • 馬哥教育網絡班21期-第九周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash m=0 n=0 for i in `awk -F: '{print $NF}'&nb…

    Linux干貨 2016-09-15
  • Keepalive+Nginx高可用配置(主從)

    Keepalived高可用集群 一、Keepalived介紹 Keepalived軟件主要通過VRRP協議實現高可用功能的。VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗余協議)的縮寫,VRRP出現的目的就是為了解決靜態路由單點故障問題,它能夠保證當個別節點宕機時,整個網絡可以不間斷地運行。keepalived除…

    Linux干貨 2016-12-30
  • Linux Services and Security–part1

    一、詳細描述一次加密通訊的過程,結合圖示最佳 以Bob和Alice安全通訊為例: Bob<———>Alice 1. Bob要和Alice安全通信首先要取得對方的公鑰,即對方的證書,并驗證證書的合法性。驗證過程和內容: 1)、用CA的公鑰(雙方已知)解密對方證書中CA的簽名;能解密說明證書來原可靠; 2)、用證書中標記的“簽名算法”來計算證書的相關…

    2017-10-17
  • 馬哥教育網絡班20期+第二周博客作業

    1.Linux上的文件管理類命令 2.bash命令學習總結 3.bash命令實例 4.元數據與時間戳 5.命令別名 6.練習題6~12 1.Linux上的文件管理類命令        Linux上的文件管理類命令可分為查看類、目錄管理類、權…

    Linux干貨 2016-06-19
  • rsyslog日志系統

    一、前言  什么是日志?    日志就是歷史事件,按時間序列將發生的事件予以記錄;日志記錄信息記錄的是事件的發生時間以及事件內容  Linux下記錄日志的系統:    syslog:是CentOS 5.0系統上使用的日志系統,有兩類日志,分別是syslogd、klogd;    …

    Linux干貨 2015-06-15
欧美性久久久久