第二章 開始編程吧

来源:http://www.cnblogs.com/zfc2201/archive/2017/06/12/6995597.html
-Advertisement-
Play Games

第一節 Python文件類型 源代碼 Python源代碼的文件以“py”為擴展名,由Python程式解釋,不需要編譯 位元組代碼 Python源文件經編譯後生成的擴展名為“pyc”的文件 編譯方法 優化代碼 經過優化的源文件,擴展名為“.pyo” 以上三種均可直接運行 第二節 Python變數 變數的 ...


第一節 Python文件類型

源代碼

  • Python源代碼的文件以“py”為擴展名,由Python程式解釋,不需要編譯

位元組代碼

  • Python源文件經編譯後生成的擴展名為“pyc”的文件
  • 編譯方法

    import py_compile
    py_compile.compile("hello.py")

優化代碼

  • 經過優化的源文件,擴展名為“.pyo”
  • python -O -m py_compile hello.py

以上三種均可直接運行


第二節 Python變數

變數的定義

  • 變數是電腦記憶體中的一塊區域,變數可以存儲規定範圍內的值,而且值可以改變。

變數的命名

  • 變數名有字母、數字、下劃線組成。
  • 數字不能開頭
  • 不可以使用關鍵字
  • a a1 a_ a_1

變數的賦值

  • 是變數聲明和定義的過程

    a = 1
    ld(a)


第三節 運算符與表達式

案例:寫一個自己的四則運算器

#!/usr/bin/python

import sys
running = True

while running:
    try:
        t = int(raw_input())
        p = int(raw_input())
    except EOFError:
        break

    print 'operator + result\n', t + p
    print 'operator - result\n', t - p
    print 'operator * result\n', t * p
    print 'operator / result\n', t / p

Python運算符包括

  • 賦值運算符

    x = 3, y = 'abcde'      #等於
    x += 2                  #加等於
    x -= 2                  #減等於
    x *= 2                  #乘等於
    x /= 2                  #除等於
    x %= 2                  #求餘等於
  • 算術運算符

    x + y                   #加法
    x - y                   #減法
    x * y                   #乘法
    x / y                   #實數除法
    x // y                  #整數除法
    x % y                   #求餘
    x**y                    #求冪
  • 關係運算符

    x < y                   #大於
    x > y                   #小於
    x <= y                  #小於等於
    x >= y                  #大於等於
    x != y                  #不等於
    x == y                  #完全等於
  • 邏輯運算符

    and                     #與
    or                      #或
    not                     #非

表達式

  • 表達式是將不同數據(包括變數、函數)用運算符按一定規則連接起來的一種式子

運算符的優先順序

  • 在常規表達式中,存在著多個運算符,比如:1+2*3-1/2*3/2,那麼就存在著計算優先度的問題
  • 一般的,運算符存在高低級別,在同一個表達式中,高優先順序的運算符:比如:1*2+3*3 = 11 而不是15
  • 對於同級別的運算符,按從左到右處理。例如:8*4/2*3 = 48
  • 運算符優先順序由低到高是:

    Lambda
    邏輯或:or
    邏輯與:and
    邏輯非:not
    成員測試:in      not in
    同一性測試:is      is not
    比較:<   <=  >   >=  !=  ==
    按位或:|
    按位異或:^
    按位與:&
    移位:<<  >>
    加法與減法:+   -
    乘法、除法與取餘:*   /   %
    正負號:+x  -x
    按位翻轉:~x
    指數:**


第四節 數據類型

案例

  • 123"123"一樣嗎
  • () [] {}

數據類型

  • 電腦是用來輔助人們的,在程式設計中也映射了現實世界的分類,以便於抽象的分析。
  • 數字
  • 字元串
  • 列表
  • 元組
  • 字典

數字類型

  • 整型
  • 長整形
  • 浮點型
  • 複數型

數字類型-整數int

  • 整數int表示的範圍-2147483648到2147483647。例如:0,100,-100
  • int的範圍示例:

    num=2147483647
    type(num)       #輸出結果: <type 'int'>

數字類型-長整數long

  • long的範圍很大很大,幾乎可以說任意大的整數均可以存儲。
  • 為了區分普通整數和長整數,需要在整數後加L或小寫l。例如:51856678L, -0x22345L

    num = 11
    type(num)       #輸出結果: <type 'int'>
    num = 9999999999999999999999
    type(num)       #輸出結果: <type 'long'>

數字類型-浮點型float

  • 例如:0.0, 12.0, -18.8, 3e+7
  • 示例:

    num = 0.0
    type(num)       #輸出結果: <type 'float'>
    num = 12
    type(num)       #輸出結果: <type 'int'>
    num = 12.0
    type(num)       #輸出結果: <type 'float'>

數字類型-複數型complex

  • Python對複數提供內嵌支持,這是其他大部分軟體所沒有的
  • 複數舉例: 3.14j, 8.32e-36j
  • 示例:

    >>> num=3.14j
    >>> type(num)
    <type 'complex'>
    >>> num
    3.14j
    >>> print num
    3.14j

字元串String

  • 使用引號定義的一組可以包含數字、字母、符號(非特殊系統符號)的集合。

    Strval='This is a test'
    Strval="This is a test"
    Strval="""This is a test"""
  • 三重引號(docstring)通常用來製作字元串,在面向對象時詳解


第五節 序列

基本概念

  • 列表、元組和字元串都是序列
  • 序列的兩個主要特點是索引操作符和切片操作符。
    • 索引操作符讓我們可以從序列中抓取一個特定項目。
    • 切片操作符讓我們能夠獲取序列的一個切片,即一部分序列。
  • 索引同樣可以是負數,位置是從序列尾開始計算的。
    • 因此,shoplist[-1]表示序列的最後一個元素,而shoplist[-2]抓取序列的倒數第二個項目
  • 切片操作符是序列名後跟一個方括弧,方括弧中有一對可選的數字,並用冒號分割。
    • 註意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的。
    • 切片操作符中的第一個數(冒號之前)表示切片開始的位置,第二個數(冒號之後)表示切片到哪裡結束。如果不指定第一個數,Python就從序列首開始。如果沒有指定第二個數,則Python會停止在序列尾。
    • 註意:返回的序列從開始位置開始,剛好在結束位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外。
      • shoplist[1:3]返回從位置1開始,包括位置2,但是停止在位置3的一個序列切片,因此返回一個含有兩個項目的切片。shoplist[:]返回整個序列的拷貝。你可以用負數做切片。負數用在從序列尾開始計算的位置。例如,shoplist[:-1]會返回除了最後一個項目外包含所有項目的序列切片

序列的基本操作

  • len():求序列的長度
  • +:連接兩個序列
  • *:重覆序列元素
  • in:判斷元素是否在序列中
  • max():返回最大值
  • min():返回最小值
  • cmp(tuple1, tuple2):比較兩個序列值是否相同

元組()

  • 元組和列表十分類似,只不過元組和字元串一樣是不可變的,即你不能修改元組。
    • 元組通過圓括弧中用逗號分割的項目定義。
    • 元組通常用在使語句或用戶定義的函數能夠安全地採用一組值的時候,即被使用的元組的值不會改變。
  • 創建元組
    • 一個空的元組由一對空的圓括弧組成,如:myempty=()
    • 含有單個元素的元組,singleton=(2)
    • 一般的元組

      zoo=('wolf', 'elephant', 'penguin')
      new_zoo=('monkey', 'dolphin', zoo)
  • 元組操作
    • 元組和字元串一樣屬於序列類型,可通過索引和切片操作。
    • 元組值亦不可變


第六節 序列-列表

列表[]

  • list是處理一組有序項目的數據結構,即你可以在一個列表中存儲一個序列的項目。
  • 列表是可變類型的數據。
  • 列表的組成:用[]表示列表,包含了多個以逗號分隔開的數字,或者子串。

    list1=['Simon', 'David', 'Clotho']
    list2=[1,2,3,4,5]
    list3=["str1", "str2", "str3", "str4"]

列表操作

  • 取值
    • 切片和索引
    • list[]
  • 添加
    • list.append()
  • 刪除
    • del(list[])
    • list.remove(list[])
  • 修改
    • list[]=x
  • 查找
    • var in list
  • 示例:

    >>> list1=['jack', 20, 'male']
    >>> list1
    ['jack', 20, 'male']
    >>> list1.append('USA')
    >>> list1
    ['jack', 20, 'male', 'USA']
    >>> list1.remove('USA')
    >>> list1
    ['jack', 20, 'male']
    >>> help(list1.remove)
    >>> list1[1]=22
    >>> list1
    ['jack', 22, 'male']
    >>> 22 in list1
    True

對象與類快速入門

  • 對象和類,更好的理解列表。
  • 對象=屬性+方法
  • 列表是使用對象和類的一個例子
    • 當你使用變數i並給它賦值時候,比如整數5,你可以認為你創建了一個類(類型)int的對象(實例)i。
    • help(int)
  • 類也有方法,即僅僅為類而定義的函數。
    • 僅在該類的對象可以使用這些功能。
    • 例如:
      • Python為list類提供了append方法,這個方法讓你在列表尾添加一個項目。
      • mylist.append('an item')列表mylist中增加字元串。註意,使用點號來使用對象的方法。
  • 類也有變數,僅為類而定義的變數
    • 僅在該類的對象可以使用這些變數/名稱
    • 通過點號使用,例如mylist.field。


第七節 字典

基本概念

  • 字典是Python中唯一的映射類型(哈希表)。
  • 字典對象是可變的,但是字典的鍵必須使用不可變的對象,並且一個字典中可以使用不同類型的鍵值。
  • keys()或者values()返回鍵列表或值列表。
  • items()返回包含鍵值對的元值。
  • 示例:

    >>> dict={'name': 'jack', 'age' : 30, 'gender':'male' }
    >>> dict['name']
    'jack'
    >>> dict['age']
    30
    >>> dict['gender']
    'male'
    >>> dict.keys()
    ['gender', 'age', 'name']
    >>> dict.values()
    ['male', 30, 'jack']
    >>> dict.items()
    [('gender', 'male'), ('age', 30), ('name', 'jack')]

創建字典

  • dict = {}
  • 使用工廠方法dict()

    fdict=dict(['x',1], ['y',2])
  • 內建方法:fromkeys(),字典中的元素具有相同的值,預設為None

    ddict={}.fromkeys(('x','y'), -1)
    #輸出結果:{'x': -1, 'y': -1}

訪問字典中的值

  • 直接使用key訪問:key不存在會報錯,可以使用has_key()或者in和not in判斷,但是has_key方法即將廢棄。
  • 迴圈遍歷:for key in dict1.keys():
  • 使用迭代器:for key in dict1:

更新和刪除

  • 直接用鍵值訪問更新;內建的update()方法可以將整個字典的內容拷貝到另一個字典中。
  • del dict1['a']:刪除字典中鍵值為a的元素
  • dict1.pop('a'):刪除並且返回鍵為'a'的元素
  • dict1.clear():刪除字典所有元素
  • del dict1:刪除整個字典

字典相關的內建函數

  • type(), str(), cmp()(cmp很少用於字典的比較,比較依次是字典的大小、鍵、值)

工廠函數dict()

* 例如:

dict(zip(('x','y'),(1,2)))
dict(x=1,y=2)
#輸出結果:{'x': 1, 'y': 2}
  • 使用字典生成字典比用copy慢,因此這種情況下推薦使用copy()

常用函數

  • len():返回序列的大小
  • hash() : 用於判斷某個對象是否可以做一個字典的鍵,非哈希類型報TypeError錯誤
  • dict.clear(): 刪除字典中的所有元素
  • dict.fromkeys(seq, val=None): 以seq中的元素為鍵創建並返回一個字典,val為制定預設值
  • dict.get(key, default=None): 返回key的value,如果該鍵不存在返回default指定的值
  • dict.has_key(key):判斷字典中是否存在key,建議使用in或not in代替
  • dict.items():返回健值對元組的列表
  • dict.keys():返回字典中鍵的列表
  • dict.iter*(): iteritems(), iterkeys(), itervalues()返回迭代子而不是列表
  • dict.pop(key[,default]):同get(),區別是若key存在,刪除並返回dict[key],若不存在則返回default,未指定值,拋出KeyError異常
  • dict.setdefault(key, default=None):同set(),若key存在則返回其value,若key不存在,則dict[key]=default
  • dict.update(dict2):將dict2中的鍵值對添加到字典dict中,如果有重覆則覆蓋,原字典不存在的條目則添加進來。
  • dict.values():返回字典中所有值的列表


第八節 流程式控制制

if else

  • if語句

    • Python的if語句類似其他語言。if語句包含一個邏輯表達式,使用表達式比較,在比較的結果的基礎上作用出決定。

      if expression:
          statement
    • 註:Python使用縮進作為其語句分組的方法,建議使用4個空格代替縮進。
    • 邏輯值(bool)用來表示諸如:對與錯,真與假,空與非空的概念
    • 邏輯值包含了兩個值:
      • True:表示非空的量(比如:string, tuple, set, dictonary等),所有非零數
      • False:表示0,None,空的量等。
    • 作用:主要用於判讀語句中,用來判斷
      • 一個字元串是否為空的
      • 一個運算結果是否為零
      • 一個表達式是否可用
  • else語句

    • 語法

      if expression:
          statement
      else:
          statement
    • 如果條件表達式if語句解析為0或false值。else語句是一個可選的語句,並最多只能有一個else語句。

  • elif語句

    • 語法

      if expression:
          statement
      elif expression2:
          statement
      elif expression3:
          statement
      else:
          statement
    • elif語句可以讓你檢查多個表達式為真值,並執行一個代碼塊,elif語句是可選的。可以有任意數量的elif。

  • 嵌套的if...elif...else構造

    if expression1:
        statement
        if expression2:
            statement
        else:
            statement
    else:
        statement
  • 使用邏輯運算符and、or、not

    if expression1 and expression2:
        statement
    else:
        statement

for迴圈

  • 迴圈是一個結構,導致一個程式重覆一定次數。

  • 條件迴圈也是如此。當條件變為假,迴圈結束。

  • for迴圈:
    • 在Python for迴圈遍歷序列,如一個列表或一個字元。
  • for迴圈語法:

    for iterating_var in sequence:
        statements
  • 註:如果一個序列包含一個表達式列表,它是第一個執行。
    然後,該序列中的第一項賦值給迭代變數iterating_var。接下來,執行語句塊。列表中的每個項目分配到iterating_var,代碼塊被執行,直到整個序列被耗盡。

  • 註:格式遵循代碼塊縮進原則

  • 例子:

    for letter in 'python':
        print 'Current Letter: ', letter
    
    fruits=['banana', 'apple', 'mango']
    for fruit in fruits:
        print 'Current fruit: ', fruit
  • 迭代序列指數(索引):
    • 遍歷每個項目的另一種方法是由序列本身的偏移指數(索引)

    • 例子

      fruits=['banana', 'apple', 'mango']
      for index in range(len(fruits)):
          print 'Current fruit: ', fruits[index]
    • 註:‘迭代’,指重覆執行一個指令。

range

  • 迴圈結構是用於迭代多個項的for語句,迭代形式可以迴圈序列的所有成員。

  • range(i,j[,步進值])
    • 如果所創建的對象為整數,可以用range
    • i為初始數值
    • j為終止數值,但不包括在範圍內,步進值為可選參數,不選的話預設是1
    • i不選擇的話預設為0
  • 例子:

    sum = 0
    for num in range(1, 101, 1):
        sum += num
    print sum

遍歷字典

    dic={'name': 'jack', 'age': 20, 'gender':'male'}
    for key in dic:
        val = dic[key]
        print key,val

    for key,val in dic.items():
        print key, val

for迴圈控制

    for x in range(10):
        if x == 1:
            pass
        if x == 2:
            continue
        if x == 5:
            break;
    else
        print 'end'

while迴圈

  • while迴圈,直到表達式變為假。表達的是一個邏輯表達式,必須返回一個true或false值

  • 語法:

    while expression:
        statement
  • 註:遵循代碼塊縮進原則

    while x != 'q':
        x = raw_input('please input something, q for quit: ')
        if not x:
            break
    else:
        print 'end'

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背水一戰 Windows 10 之 控制項(集合類 - ItemsControl): 自定義 ItemsControl(自定義 GirdView 使其每個 item 占用不同大小的空間), 自定義 ContentPresenter 實現類似 GridViewItemPresenter 和 ListVi... ...
  • 前幾天需要在UWP中實現吸頂,就在網上找了一些文章: 吸頂大法 -- UWP中的工具欄吸頂的實現方式之一 在UWP中頁面滑動導航欄置頂 發現前人的實現方式大多是控制ListViewBase的Header變換高度,或者建立一個ScrollViewer在裡面放置ListViewBase。經過測試,這兩種 ...
  • 很多人在寫代碼的時候關於路徑這個問題很頭疼,其實路徑是很簡單的,只是沒人幫我們點投!初次學習程式的人,我相信肯定會遇到和我一樣的問題,比如說,“/”和“~”引用路勁的區別,接下來看吧,這篇文章肯定會將你點透的,看完這篇文章你一定會有一種山重水複疑無路,柳暗花明又一村的感覺! [註:]博主微信:jkx ...
  • 題目鏈接 Problem Description Given the finite multi-set A of n pairs of integers, an another finite multi-set B of m triples of integers, we define the pr ...
  • 本節介紹正則表達式相關的Java API,討論在Java中利用正則表達式實現文本的切分、驗證、查找和替換,對於替換,我們演示一個簡單的模板引擎 ...
  • 裝飾器前奏1 定義:本質是函數,用來裝飾其它函數,就是為其他函數來添加附加功能 原則:1、不能修改被修飾函數的源代碼以及調用方式 裝飾器前奏2 實現裝飾器只是儲備: 1、函數即”變數“ 2、高階函數 3、嵌套函數 高階函數+嵌套函數=》裝飾器 裝飾器前奏3 裝飾器前奏4 ...
  • [TOC] 詞性標註器 之後的很多工作都需要標註完的辭彙。nltk自帶英文標註器 標註語料庫 表示已經標註的標識符: 讀取已經標註的語料庫 nltk語料庫ue肚臍提供了統一介面,可以不必理會不同的文件格式。格式: 。參數可以指定categories和fields 名詞、動詞、形容詞等 這裡以名詞為例 ...
  • MyBatis緩存 我們知道,頻繁的資料庫操作是非常耗費性能的(主要是因為對於DB而言,數據是持久化在磁碟中的,因此查詢操作需要通過IO,IO操作速度相比記憶體操作速度慢了好幾個量級),尤其是對於一些相同的查詢語句,完全可以把查詢結果存儲起來,下次查詢同樣的內容的時候直接從記憶體中獲取數據即可,這樣在某 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...