第一模塊: 開發(fā)基礎(chǔ)(1)

python生態(tài)圈

  • WEB開發(fā)(Django the framework for perfectionist with deadlines,Tornado, flask,bottle)
  • 人工智能(PyTorch)
  • 云計(jì)算(openstack)
  • 金融量化分析,自動(dòng)化交易
  • 爬蟲(Scrapy, Request, BeautifuSoap, urllib)
  • 自動(dòng)化運(yùn)維,測(cè)試
  • 科學(xué)運(yùn)算
  • 游戲開發(fā)

誰在使用python

python_user

編程語言的介紹

為什么要編程?

由于計(jì)算機(jī)只能識(shí)別二進(jìn)制,但是人不能只輸入二進(jìn)制,這樣開發(fā)的速度太慢.所以最好的方法就是輸入簡(jiǎn)單的指令,計(jì)算機(jī)能將指令轉(zhuǎn)化成二進(jìn)制執(zhí)行.

有哪些編程語言

編程語言總體分為: 機(jī)器語言, 匯編語言, 高級(jí)語言.

機(jī)器語言

由于計(jì)算機(jī)只能接受二進(jìn)制代碼,因此,用二進(jìn)制代碼0和1描述的指令稱為機(jī)器語言,全部機(jī)器指令的集合構(gòu)成計(jì)算機(jī)的機(jī)器語言.
機(jī)器語言屬于低級(jí)語言.
機(jī)器語言視微處理器理解和使用的,盡管機(jī)器語言好像視很復(fù)雜的,但是它視有規(guī)律的.
存在100000多種機(jī)器語言指令.

匯編語言

匯編語言的實(shí)質(zhì)和機(jī)器語言是相同的, 都是直接對(duì)硬件操作,只不過指令采用了英文縮寫的標(biāo)識(shí)符,更容易識(shí)別和記憶.

高級(jí)語言

和匯編語言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作相關(guān)但與完成工作無關(guān)的細(xì)節(jié),例如堆棧,寄存器等;
高級(jí)語言所編寫的程序不能直接被計(jì)算機(jī)識(shí)別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行.

高級(jí)語言又分為編譯類和解釋型.

編譯類

編譯是指在應(yīng)用源程序執(zhí)行之前,將程序源代碼"翻譯"成目標(biāo)代碼(機(jī)器語言),因此其目標(biāo)程序可以脫離其語言環(huán)境獨(dú)立執(zhí)行(編譯后的可執(zhí)行文件,是cpu可以理解的二進(jìn)制的機(jī)器碼組成的),使用比較方便,效率高.但是應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成目標(biāo)文件才能執(zhí)行.
編譯后程序運(yùn)行時(shí)不需要在重新翻譯,直接使用編譯結(jié)果就可以了.程序執(zhí)行效率高,依賴編譯器,跨平臺(tái)性差.如c,c++,delphi等

解釋型

執(zhí)行方式類似于我們生活中"同聲翻譯", 應(yīng)用程序源代碼一邊由相應(yīng)的解釋器"翻譯"成目標(biāo)語言,一邊執(zhí)行,因此效率比較低,而且不能生成課獨(dú)立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但是這種方式比較靈活,可以動(dòng)態(tài)地調(diào)整,修改應(yīng)用程序. 如Python,Java,PHP,Ruby等語言.


Python的發(fā)展史

創(chuàng)始人: Guido van Rossum,仁慈的獨(dú)裁者
1989年圣誕節(jié),名字來自于monty python's flying circus.

1989年 誕生
1991年 第一個(gè)python編譯器誕生,c語言編寫
1999年 第一個(gè)web框架誕生
1994年 python1.0 lambda map filter reduce
2000年 python2.0 加入內(nèi)存回收機(jī)制
2004年 python2.4 web框架Django誕生
2006年 python2.5
2008年 python2.6
2008年 python3.0
2010年 python2.7
2009年 3.1
2011年 3.3
2012年 3.4
2014年 宣布python2.7支撐到2020年,不會(huì)有2.8版本,所有用戶需要盡快將項(xiàng)目遷移到python3.4+
2015年 3.5
2016年 3.6


python解釋器種類

  • Cpython 官方版解釋器
  • Ipython 基于Cpython上的一個(gè)交互式解釋器
  • Jpython 運(yùn)行在java平臺(tái)上的python解釋器
  • pypy 它的目標(biāo)是執(zhí)行速度,采用了JIT技術(shù),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋),所以可以顯著的提高python代碼的執(zhí)行速度.
  • IronPython .Net平臺(tái)上的python解釋器.

精通各種語言的HelloWorld

  • C++
#include <iostream>
int main(void){
std::cout<<"Hello world";
}
  • C
#include <stdio.h>
int main(void){
printf("\nhello world\!");
return 0;
}
  • JAVA
public class HelloWorld{
public static void main(String args[]){
system.out.println("Hello world");
}
}
  • PHP
<?php
  echo "hello world!"
?>
  • RUBY
puts "Hello World."
  • GO
package main
import "fmt"
func main(){
  fmt.Printf("Hello World\n God Bless You!");
}

Python基礎(chǔ)語法

變量

計(jì)算機(jī)主要作用是進(jìn)行運(yùn)算,python進(jìn)行數(shù)值運(yùn)算十分簡(jiǎn)單,和我們平時(shí)用計(jì)算器一樣.

變量的作用: Variable are used to store information to be reference and manipulated in a computer program. They also provide a way of labeling data with a descriptive name.

聲明變量: name = "fbo"

變量的定義規(guī)范:

  1. 變量名只能是字母,數(shù)字或下劃線的任意組合;
  2. 變量名的第一個(gè)字符不能是數(shù)字;
  3. 系統(tǒng)保留字不能作為變量名and as assert break class continue def del elif else exec finally for from global if import in is lambda not or pass print raise return try while with yield

定義方式:

  • 駝峰式 AgeOfSomeone = 56
  • 下滑線式 age_of_someone = 56(官方推薦)

常量:
常量是指不變的量,python中約定俗成變量名全部大寫代表常量AGE_OF_SOMEONE = 56

用戶交互和注釋

讀取用戶輸入:

name = input("What is your name?")
print(name)

代碼注釋用#

python的基本數(shù)據(jù)類型

  • 數(shù)字
    • 整數(shù) int (python3全都是int類型)
    • 長(zhǎng)整型 long
    • 浮點(diǎn)型 float
    • 復(fù)數(shù)型
  • 字符串
    • 文本 str
    • 字節(jié) bytes
  • 布爾
    • True/False

格式化輸出

  • %s 字符串
  • %d 數(shù)字
  • %f 浮點(diǎn)數(shù)
name = input("Name:")
age = input("Age:")
job = input("Job:")
hometown = input("HomeTown:")

info = """
------------- info of %s ----------
Name:      %s
Age:          %s
Job:          %s
Hometown: %s
-------------- end -------------------
"""  % ( name, name, age, job, hometown)

運(yùn)算符

  • 算數(shù)運(yùn)算
  • 比較運(yùn)算
  • 邏輯運(yùn)算
  • 賦值運(yùn)算
  • 成員運(yùn)算
  • 身份運(yùn)算
  • 位運(yùn)算

流程控制

if...else....

猜年齡小程序guess_age.py :

age = 26

user_guess = int(input("your guess:"))

if user_guess == age:
  print("congratulation")
elif user_guess > age:
  print("Too High!")
else:
  print("Too lower!")

作業(yè):

  • 需求:
  • 匹配成績(jī)的小程序,成績(jī)有ABCDE5個(gè)等級(jí),與分?jǐn)?shù)的對(duì)應(yīng)關(guān)系 A --> 90-100 B --> 80-90 C --> 60-79 D --> 40-59 E--> 0-39
score = int(input("Please input your score:").strip())

if score >= 90 and score <= 100:
    print("A")
elif score >= 80 and score < 90:
    print("B")
elif score >= 60 and score < 80:
    print("C")
elif score >= 40 and score < 60:
    print("D")
elif score >=0 and score < 40:
    print("E")
else:
    print("輸入不正確")

while
寫個(gè)程序從0到100, 每次循環(huán)+1:

count = 0
while count <= 100:
  print("loop", count)
count += 1

練習(xí)1:
打印1到100的偶數(shù)?

num = 1
while num <= 100:
  if not num % 2:
    print(num)
  num += 1

練習(xí)2:
循環(huán)打印1-100, 第50次不打印,第60-80次, 打印對(duì)應(yīng)值的平方?

num = 1
while num <= 100:
    if num < 50 or 50< num < 60 or num > 80:
        print(num)
    elif 60 <= num <= 80:
        print(num * num)
    num += 1

死鎖:
只要條件成立就一直執(zhí)行

count = 0
while True:
  print("forever 21", count)
  count += 1

continue和break

  • break 用于完全結(jié)束一個(gè)循環(huán), 跳出循環(huán)體執(zhí)行循環(huán)后面的語句
  • continue 只終結(jié)本次循環(huán),接著執(zhí)行后面的循環(huán).

練習(xí)1:
猜年齡,允許用戶最多嘗試3次,3次都沒猜對(duì)的話,就直接出局了,如果猜對(duì)了,打印恭喜信息并退出.

# 設(shè)定年齡
age = 22
# 計(jì)數(shù)
count = 0

while count < 3:
    guess = int(input("我猜我猜我猜猜猜>>>").strip())
    if guess == age:
        print("恭喜您,回答正確!")
    elif guess > age:
        print("哎呀,整大了...")
    else:
        print("往大里整撒...")
    count += 1

練習(xí)2:
練習(xí)1升級(jí),嘗試3次沒有對(duì)的話,如果想要繼續(xù)玩的話,回答y或者Y就繼續(xù)讓玩三次,輸入n或N的話退出.

# 設(shè)定年齡
age = 22
# 計(jì)數(shù)
count = 0

while count < 3:
    guess = int(input("我猜我猜我猜猜猜>>>").strip())
    if guess == age:
        print("恭喜您,回答正確!")
    elif guess > age:
        print("哎呀,整大了...")
    else:
        print("往大里整撒...")
    count += 1
    if count == 3:
        choice = input("是否繼續(xù)?(y/n or Y/N)").strip()
        if choice == "y" or choice == "Y":
            count = 0
            continue
        elif choice == "N" or "n":
            break

while...else...
與其他語言不同,python中還有一個(gè)while...else語句;
如果while正常執(zhí)行完成,沒有被break, 就會(huì)執(zhí)行else語句.

count = 0
while count <=5:
    print("loop", count)
    #if count == 3:
    #    break
    count += 1
else:
    print("loop run over")

練習(xí)題:

  1. 簡(jiǎn)述編譯型與解釋型語言的區(qū)別抱慌,且分別列出你知道的哪些語言屬于編譯型,哪些屬于解釋型?

編譯型語言,需要先進(jìn)行編譯,生成二進(jìn)制(機(jī)器可識(shí)別的)可執(zhí)行文件才可以執(zhí)行,特點(diǎn)是開發(fā)周期長(zhǎng),代碼修改后須重新編譯,由于可執(zhí)行文件機(jī)器可以直接識(shí)別,所以運(yùn)行速度快,但是無法跨平臺(tái);代表語言是c和c++等
解析型語言不需要編譯就可以直接執(zhí)行,解析型語言的運(yùn)行依賴系統(tǒng)上的解釋器,邊解釋變運(yùn)行,所以解釋型語言開發(fā)周期短,修改靈活,但是運(yùn)行速度要低于編譯型語言;代表語言為java, python, php, ruby等

  1. 執(zhí)行 Python 腳本的兩種方式是什么?
python3 name.py
chmod u+x nam.py && ./name.py
  1. Pyhton 單行注釋和多行注釋分別用什么?

單引號(hào)標(biāo)識(shí)單行注釋, 三個(gè)引號(hào)標(biāo)識(shí)多行注釋.

  1. 布爾值分別有什么?
    FalseTrue
  2. 聲明變量注意事項(xiàng)有那些?

變量中只能包含字母,數(shù)字以及下滑線, 必須以字母或者下滑線為手寫字母,駝峰式或者下劃線式命名,避免用中文定義變量,常量約定俗成用全部大寫字母.

  1. 如何查看變量在內(nèi)存中的地址?
    id(var)
  2. 寫代碼
  • 實(shí)現(xiàn)用戶輸入用戶名和密碼,當(dāng)用戶名為 seven 且 密碼為 123 時(shí),顯示登陸成功,否則登陸失敗!
  • 實(shí)現(xiàn)用戶輸入用戶名和密碼,當(dāng)用戶名為 seven 且 密碼為 123 時(shí),顯示登陸成功,否則登陸失敗,失敗時(shí)允許重復(fù)輸入三次
  • 實(shí)現(xiàn)用戶輸入用戶名和密碼,當(dāng)用戶名為 seven 或 alex 且 密碼為 123 時(shí),顯示登陸成功,否則登陸失敗,失敗時(shí)允許重復(fù)輸入三次
count = 0
while count < 3:
    user_name = input("Name: ").strip
    user_password = input("Password: ").strip()
    if user_name == "seven" or user_name == "alex" and user_password == "123":
        print("歡迎歸來", user_name)
    else:
        print("登錄失敗,請(qǐng)重試")
    count += 1
  1. 寫代碼
    a. 使用while循環(huán)實(shí)現(xiàn)輸出2-3+4-5+6...+100 的和
    b. 使用 while 循環(huán)實(shí)現(xiàn)輸出 1,2,3,4,5, 7,8,9, 11,12
    c. 使用while 循環(huán)輸出100-50啦膜,從大到小众雷,如100塔逃,99,98...,到50時(shí)再?gòu)?循環(huán)輸出到50垃僚,然后結(jié)束
    d. 使用 while 循環(huán)實(shí)現(xiàn)輸出 1-100 內(nèi)的所有奇數(shù)
    e. 使用 while 循環(huán)實(shí)現(xiàn)輸出 1-100 內(nèi)的所有偶數(shù)
# a
sum = 0
count = 2
while count <= 100:
    if count % 2:
        sum -= count
    else:
        sum += count
    count += 1

print(sum)

# b
count = 1
while True:
    if count == 13:
        break
    else:
        print(count)
    count += 1

# c
count = 100
while count >= -1:
    if count >=50:
        print(count)
    else:
        print(49 - count)
    count -= 1

# d e
count = 0
while count < 100:
    if count % 2:
        print("奇數(shù)", count)
    else:
        print("偶數(shù)", count)
    count += 1
  1. 現(xiàn)有如下兩個(gè)變量,請(qǐng)簡(jiǎn)述 n1 和 n2 是什么關(guān)系?

n1 = 123456
n2 = n1

n2和n1的值相同,指向同一變量

  1. 制作趣味模板程序(編程題)
    需求:等待用戶輸入名字届吁、地點(diǎn)错妖、愛好,根據(jù)用戶的名字和愛好進(jìn)行任意顯示
    如:敬愛可愛的xxx疚沐,最喜歡在xxx地方干xxx
info = "敬愛可愛的%s暂氯,最喜歡在%s地方干%s"

user_name = input("Name:>>>").strip()
place = input("Place:>>>").strip()
like = input("Like:>>>").strip()

print(info % (user_name, place, like))
  1. 輸入一年份,判斷該年份是否是閏年并輸出結(jié)果亮蛔。(編程題)
    注:凡符合下面兩個(gè)條件之一的年份是閏年痴施。 (1) 能被4整除但不能被100整除。 (2) 能被400整除。
year = int(input("請(qǐng)輸入年份:>>>").strip())

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print("年份", year, "是閏年")
else:
    print("年份", year, "不是閏年")
  1. 假設(shè)一年期定期利率為3.25%晾剖,計(jì)算一下需要過多少年锉矢,一萬元的一年定期存款連本帶息能翻番?(編程題)
count = 0
bill = 1
fee = 0.0325
while True:
    count += 1
    bill *= (1 + fee)
    print(bill)
    if bill >= 2:
        print(count,"年后能連本帶利息翻翻")
        break

作業(yè)

編寫登陸接口

基礎(chǔ)需求:

  • 讓用戶輸入用戶名密碼
  • 認(rèn)證成功后顯示歡迎信息
  • 輸錯(cuò)三次后退出程序

升級(jí)需求:

  • 可以支持多個(gè)用戶登錄 (提示齿尽,通過列表存多個(gè)賬戶信息)
  • 用戶3次認(rèn)證失敗后沽损,退出程序,再次啟動(dòng)程序嘗試登錄時(shí)循头,還是鎖定狀態(tài)(提示:需把用戶鎖定的狀態(tài)存到文件里)
import os

user_list = [
    ["xiaoli", "123"],
    ["zhangsan", "123"]
    ]
count = 0

flag = 0

print("開始".center(80,"-"))
while count < 3:
    # 用戶輸入賬號(hào)密碼
    name = input("請(qǐng)輸入您的賬號(hào):>>>").strip()
    password = input("請(qǐng)輸入您的密碼:>>>").strip()

    # 判斷鎖定文件是否存在
    if os.path.isfile(name):
        print(name, "您已經(jīng)被鎖定,請(qǐng)離開!")

        
    
    if [name, password] in user_list:
        print("歡迎歡迎,熱烈歡迎", name)
        break
    else:
        buff = name
        print("輸入錯(cuò)誤!")
        # 判斷是否三次輸入的都是同一用戶
        # 如果是,則鎖定用戶
        if count == 0:
            buff = name
        elif count == 1:
            if buff == name:
                flag = 1
        else:
            if flag == 1 and name == buff:
                print("您已經(jīng)被鎖定,請(qǐng)離開!")
                with open(name, "w") as f:
                    f.write("lock")
    count += 1

print("結(jié)束".center(80,'-'))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绵估,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卡骂,更是在濱河造成了極大的恐慌国裳,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件全跨,死亡現(xiàn)場(chǎng)離奇詭異缝左,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)浓若,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門渺杉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挪钓,你說我怎么就攤上這事是越。” “怎么了碌上?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵倚评,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我馏予,道長(zhǎng)天梧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任霞丧,我火速辦了婚禮呢岗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚯妇。我一直安慰自己,他們只是感情好暂筝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布箩言。 她就那樣靜靜地躺著,像睡著了一般焕襟。 火紅的嫁衣襯著肌膚如雪陨收。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音务漩,去河邊找鬼拄衰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛饵骨,可吹牛的內(nèi)容都是我干的翘悉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼居触,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼妖混!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起轮洋,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤制市,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后弊予,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祥楣,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年汉柒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了误褪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竭翠,死狀恐怖振坚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斋扰,我是刑警寧澤渡八,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站传货,受9級(jí)特大地震影響屎鳍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜问裕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一逮壁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粮宛,春花似錦窥淆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至筷畦,卻和暖如春词裤,著一層夾襖步出監(jiān)牢的瞬間刺洒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工吼砂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逆航,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓渔肩,卻偏偏與公主長(zhǎng)得像因俐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赖瞒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容