資料類型
一、Python支援的資料類型
1.變量
變量是記憶體中的一塊區域
變量的命名:由字母、數字、下劃線組成并且開頭不能時數字
python中位址變量與c語言剛好相反,一條資料包含多個标簽:
>>> a=1
>>> b=1
>>> id(a)
34909288
>>> id(b)
2.整型
注:type()可以檢視資料類型
>>> num1=123
>>> type(num1)
<type 'int'>
3.長整型
#強制定義為長整型:num3=999L
>>> num2=9999999999999999999
>>> type(num2)
<type 'long'>
>>> num3=999L
>>> type(num3)
4.浮點型
#1.2e10代表的數值為1.2的10次方;
#12e9代表的數值為12的9次方;
>>> f1=12.0
>>> type(f1)
<type 'float'>
>>> f2=1.2e10
>>> type(f2)
5.波爾類型
#隻包含True|False兩種,注意開頭字母大寫,不識别小寫
In [9]: a=True
In [10]: type(a)
Out[10]: bool
In [11]: b=False
In [12]: type(b)
Out[12]: bool
注:如果括号裡面有數值,傳回True,否則False。0也傳回Flase
>>> a=123
>>> bool(a)
True
>>> b=""
>>> bool(b)
False
>>> bool(-1)
>>> bool(1)
>>> bool(0)
6.複數類型
#python對複數提供内嵌支援,eg: 3.14j, 8.32e-36j
>>> c=3.14j
>>> type(c)
<type 'complex'>
二、python類型轉換的工廠函數
int('1'), long(1), float(1), bool(-1), bool(0), complex(1)
#将a從整型轉換為長整型:
>>> type(a)
<type 'int'>
>>> a=long(a)
<type 'long'>
>>> a
123L
三、BIF: built-in function内置函數(*隻介紹一部分)
cmp:比較大小
In [37]: cmp(1,2)
Out[37]: -1
In [38]: cmp(2,1)
Out[38]: 1
In [39]: cmp(1,1)
Out[39]: 0
type(變量名):檢視變量類型
In [42]: a=1
In [43]: type(a)
Out[43]: int
str:轉換為字元串
In [40]: str(1)
Out[40]: '1'
四、進制轉換
不同進制轉換: hex(16), oct(8)
ASCII碼轉換: ord('A'), chr(97)
hex轉換為16進制
oct轉換為8進值
In [47]: hex(1)
Out[47]: '0x1'
In [48]: oct(1)
Out[48]: '01'
ord(‘A’)将A轉換為對應的ASDII碼
chr(97)反向查詢97這個ASDII碼對應的字元
操作符
一、算術運算符:+, -, *, /,**, %, //
>>> 2**3
8
>>> 5%2
1
注:在2.x版本和3.0版本python中“/”的結果是不同的:
In [25]: 5/2
Out[25]: 2
In [26]: 5//2 #兩種方式的結果都是5除以2等于2
Out[26]: 2
In [27]: from __future__ import division #使用這條指令将目前2.x環境轉換為3.0版本python的精确計算方式
In [28]: 5/2
Out[28]: 2.5 #現在執行5除以2得到的是2.5而不是2
In [29]: 5//2 #5//2才會隻取整數位
Out[29]: 2
>>> a=1111
>>> b=111111L
>>> a+b
112222L
二、指派運算符: +=, -=, *=...... (注意: a+=2 實質上是a=a+2; python中不支援a++,但支援++a)
三、比較運算符: >, >=, <, <=, !=, ==(注意: 結果是bool類型,隻能是True或者False)
>>> 1>2
注:==除了會判斷是否相等,還會判斷是否同一類型,如'1' == 1就會傳回False錯誤(字元串和數值不相等)
三、邏輯運算符:邏輯與and, 邏輯或or, 邏輯非not
#如果為空,not+變量的傳回值就為True
>>> warn = ""
>>> not warn
>>> a="hello"
>>> not a
>>> not ""
輸入輸出
Input:(python2和python3中不同:2.0版本中使用raw_input和input來區分字元串和數值;3.0中使用input可以自動區分數值還是字元串)
raw_input("提示資訊:") # 傳回值是字元串
input("提示資訊") # 傳回值是數值類型
In [68]: raw_input("輸入Name:")
輸入Name:vaon
Out[68]: 'vaon'
Output:
print "顯示%d條資訊:%s" %(1, "占位符的内容")
print """
按照三引号之間的格式輸出;
"""
In [69]: print "vaon Is %d years old" %(18) #%d表示占用一個位置,類型為數值類型。如果是字元串類型用%s代替
vaon Is 18 years old
In [70]: print """
....: 主機資訊
....: 1.3一uyu6q7hh%&j
....: 2.--qeoids23230-
....: 3.jfhuyer-=-09==
....: """
主機資訊
1.3一uyu6q7hh%&j
2.--qeoids23230-
3.jfhuyer-=-09==
判斷語句
注:python中不支援case語句,可以通過if...elif...elif...else實作
if ...
if ... else ....
if ... elif ... elif ... else ....
#python中不支援三目運算符:a>b?a:b
#但要實作三目運算符功能可以:a if a<b else b ,如果a<b就輸出a,a>b就輸出b
循環語句
一、for循環
for .... (注意: range(start, stop, step))
for .... if語句嵌套
for .... for語句嵌套
二、while循環
while實作無限循環:
while True:
...
或者:
while 1:
break和continue:
break:遇到break,跳出循環
continue:跳過此次循環,回到循環繼續執行
range:
range(start,stop,step):傳回一個别表,從start開始,stop-1結束,步長為step
列印出1-10:
In [10]: range(1,11)
Out[10]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
列印出1-10的奇數:
In [11]: range(1,11,2)
Out[11]: [1, 3, 5, 7, 9]
注:python中特有的while...else...語句:
如果滿足while後面的語句,執行while循環的程式,如果不滿足,執行else裡面的程式
其實if語句同樣有if...else...語句
題目1:
使用者輸入年齡,如果大于18,顯示是成年人,否則顯示不是成年人
解答:
#!/usr/bin/env python
#coding:utf-8
age=input("輸入年齡:")
if age > 18:
print "Age Is %d,You Are Adult" %(age)
else:
print "Age Is %d,Not Adult" %(age)
題目2:
#!/usr/bin/python
hostname=raw_input("輸入主機名:")
IP=raw_input("輸入IP:")
used_year=input("輸入已使用時間:")
CPU=raw_input("CPU資訊:")
Memory=raw_input("記憶體大小:")
if used_year > 10:
print "該伺服器使用年限太久!"
print """
主機資訊
主機名:%s
ip:%s
使用年限:%d
CPU:%s
Memory:%s
"""%(hostname,IP,used_year,CPU,Memory)
題目3:
判斷是否閏年
"""
判斷是否閏年的方法:
1.能被4整除但不能被100整除
2.或者滿足能被400整除
year = input("Year:")
if (year%4 == 0 and year%100 != 0) or year%100 ==0:
print "%d Is Leap" %(year)
題目4:
列印九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
...
# coding:utf-8
for n in range(1,10):
for m in range(1,n+1):
print "%d*%d=%d" %(m,n,m*n), #如果列印時不想換行,在print最後面加逗号即可
print #列印空行
題目5:
計算1+2+3+...+10000的和,并輸出腳本運作時間
import time #調用time函數
start = time.time() #開始時間,計時
sum=0
for m in range(1,10001):
sum+=m
print "求和結果:%d" %(sum)
stop = time.time() #結束時間,計時
print "腳本運作時間:%s" %(stop - start) #結束時間減開始時間
題目6:
1.系統中使用者名密碼為admin和redhat
2.使用者登陸時,為防止暴力破解,僅有三次機會
3.如果登陸成功,顯示登陸成功