Python之路(三)Python數據類型

運算符

  • 算數運算符
序號 符號 描述 實例
1 + 加,兩個操作數相加 6 + 3 輸出結果9
2 - 減,兩個操作數相減 6 - 3 輸出結果3
3 * 乘,兩個操作數相乘 6 * 3 輸出結果18
4 / 除,兩個操作數相除 6 / 3 輸出結果2
5 % 取模,返回除法的餘數 6 % 4 輸出結果2
6 ** 冪,返回x的y次冪 2 ** 3 輸出結果8
7 // 取整除,返回商的整數部分 6 / 5 輸出結果1
  • 比較運算符
序號 符號 描述 實例
1 == 等於,比較兩個對象是否相等 1 == 1 返回True
2 != 不等於,比較兩個對象是否不相等 1 != 1 返回False
3 > 大於,返回x是否大於y 2 > 1 返回True
4 < 小於,返回x是否小於y 2 < 1 返回False
5 >= 大於等於,返回x是否大於等於y 2 >= 1 返回True
6 <= 小於等於,返回x是否小於等於y 2 <= 1 返回False
  • 賦值運算符
序號 符號 描述 實例
1 = 簡單的賦值運算符 a = 123
2 += 加法賦值運算符 a += 1 等效於a = a + 1
3 -= 減法賦值運算符 a -= 1 等效於a = a - 1
4 *= 乘法賦值運算符 a *= 1 等效於a = a * 1
5 /= 除法賦值運算符 a /= 1 等效於a = a / 1
6 %= 取模賦值運算符 a %= 1 等效於a = a % 1
7 **= 冪賦值運算符 a **= 1 等效於a = a ** 1
8 //= 取整除賦值運算符 a //= 1 等效於a = a // 1
  • 邏輯運算符
序號 符號 表達式 描述 實例
1 and x and y 布爾''與'' 1 = 1 and 2 > 1 返回True
2 or x or y 布爾''或" 1 == 1 or 2 > 1 返回True
3 not not x 布爾''非'' not 1 == 1 返回False
  • 成員運算符
序號 符號 描述 實例
1 in 在指定的序列種找到值,返回True,否則返回False x在y序列中 返回True
2 not in 在指定的序列種找不到值,返回True,否則返回False x不在y序列中 返回True

整數

Python可以處理任意大小的整數,當然包括負整數,例如1,100,-99。

  • 創建
a = 123
a = int(123)
print(type(a))  // 打印變量a的類型
  • 轉換
a = '123'
int_a = int(a)  // 將字符串轉換成整數
print(type(int_a))

布爾值

布爾值只有True,False兩種值,要麼是True,要麼是False,在Python中可以直接使用True,False來表示布爾值(需要注意大小寫)。

  • 創建
a = True
print(type(a))
b = False
print(type(b))
  • 轉換
a = 123
bool_a = bool(a)    // 將整數轉換成布爾值,整數轉換成布爾值只有0是False,其它都是True
print(type(bool_a))

b = 'Hello'
bool_b = bool(b)    // 將字符串轉換成布爾值,字符串轉換成布爾值只有空是False,其它都是True
print(type(bool_b))

字符串

字符串是以單引號,雙引號括起來的任意文本,例如'Hello',''Python''。

  • 創建
a = 'Hello'
a = str('Hello')
print(type(a))
  • 轉換
a = 123
str_a = str(a)  // 將整數轉換成字符串
print(type(str_a))
  • 拼接
a = 'Hello'
b = 'Python'
print(a + b)
  • 格式化
a = '我叫%s,我今年%d歲,體重%f公斤,我正再學習%s課程' %('林斌',18,55.2,'Python')
print(a)

%s:打印字符串
%d:打印整數
%f:打印浮點數

  • 子序列
a = '誰說我的眼裏只有你,讓我把你忘記!'
if '我的眼裏只有你' in a:
    print('包含敏感字符')
else:
    print('不包含敏感字符')
  • 移除空白,換行符
a = ' linbin '
print(a.strip())    // 移除左右兩邊空白
print(a.lstrip())   // 移除左邊空白
print(a.rstrip())   // 移除右邊空白
  • 分割
a = 'my|name|is|linbin'
print(a.split('|'))     // 以'|'進行分割
print(a.split('|',1))   // 以左邊第一個'|'進行分割
print(a.rsplit('|',1))  // 以右邊第一個'|'進行分割
  • 長度計算
a = '誰說我的眼裏只有你,讓我把你忘記!'
print(len(a))       // 計算字符長度,不是字節長度
  • 索引
a = '誰說我的眼裏只有你,讓我把你忘記!'
print(a[8])        // 從0開始開始計算

a = '誰說我的眼裏只有你,讓我把你忘記!'
i = 0
while i < len(a):
    print(a[i])
    i += 1
  • 切片
a = '誰說我的眼裏只有你,讓我把你忘記!'
print(a[2])       // 取第三個字符
print(a[-2])      // 取倒數第二個字符
print(a[0:2])     // 從第一個字符開始,連續取兩個字符
print(a[0:])      // 從第一個字符開始,取到最後
print(a[0:-1])    // 從第一個字符開始,取到最後,但不取最後一個字符
print(a[0::2])    // 從第一個字符開始,取到最後,步長爲2

列表

列表是一種有序的集合,可以隨時添加和刪除其中的元素,例如a = ['林斌',123,'linbin']。

  • 創建
a = ['林斌',123,'linbin']
a = list(['林斌',123,'linbin'])
print(type(a))
  • 子元素
a = ['林斌',123,'linbin']
if 'linbin' in a:
    print('包含子元素')
else:
    print('不包含子元素')

a = ['林斌',123,'linbin']
if '林' in a[0]:
    print('元素包含在列表內')
else:
    print('元素不包含在列表內')
  • 索引
a = ['林斌',123,'linbin']
print(a[2])
  • 長度計算
a = ['林斌',123,'linbin']
print(len(a))
  • 切片
a = ['林斌',123,'linbin']
print(a[0:2])
  • 追加
a = ['林斌',123,'linbin']
a.append('Python')      // 追加到列表最後面
print(a)
  • 插入
a = ['林斌',123,'linbin']
a.insert(1,'Python')    // 插入到指定元素後面
print(a)
  • 刪除
a = ['林斌',123,'linbin']
a.remove(123)   // 以元素的方式刪除,從左邊開始刪除第一個
print(a)
del a[1]        // 以索引的方式刪除
print(a)
  • 更新
a = ['林斌',123,'linbin']
a[1] = 'LinBin'     // 如果超過列表的長度會報錯
print(a)
  • 循環
a = ['林斌',123,'linbin']
for i in a:
    print(i)

a = ['林斌',123,'linbin']
i = 0
while i < len(a):
    print(a[i])
    i += 1

字典

字典是另一種可變容器模型,且可存儲任意類型對象。字典的每個鍵值(key=>value)對用冒號:分割,每個對之間用逗號,分割,整個字典包括在花括號{}中,例如{'name': 'linbin','passwod': 'axbc1kof','times': 3}

  • 創建
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}

a = dict({
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
})
  • 長度計算
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
print(len(a))
  • 索引取值
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
print(a['password'])        // 根據key獲取值
  • 追加
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
a['sex'] = '男'      // 如果key不存在,則添加,如果存在,則更新
print(a)
  • 刪除
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
del a['times']
print(a)
  • 更新
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
a['times'] = 4
print(a)
  • 循環
a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
for i in a.keys():      // 循環keys
    print(i)

a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
for i in a.values():    // 循環values
    print(i)

a = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
}
for i in a.items():     // 循環items
    print(i)

字典和列表嵌套

  • 列表嵌套列表
user_list = ['linbin','LinBin',['a','b','c']]
  • 字典嵌套字典
user_dict = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': 3
    'sex': {
        'Libin': '男',
        'LinBin': '女'
    }
}
  • 字典列表相互嵌套
user_dict = {
    'name': 'linbin',
    'password': 'axbc1kof',
    'times': {
        'k1': 'v1',
        'k2': 'v2'
    },
    'sex': ['linbin','LinBin',['a','b','c'],{'name': 'liuwenqian','password': 'axbc1kof'}]
}
a = user_dict['sex'][2]
a.append('d')
print(a)

a = user_dict['sex'][3]
a['times'] = 3
print(a)

小試牛刀

基於文件存儲的用戶登錄程序(三次登錄失敗,鎖定用戶)

#!/usr/bin/python
# -*- coding:utf-8 -*-

# 用戶信息存放於DB文件
"""
linbin|axbc1kof|3
LinBin|axbc1kof|2
liuwenqian|axbc1kof|2
LinWenQian|axbc1kof|0
"""

# 打開文件並讀取內容
option1 = open('DB','r')    # 打開文件
data = option1.read()       # 讀取文件
option1.close()             # 關閉文件

# 定義用戶信息列表,初始化爲空
user_info_list = []

# 用戶信息轉成列表
user_list = data.split('\n')

# 用戶信息列表轉成列表嵌入字典
for item in user_list:
    temp = item.split('|')
    user_dict = {
        'name': temp[0],
        'password': temp[1],
        'times': temp[2]
    }
    user_info_list.append(user_dict)

# 循環控制標識符
flag = True

# 定義用戶登錄循環模塊
while flag:
    name = input('請輸入用戶名(退出Q|q):')      # 提示用戶輸入用戶名,退出輸入Q|q
    if name == 'Q' or name == 'q':      # 用戶輸入Q|q,退出程序
        break       # 跳出while循環
    else:
        for item in user_info_list:         # 循環用戶信息列表
            if name == item['name']:        # 判斷用戶名
                if int(item['times']) < 3:      # 判斷嘗試次數是否小於3
                    password = input('請輸入密碼:')         # 提示用戶輸入密碼
                    if password == item['password']:        # 判斷密碼
                        print('登錄成功!')
                        item['times'] = 0       # 嘗試次數更新爲零
                        flag = False            # 跳出while循環
                        break                   # 跳出for循環
                    else:
                        print('密碼錯誤,請重新輸入!')    # 密碼錯誤,提示用戶重新輸入
                        item['times'] = int(item['times']) + 1      # 嘗試次數加1
                        break       # 跳出for循環
                else:
                    print('賬號已鎖定,請聯繫管理員!')      # 嘗試次數大於3,提示用戶賬號已鎖定
                    flag = False        # 跳出while循環
                    break       # 跳出for循環
        else:
            print('用戶名不存在,請重新輸入')       # 用戶名不存在,提示用戶重新輸入

# 定義用戶信息字符串,初始化爲空
user_info_str = ''

# 用戶信息轉成字符串
for str in user_info_list:
    item_str = '%s|%s|%s' % (str['name'],str['password'],str['times'])
    if user_info_str == '':
        user_info_str += item_str
    else:
        user_info_str = user_info_str + '\n' + item_str

# 打開文件並寫入內容
option2 = open('DB','w')        # 打開文件
option2.write(user_info_str)    # 寫入文件
option2.close()                 # 關閉文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章