Python 第1周 - Python基礎-python入門\變量\用戶輸入\循環語句的使用

內容

  1. Python介紹
  2. 安裝
  3. Hello World程序
  4. 變量
  5. 用戶輸入
  6. if..else流程判斷
  7. while循環 
  8. for循環
  9. 做業需求

 

 3Python入門

 在後面的操做中,主要以python 3.4 版本爲主:python

Python腳本執行linux

1  在linux 下建立一個文件叫hello.py,並輸入:
2 print("hello world ")
3 而後執行命令:python hello.py ,輸出:
4 $ python hello.py
5 Hello World!

 

 指定解釋器程序員

上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。sql

若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py ,那麼就須要在 hello.py 文件的頭部指定解釋器shell

1 #!/usr/bin/python env
2 print ("hello world")

執行前:chmod +x hello.pywindows

就能夠以下執行:./hello.py 便可。測試

 

在交互器中執行編碼

能夠直接調用python自帶的交互器運行代碼 :spa

 

四、變量\字符編碼

 一、聲明變量:設計

#_*_coding:utf-8_*_

name = 'Chen"
print name

 解析:#_*_coding:utf-8_*_ 指定字符編碼 ,name  爲變量名, 變量名的值爲:「Chen」 ;print 打印

 

二、變量的賦值:

1 name  = "chen"
2 name2 = name
3  
4 print ("一、" ,name,name2)
5  
6 name = "ChcnChangQing"
7 print ( "二、",name,name2)

結果打印:

 解析:給name 賦一個值常量固定值,name2等於name 的值,同時python內存池也給name 分配了一個模塊值, name、name2的指針指向同一個值。 因此第一次打印,name、name2的值是同樣的;第二次從新指定name的值是,python會劃分一個地址池,name的指針發生改變指向新的地址池,這個時候name2並不會隨着name的改變而改變,仍是指向原理的地址池。因此第二次打印出來的結果值,name與name2不同。

 

三、變量定義規則:

  • 變量名只能是字母、數字或下劃線的任意組合,注意變量名稱數字不能放在前面 。如:2ff = "chen"  格式錯誤;_2ff = "chen" ; ff2 = "chen"  這種類格式是能夠正常識別的
  • 變量名的第一個字符不能是數字
  • 如下關鍵字不能作爲變量名(python規定):

   ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

 

四、字符編碼與二進制:

A、數字與二進制的換算:

描述:定位數字的值,往前去累加。噹噹前數值大於排列數字就在下方標1 如:165 小於256 大於128,因此在128下標1,再往前推算,排列的數據小於剩下的數值 (165-128),下方標零,截止排列數據的和等於165=128+32+4+1,從中推算出二進制爲:10100101

 

B、字符編碼

 python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認Ascill)

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。

 

 

 關於中文的發展(摘錄):

爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。  

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。

從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。

有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼

 

ASCII碼沒法將世界上的各類文字和符號所有表示,因此新出一種能夠表明全部字符和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,

因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),以下代碼:

報錯:Ascii碼沒法表示中文

1
2
3
#!/usr/bin/env python
  
print  "你好,世界"

改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:

1
2
3
4
#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
print  "你好,世界"

 

五、用戶輸入

 一、註釋分兩種:

  • 註釋當行: # 被註釋內容
  • 註釋多行:"""被註釋的內容""" 

舉例:能夠利用多行註釋,進行多行打印 :(博客園添加不了表格。。。。)

example = """

    OS = "linux\windows"
    TOOL = "Redis\Mysql"
"""
print (example)

執行效果:

    OS = "linux\windows"
    TOOL = "Redis\Mysql"

 

 二、 用戶輸入:Iput使用

A、 格式化輸出的幾種形式 

  備註:+  號拼接;%s/%d/%f 賦值 ; format 賦值; 使用{} 按照數字值拼接。舉例以下:

 a、+號的拼接:

舉例: 

name = input( "name:")
income = input( "income:")
info = '''---informartion of: ''' + name + """ income:""" + income
print (info)

 結果:

name: chen
income: 555
---informartion of: chen income:555

解析:一個個字段的相加打印

 

b、% 賦值(%就至關於shell中的$)

舉例: 

name = input( "name:")
income = input( " income:")
job =  input( "job:")
info = """
    -------informaion  of  name:%s-----
    name:%s
    income:%s
    job:%s
""" % (name,name,income,job)
print (info)

結果:

name: chen
income: 5000
job: IT
    -------informaion  of  name:chen-----
    name:chen
    income:5000
    job:IT

 解析:%s 針對於字符串,若是是是int 類型對應的是 %d,浮點數爲 %f。注意數據類型的轉換。

判斷一個值的類型  type('值') ,會得出這個值的類型 <type 'str'> 。str 字符串、int 數字、dict 字典、 list  列表

舉例: 

name = raw_input( "name:")

print type(name)

 返回結果

name: chen

<type 'str'>  得出參數值的類型爲字符串

 

 c、 format 賦值

舉例: 

name = input( "name:")
income = int( input( "income:"))
job =   input( "job:")
info = '''
-------informaion  of {_name}-----
name:{_name}
income:{_income}
job:{_job}
''' .format ( _name=name,
              _income=income,
             _job=job)
print (info)

結果:

name: CQ Chen
income: 55000
job: IT
-------informaion  of CQ Chen-----
name:CQ Chen
income:55000
job:IT

 解析:使用format賦值,不用考慮數據類型

 

 d、 使用{} 按照數字順序拼接

舉例: 

name = input( "name:")
income = int(input( "income:"))
job =  input( "job:")
info = '''
-------informaion  of {0}-----
name:{1}
income:{2}
job:{3}
''' % (name,name,income,job) 注意數字對應每一個參數值
print (info)

 結果:

name: Chen
income: 55000
job: IT
-------informaion  of Chen-----
name:Chen
income:55000
job:IT

 

B、使用getpass模塊隱藏密碼輸入

舉例:密碼可見 

username = input( "name:")
password = input( "passwd:")
print (username,password)

 結果:

name: CQ
passwd: chen123  (手動輸入時,密碼可見)
CQ chen123

 

 舉例:密碼不可見 (使用getpass)

1
#/usr/bin/env python
2
#--*-- code:utf-8 --*--

4 import getpass
5 username = input("name:")
6  
7 password = getpass.getpass("請輸入密碼:")
8
9 print (username,password)

結果:

1 找到執行所在的目錄
2 C:\Users\chen>cd /d D:\python\51CTO\day1
3 執行文件、輸入用戶名、輸入密碼、並打印
 D:\python\51CTO\day1>python hello.py 
5  name:chen
6  passwd:
7  ('chen', 'chen')                  

getpass 有待驗證,在PyCharm中測試不成功。須要在liunx 系統中、window系統的cmd中驗證。

 

C、Input 在 python2與python3 中的區別:

 python2  有input\raw_input;pyhton3 只有Input。py2 中的raw_input功能等同於py3中的input。要避免在PYthon2 中使用Input ,raw_input與及python3中input 輸入的永遠是字符串。

 Pyhton2 的Input輸入的是什麼格式,就是什麼格式。在PY2中的測試:

舉例:錯誤

name = input( "name:")

print name

返回結果:

name:Abc
Traceback (most recent call last):
  File "D:/python/51CTO/day1/py2input.py", line 2, in <module>
    name = input("name:")
  File "<string>", line 1, in <module>
NameError: name 'Abc' is not defined

執行結果:Abc 沒有被定義

 

 舉例:改正 (把Abc給定義一個數值)

Abc = 123456
name = input( "name:")
print name

返回結果:

name:Abc  

123456

輸入Abc 把 Abc 的值給打印出來。結論:Python2 中要使用Input 要先把輸入值給定義好。

 

6、if..else語句流程判斷

 一、判斷用戶登陸驗證

 舉例 if..else 結構:

#Author:ChenChangQing 
name =  "chen"
passwd =  "chen123"
username = input( "name:")
password = input( "passwd:")
#同時知足用戶、密碼相等才能登錄
if username == name  and password == passwd:
    print ( "Welcome login in !!!! {_name} ".format( _name=name) )
else:
    print ( "User or passwd Error")

結果:

錯誤打印

name: chen
passwd :123
User or passwd Error

正確打印

name: chen
passwd: chen123
Welcome login in !!!! chen 

 

二、猜數字:

舉例 if..elif..else 結構:

#定義固定數字

number =  25
#輸入數字
guess_number =  int(input( "Please enter your number:"))
#if判斷
if guess_number == number:
     print ( "Your guess it!!")
elif guess_number < number:
     print ( "The number is smaller!!")
else:
     print ( "The number is bigger!!")

結果:

Please enter your number :26

The number is bigger!

 

7、while 循環

 一、死循環模式

舉例: 

1 #定義計數器
2 count = 0
3 while True:
4 print("count:",count)
5   #count += 1 等同於count = count + 1,計算步長
6

count +=1 

 結果無限打印,環境中杜絕死循環。

二、簡單的從0打印到5:

舉例: 

1  #定義計數器
2  count = 0
3  while count < 6:
4   print("count",count)
5   count +=1 

結果:

1 count: 0
..  ..


三、接着猜數字:要求只容許用戶猜三次,要求猜對直接退出。三次都都猜不對,打印文字告知用戶錯誤。

舉例: 

number =  25  #定義數值
count =  #計算步長
while count  < 3 #當count小於3執行如下代碼
    guess_number = int(input(" Please enter your number:"))
    if guess_number == number:
        print ("Your guess it!!")
        break  #猜對數字就直接退出
    elif guess_number < number:
        print ("The number is smaller!!")
    else:
        print (" The number is bigger!!")
    count += 1
else:
    print (" Get Out!!!")  #三次猜不對直接退出

結果:

Please enter your number: 34
The number is bigger!!
Please enter your number: 23
The number is smaller!!
Please enter your number: 24
The number is smaller!!
Get Out!!!

 

 四、接着上面的列子,猜數字。猜夠三次還想繼續玩: 

 舉例:

#Author:ChenChangQing
number = 25  #定義數值
count = 0  #計算步長
while count < 3 :  #當count小於3執行如下代碼
    guess_number = int(input(" Please enter your number:"))
    if guess_number == number:
        print (" Your guess it!!")
        break  #猜對數字就直接退出
    elif guess_number < number:
        print (" The number is smaller!!")
    else:
        print (" The number is bigger!!")
    count += 1
     #三次都猜不對,詢問用戶是否繼續
    if count == 3:
        continue_go_on = int(input( "Do you  want to guessing...?Please enter number:"))
        if continue_go_on != '10000000000':  #只要輸入不等於10000000000繼續執行
            count = 0
else:
    print ("Get Out!!!")  #三次猜不對直接退出

 結果:

Please enter your number :4
The number is smaller!!
Please enter your number :6
The number is smaller!!
Please enter your number :8
The number is smaller!!
Do you  want to guessing...?Please enter number :12
Please enter your number :25
Your guess it!!

 

8、for循環

rang(10)  #表示從零開始計算打印10個數:0-9

rang(1,10) # 表示從1開始打印,打印:1-9

rang(1,10,3) #表示從1開始打印,相隔3個數字打印一次,數字小於10

 

舉例:

for i in range(5):
    print ( "number1" ,i)
for i in range(1,5):
    print ( "number2 ",i)

for i in range(1,10,3):
    print ( "number3" ,i)

輸出:

number1 0
number1 1
number1 2
number1 3
number1 4
 
number2 1
number2 2
number2 3
number2 4
 
number3 1
number3 4
number3 7

 

循環中break and continue 的用法

備註:break結束本次循環、continue跳出本次循環進入下次循環。

 一、遇到小於6的循環次數就不走了,直接跳入下一次循環

for i in range(10):
    if i <= 6:
        continue        #不往下走了,直接進入下一次循環
    print ( "number1",i)

輸出:

 number1 7

number1 8
number1 9

 二、遇到大於4 的循環次數就不走了,直接退出

for i in range(10):
    if i > 4:
        break        #不往下走了,直接跳出整個循環
    print (" number2",i)

 輸出:

number2 0
number2 1
number2 2
number2 3
number2 4

 

9、做業需求

 做業一:編寫登錄接口

  • 輸入用戶名密碼
  • 認證成功後顯示歡迎信息
  • 輸錯三次後鎖定

 經過其餘的方方式編寫

相關文章
相關標籤/搜索