python入門筆記(Day1)--變量,字符(串),tuple,list,set,dict,判斷,循環

要點:

學了輸入輸出數據,變量的區別和字符格式,字符串,tuple,list,set,dict,判斷和循環,明天開啓函數!

加減乘除

除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數,如:

>>> 9 / 3
3.0

還有一種除法是//,稱爲地板除,兩個整數的除法仍然是整數:

>>> 10 // 3
3

你沒有看錯,整數的地板除//永遠是整數,即使除不盡。要做精確的除法,使用/就可以。

因爲//除法只取結果的整數部分,所以Python還提供一個餘數運算,可以得到兩個整數相除的餘數:

>>> 10 % 3
1

無論整數做//除法還是取餘數,結果永遠是整數,所以,整數運算結果永遠是精確的。

字符串

由於Python的字符串類型是str,在內存中以Unicode表示,一個字符對應若干個字節。如果要在網絡上傳輸,或者保存到磁盤上,就需要把str變爲以字節爲單位的bytes。

編碼

對於單個字符的編碼,Python提供了ord()函數獲取字符的整數表示,chr()函數把編碼轉換爲對應的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

Unicode和字節流轉換

除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數,如:

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

要計算str包含多少個字符,可以用len()函數;
如果沒有特殊業務要求,請牢記僅使用UTF-8編碼!

開頭註釋

由於Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存爲UTF-8編碼。當Python解釋器讀取源代碼時,爲了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;

第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

常見佔位符

  • %d 整數
  • %f 浮點數
  • %s 字符串
  • %x 十六進制整數

還可以指定是否補0和整數與小數的位數:

>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'

注:%s永遠起作用,它會把任何數據類型轉換爲字符串
用%%來表示一個%

列表List

列出班裏所有同學的名字,就可以用一個list表示:

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

變量classmates就是一個list。用len()函數可以獲得list元素的個數

刪除list末尾的元素,用pop()方法
刪除指定位置的元素,用pop(i)方法

元組tuple

>>> t = (1)
>>> t
1

定義的不是tuple,是1這個數!這是因爲括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。

所以,只有1個元素的tuple定義時必須加一個逗號來消除歧義,下面纔是正確的格式:

>>> t = (1,)
>>> t
(1,)

練習

用索引取出下面list中的【Lisa】:

# -*- coding: utf-8 -*-

L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']
]
# 打印Lisa:
print(L[2][2])

注:當做二重數組即可,要記住是從0開始的就好了!

輸入INPUT

input()返回的數據類型是str,str不能直接和整數比較,必須先把str轉換成整數。Python提供了int()函數來完成這件事情:

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00後')

練習

小明身高1.75,體重80.5kg。請根據BMI公式(體重除以身高的平方)幫小明計算他的BMI指數,並根據BMI指數:

低於18.5:過輕
18.5-25:正常
25-28:過重
28-32:肥胖
高於32:嚴重肥胖
用if-elif判斷並打印結果:

# -*- coding: utf-8 -*-

height = 1.75
weight = 80.5
bmi = weight/height**2
if bmi<=18.5:
    print("過輕",bmi)
elif bmi<=25:
    print("正常",bmi)
elif bmi<=28:
    print("過重",bmi)
elif bmi<=32:
    print("肥胖",bmi)
else:
    print("嚴重肥胖",bmi)

注:進行代數計算時不能直接用^2這樣會無法編譯,可以用**代替,並且其優先級別高於,即**>\>*

循環

for x in …循環就是把每個元素代入變量x,然後執行縮進塊的語句

如果要計算1-100的整數之和,從1寫到100有點困難,幸好Python提供一個range()函數,可以生成一個整數序列,再通過list()函數可以轉換爲list。比如range(5)生成的序列是從0開始小於5的整數:

>>> list(range(5))
[0, 1, 2, 3, 4]

練習

請利用循環依次對list中的每個名字打印出Hello, xxx!:

# -*- coding: utf-8 -*-
L = ['Bart', 'Lisa', 'Adam']
x=0
while x<3:
    print('hello,%s'%L[x])
    x=x+1
或是
x=0
for x in L:
    print('hello,X')

若是寫

x=0
while x<3:
    print('hello,'L[x])
    x=x+1

這樣是不對的,可能是因爲進行打印的內部不能夠進行循環和調用吧,只適合用佔位符(這也正是佔位符的作用,不然會引起程序誤會)

字典dict和集合set

用Python寫一個dict如下:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

給定一個名字,比如’Michael’,dict在內部就可以直接計算出Michael對應的存放成績的“頁碼”,也就是95這個數字存放的內存地址,直接取出來,所以速度非常快。dict是用空間來換取時間的一種方法.
注:需要牢記的第一條就是,dict的key必須是不可變對象。
重複元素在set中自動被過濾:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

通過add(key)方法可以添加元素到set中;通過remove(key)方法可以刪除元素。

另外,set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

set和dict的唯一區別僅在於沒有存儲對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因爲無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重複元素”。

總結:

通過今天的學習,瞭解到python中大部分基礎還是跟c比較像的,思想也是,第一天也算是順利。就是看的有些慢了,需要靜下心來才行。

發佈了35 篇原創文章 · 獲贊 16 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章