python學習筆記02

二進制

二進制是計算技術中廣泛采用的一種數(shù)制胡岔。二進制數(shù)據是用0和1兩個數(shù)碼來表示的數(shù)炫加。它的基數(shù)為2,進位規(guī)則是“逢二進一”屹篓,借位規(guī)則是“借一當二”,由18世紀德國數(shù)理哲學大師萊布尼茲發(fā)現(xiàn)匙奴。當前的計算機系統(tǒng)使用的基本上是二進制系統(tǒng)堆巧,數(shù)據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用“開”來表示1谍肤,“關”來表示0啦租。
常用進制轉換的實現(xiàn)

十進制到二進制:

def dec2bin(num):
    l = []
    if num < 0:
        return '-' + dec2bin(abs(num))
    while True:
        num, remainder = divmod(num, 2)
        l.append(str(remainder))
        if num == 0:
            return ''.join(l[::-1])
十進制到八進制:

def dec2oct(num):
    l = []
    if num < 0:
        return '-' + dec2oct(abs(num))
    while True:
        num, remainder = divmod(num, 8)
        l.append(str(remainder))
        if num == 0:
            return ''.join(l[::-1])
十進制到十六進制:

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
def dec2hex(num):
    l = []
    if num < 0:
        return '-' + dec2hex(abs(num))
    while True:
        num,rem = divmod(num, 16)
        l.append(base[rem])
        if num == 0:
            return ''.join(l[::-1])

ASCII碼

在計算機中,所有的數(shù)據在存儲和運算時都要使用二進制數(shù)表示(因為計算機用高電平和低電平分別表示1和0)荒揣,例如刷钢,像a、b乳附、c内地、d這樣的52個字母(包括大寫)、以及0赋除、1等數(shù)字還有一些常用的符號(例如*阱缓、#、@等)在計算機中存儲時也要使用二進制數(shù)來表示举农,而具體用哪些二進制數(shù)字表示哪個符號荆针,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂颁糟,那么大家就必須使用相同的編碼規(guī)則航背,于是美國有關的標準化組織就出臺了ASCII編碼,統(tǒng)一規(guī)定了上述常用符號用哪些二進制數(shù)來表示棱貌。

美國標準信息交換代碼是由美國國家標準學會(American National Standard Institute , ANSI )制定的玖媚,標準的單字節(jié)字符編碼方案,用于基于文本的數(shù)據婚脱。起始于50年代后期今魔,在1967年定案。它最初是美國國家標準障贸,供不同計算機在相互通信時用作共同遵守的西文字符編碼標準错森,它已被國際標準化組織(International Organization for Standardization, ISO)定為國際標準,稱為ISO 646標準篮洁。適用于所有拉丁文字字母涩维。
以下代碼用于實現(xiàn)ASCII碼與字符相互轉換:

# 用戶輸入字符
c = input("請輸入一個字符: ")

# 用戶輸入ASCII碼,并將輸入的數(shù)字轉為整型
a = int(input("請輸入一個ASCII碼: "))


print( c + " 的ASCII 碼為", ord(c))
print( a , " 對應的字符為", chr(a))
執(zhí)行以上代碼輸出結果為:

python3 test.py 
請輸入一個字符: a
請輸入一個ASCII碼: 101
a 的ASCII 碼為 97
101  對應的字符為 e

深淺copy

python中的深拷貝和淺拷貝和java里面的概念是一樣的袁波,所謂淺拷貝就是對引用的拷貝瓦阐,所謂深拷貝就是對對象的資源的拷貝。
首先锋叨,對賦值操作我們要有以下認識:

賦值是將一個對象的地址賦值給一個變量垄分,讓變量指向該地址( 舊瓶裝舊酒 )。
修改不可變對象(str娃磺、tuple)需要開辟新的空間
修改可變對象(list等)不需要開辟新的空間
淺拷貝僅僅復制了容器中元素的地址

a=['hello',[1,2,3]]
b=a[:]
[id(x) for x in a]
[55792504, 6444104]
[id(x) for x in b]
[55792504, 6444104]
a[0]='world'
a[1].append(4)
print(a)
['world', [1, 2, 3, 4]]
print(b)
['hello', [1, 2, 3, 4]]

這里可以看出,未修改前叫倍,a和b中元素的地址都是相同的偷卧,不可變的hello
和可變的list地址都一樣豺瘤,說明淺拷貝知識將容器內的元素的地址復制了一份。這可以通過修改后听诸,b中字符串沒改變坐求,但是list元素隨著a相應改變得到驗證。

淺拷貝是在另一塊地址中創(chuàng)建一個新的變量或容器晌梨,但是容器內的元素的地址均是源對象的元素的地址的拷貝桥嗤。也就是說新的容器中指向了舊的元素( 新瓶裝舊酒 )。

深拷貝仔蝌,完全拷貝了一個副本泛领,容器內部元素地址都不一樣

from copy import deepcopy
a=['hello',[1,2,3]]
b=deepcopy(a)
[id(x) for x in a]
[55792504, 55645000]
[id(x) for x in b]
[55792504, 58338824]
a[0]='world'
a[1].append(4)
 
print(a)
['world', [1, 2, 3, 4]]
print(b)
['hello', [1, 2, 3]]

這里可以看出,深拷貝后敛惊,a和b的地址以及a和b中的元素地址均不同渊鞋,這是完全拷貝的一個副本,修改a后瞧挤,發(fā)現(xiàn)b沒有發(fā)生任何改變锡宋,因為b是一個完全的副本,元素地址與a均不同特恬,a修改不影響b执俩。

深拷貝是在另一塊地址中創(chuàng)建一個新的變量或容器,同時容器內的元素的地址也是新開辟的癌刽,僅僅是值相同而已奠滑,是完全的副本。
轉自:http://www.reibang.com/p/efa9dd51f5cc

字符串

字符串是 Python 中最常用的數(shù)據類型妒穴。我們可以使用引號('或")來創(chuàng)建字符串宋税。
創(chuàng)建字符串很簡單,只要為變量分配一個值即可讼油。例如:

var1 = 'Hello World!' 
## Python 訪問字符串中的值

Python 不支持單字符類型杰赛,單字符在 Python 中也是作為一個字符串使用。

Python 訪問子字符串矮台,可以使用方括號來截取字符串乏屯,如下實例:

## 實例(Python 3.0+)

#!/usr/bin/python3
 
var1 = 'Hello World!'
var2 = "Runoob"
 
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])

Python字符串更新
你可以截取字符串的一部分并與其他字段拼接,如下實例:

#!/usr/bin/python3
var1 = 'Hello World!'
print ("已更新字符串 : ", var1[:6] + 'Runoob!')
轉義字符 描述
(在行尾時) 續(xù)行符
\ 反斜杠符號
' 單引號
" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁
\oyy 八進制數(shù)瘦赫,yy代表的字符辰晕,例如:\o12代表換行
\xyy 十六進制數(shù),yy代表的字符确虱,例如:\x0a代表換行
\other 其它的字符以普通格式輸出

Python轉義字符
在需要在字符中使用特殊字符時含友,python用反斜杠()轉義字符。如下表:

轉義字符 描述
(在行尾時) 續(xù)行符
\ 反斜杠符號
' 單引號
" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁
\oyy 八進制數(shù),yy代表的字符窘问,例如:\o12代表換行
\xyy 十六進制數(shù)辆童,yy代表的字符,例如:\x0a代表換行
\other 其它的字符以普通格式輸出

作業(yè)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by master on  2018/5/16 14:22.


class Menu(object):
    d_menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '網易': {},
                    'google': {}
                },
                '中關村': {
                    '愛奇藝': {},
                    '汽車之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龍觀': {},
            },
            '朝陽': {},
            '東城': {},
        },
        '上海': {
            '閔行': {
                "人民廣場": {
                    '炸雞店': {}
                }
            },
            '閘北': {
                '火車戰(zhàn)': {
                    '攜程': {}
                }
            },
            '浦東': {},
        },
        '山東': {},
    }
    # 保存層級供返回使用
    into_menu = []

    # 下一層
    def parse_level(self, d):
        for k, v in d.items():
            print(k, end="\t")
        print()
        child = input("選擇子菜單:")
        if d.get(child) is not None:
            if len(d.get(child)) > 0 and d not in self.into_menu:
                self.into_menu.append(d)
                self.d_menu = d.get(child)
            else:
                print("已經是最后一級了")
        else:
            print("子菜單不存在惠赫,請重新選擇把鉴!")
            self.parse_level(d)

    # 上一層
    def last_menu(self):
        if len(self.into_menu) > 0:
            self.d_menu = self.into_menu.pop()
            for k, v in self.d_menu.items():
                print(k, end="\t")
            print()
        else:
            print("已經到達最頂級了")

    # 命令區(qū)分
    def start(self):
        while True:
            p = input("輸入命令:子菜單->q,返回上一層->w,退出->e\n")
            if p == "Q" or p == "q":
                self.parse_level(self.d_menu)
            elif p == "W" or p == "w":
                self.last_menu()
            elif p == "E" or p == "e":
                exit("感謝使用儿咱,再見")
            else:
                print("請輸入正確的命令庭砍!")


if __name__ == '__main__':
    m = Menu()
    m.start()

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市混埠,隨后出現(xiàn)的幾起案子怠缸,更是在濱河造成了極大的恐慌,老刑警劉巖岔冀,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凯旭,死亡現(xiàn)場離奇詭異,居然都是意外死亡使套,警方通過查閱死者的電腦和手機罐呼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侦高,“玉大人嫉柴,你說我怎么就攤上這事》钋海” “怎么了计螺?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞧壮。 經常有香客問我登馒,道長,這世上最難降的妖魔是什么咆槽? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任陈轿,我火速辦了婚禮,結果婚禮上秦忿,老公的妹妹穿的比我還像新娘麦射。我一直安慰自己,他們只是感情好灯谣,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布潜秋。 她就那樣靜靜地躺著,像睡著了一般胎许。 火紅的嫁衣襯著肌膚如雪峻呛。 梳的紋絲不亂的頭發(fā)上罗售,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音杀饵,去河邊找鬼莽囤。 笑死谬擦,一個胖子當著我的面吹牛切距,可吹牛的內容都是我干的。 我是一名探鬼主播惨远,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼谜悟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了北秽?” 一聲冷哼從身側響起葡幸,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贺氓,沒想到半個月后蔚叨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辙培,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年蔑水,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扬蕊。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡搀别,死狀恐怖,靈堂內的尸體忽然破棺而出尾抑,到底是詐尸還是另有隱情歇父,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布再愈,位于F島的核電站榜苫,受9級特大地震影響,放射性物質發(fā)生泄漏翎冲。R本人自食惡果不足惜垂睬,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望府适。 院中可真熱鬧羔飞,春花似錦、人聲如沸檐春。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽套硼。三九已至,卻和暖如春全景,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骨望。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工硬爆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人擎鸠。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓缀磕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親劣光。 傳聞我的和親對象是個殘疾皇子袜蚕,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,132評論 0 13
  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數(shù)據結構(3).初始化時...
    歐辰_OSR閱讀 29,340評論 8 265
  • 4月2日绢涡,清明小長假第一天牲剃。陽光明又媚,春色無限美雄可,怎能不去和春天約會凿傅? 上午魔耳英語培訓學校要組織春游活動,地點...
    山高人為峰1閱讀 354評論 2 2
  • 金鈞閱讀 369評論 0 0
  • 人生数苫,其實 很多時候是在排隊 在天使面前 排著出生聪舒,滿臉喜悅 在凡塵俗世 排著等待,時喜時憂 在死神眼中 排著湮滅...
    lochopin閱讀 208評論 0 0