Python學習--最完整的基礎知識大全

Python學習--最完整的基礎知識大全

關於python的基礎知識學習,網上有不少資料,今天我就把我收藏的整理一下分享給你們!html

下面是我基礎學習時的一點記錄:python

python3 循環語句

1. while

n=10
sum = 0
counter = 1
while counter < n:
    sum = sum + counter
    counter += 1
print("1到%d之和爲:%d" %(n, sum))

#while 循環使用 else 語句
count = 0
while count < 5:
   print (count, " 小於 5")
   count = count + 1
else:
   print (count, " 大於或等於 5")

2. for

#可使range以指定數字開始並指定不一樣的增量(甚至能夠是負數,有時這也叫作'步長')
for i in range(0, 10, 3):
    print(i)

for i in range(-10, -100, -30):
    print(i)

a_list = ['google', 'baidu', 'ie', 'firefox', '360']
for i in range(len(a_list)):
    print(i, a_list[i])
#使用range建立列表
b_list = list(range(8))
print(b_list)

3. break和continue

#使用break終止循環
for letter in 'helloworld':
    if letter == 'r':
        break
    print("當前字母爲:", letter)
#使用continue跳過循環
for letter in 'helloworld':
    if letter == 'l':
        continue
    print("當前字母爲:", letter)

4. pass語句

#說明:pass就是一條空語句。在代碼段中或定義函數的時候,若是沒有內容,或者先不作任何處理,直接跳過,就可使用pass。
for letter in 'helloworld':
    if letter == 'l':
        pass
        print("執行pass塊")
    print("當前字母爲:", letter)

5. 使用enumerate函數進行遍歷

c_list = [12, 34, 56, 78, 90]
for i, j in enumerate(c_list):
    print(i, j)

6. 小練習

循環練習
for i in range(1, 6):
    for j in range(1, i+1):
        print('*',end='')
    print('\r')
9*9乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print("%d * %d = %d" %(j, i, i*j), end='\t')
    print('\r')
冒泡排序
def paixu(d_list):
    for i in range(0, len(d_list)):
        for j in range(i+1, len(d_list)):
            if d_list[i] >= d_list[j]:
                tmp = d_list[i]
                d_list[i] = d_list[j]
                d_list[j] = tmp
    print(d_list)
li = [32, 23, 65, 32, 76, 79, 56, 89, 12]
paixu(li)

Python3 迭代器與生成器

迭代器

迭代器是一個能夠記住遍歷的位置的對象。編程

迭代器對象從集合的第一個元素開始訪問,直到全部的元素被訪問完結束。迭代器只能往前不會後退。微信

迭代器有兩個基本的方法:iter() 和 next()。閉包

import sys

it = iter(c_list)
print(c_list)
print(next(it))
for x in it:
    print(x, end=' ')

it1 = iter(c_list)
while True:
    try:
        print(next(it1))
    except StopIteration:
        sys.exit()

生成器

在 Python 中,使用了 yield 的函數被稱爲生成器(generator)。
調用一個生成器函數,返回的是一個迭代器對象。
在調用生成器運行的過程當中,每次遇到 yield 時函數會暫停並保存當前全部的運行信息,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行。函數

生成器函數
def fibonacci(n):
    a = 0;
    b = 1;
    counter = 0;
    while True:
        if (counter > n):
            return
        yield a
        a, b = b, a + b
        counter += 1
#生成器函數返回一個迭代器
fibo = fibonacci(10)

while True:
    try:
        print(next(fibo), end=' ')
    except:
        sys.exit()

函數

函數傳入不定長參數

#加了星號(*)的變量名會存放全部未命名的變量參數。若是在函數調用時沒有指定參數,它就是一個空元組。咱們也能夠不向函數傳遞未命名的變量。
def printinfo(arg1, *vartuple):
    "打印任何傳入的參數"
    print("輸出:")
    print(arg1)
    for var in vartuple:
        print(var)
    return

printinfo(10)
printinfo(10, 20, 30)

匿名函數

python 使用 lambda 來建立匿名函數。
所謂匿名,意即再也不使用 def 語句這樣標準的形式定義一個函數。學習

  • lambda 只是一個表達式,函數體比 def 簡單不少。
  • lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
  • lambda 函數擁有本身的命名空間,且不能訪問本身參數列表以外或全局命名空間裏的參數。

雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增長運行效率。ui

sum = lambda arg1, arg2: arg1 + arg2
print(sum(10,20))

變量的做用域

Python中變量的做用域一共有4種,分別是:google

  • L (Local) 局部做用域
  • E (Enclosing) 閉包函數外的函數中
  • G (Global) 全局做用域
  • B (Built-in) 內建做用域

以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。spa

B = int(2.9)  # 內建做用域

G = 0  # 全局做用域
def outer():
    E = 1  # 閉包函數外的函數中
    def inner():
        L = 2  # 局部做用域

一個完整的demo

import pickle
import os

datafile = 'C:\\Users\\root\\Desktop\\PyDemo\\person.data'
line = '#########################################'
message = '''
#######################################
*Welcome bookmark:                    *
*    press 1 to show list             *
*    press 2 to add pepole            *
*    press 3 to edit pepole           *
*    press 4 to delete pepole         *
*    press 5 to search pepole         *
*    press 6 to show menu             *
*    press 0 to quit                  *
#######################################
'''
#打印菜單欄
print(message)

#建立一我的類,有姓名和電話號兩個屬性
class Person(object):
    def __init__(self, name, number):
        self.name = name
        self.number = number

#獲取數據
def get_data(filename = datafile):
    if os.path.exists(filename) and os.path.getsize(filename):
        with open(filename, 'rb') as f:
            return pickle.load(f)
    return None

#寫入數據
def set_data(name, number, filename = datafile):
    personList = {} if get_data() == None else get_data()
    with open(filename, 'wb') as f:
        personList[name] = Person(name, number)
        pickle.dump(personList, f)

#保存字典格式的數據到文件
def save_data(dictPerson, filename = datafile):
    with open(filename, 'wb') as f:
        pickle.dump(dictPerson, f)

#顯示全部聯繫人信息
def show_all():
    personList = get_data()
    if personList:
        for v in personList.values():
            print(v.name, v.number)
        print(line)
    else:
        print('空空如也,請添加聯繫人!')
        print(line)

#添加聯繫人
def add_person(name, number):
    set_data(name, number)
    print('添加聯繫人成功!')
    print(line)

#更新聯繫人
def edit_person(name, number):
    personList = get_data()
    if personList:
        if name in personList.keys():
            personList[name] = Person(name, number)
            save_data(personList)
            print('更改聯繫人信息成功!')
        else:
            print('查無此人', name, ',請重試!')
        print(line)

#刪除聯繫人
def del_person(neme):
    personList = get_data()
    if personList:
        if name in personList:
            del personList[name]
            save_data(personList)
            print('刪除聯繫人成功!')
        else:
            print(name, '不存在!')
    print(line)

#查詢聯繫人
def find_person(name):
    personList = get_data()
    if personList:
        if name in personList.keys():
            print(personList.get(name).name, personList.get(name).number)
        else:
            print('查無此人!', name)
    print(line)

while True:
    num = input('>>>')

    if num == '1':
        print('查看全部聯繫人:')
        show_all()
    elif num == '2':
        print('添加聯繫人:')
        name = input('請輸入聯繫人姓名 >>')
        number = input('輸入聯繫人電話號 >>')
        add_person(name, number)
        show_all()
    elif num == '3':
        print('更新聯繫人:')
        name = input('請輸入聯繫人姓名 >>')
        number = input('輸入聯繫人電話號 >>')
        edit_person(name, number)
        show_all()
    elif num == '4':
        print('刪除聯繫人:')
        name = input('請輸入聯繫人姓名 >>')
        del_person(name)
        show_all()
    elif num == '5':
        print('查找聯繫人:')
        name = input('請輸入聯繫人姓名 >>')
        find_person(name)
    elif num == '6':
        print(message)
    elif num == '0':
        break
    else:
        print('輸入錯誤,請重試!')

個人我的微信訂閱號:【Java編程社區】 歡迎你的加入!
圖片描述

相關文章
相關標籤/搜索