Python自動化開發S14 Day1 - Python基礎1

1、環境準備

一、下載Python 3.6.8

下載地址:https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exepython

二、安裝Python(僅對重點步驟說明,未提到的部分Next便可。)

 

PS:動畫安裝過程參考shell

三、開發工具PyCharm

a) 軟件下載編輯器

https://download.jetbrains.8686c.com/python/pycharm-professional-2018.3.5.exe函數

b) 安裝軟件(僅對重點步驟說明,未提到的部分Next便可。)工具

c) 中文漢化oop

- 漢化包http://dlsw.91donkey.com/software/source/pycharm/pycharm2018-hhb.zip開發工具

- 進入C:\Program Files\JetBrains\PyCharm 2018.3.5\lib目錄字體

- 用7zip或WinRAR工具打開resources_en.jar文件優化

- 進入messages目錄動畫

- 將漢化文件覆蓋原文件

- 將resources_en.jar文件名改成resources_cn.jar

d) 註冊

- 修改hosts文件綁定域名C:\Windows\System32\drivers\etc\hosts

0.0.0.0 account.jetbrains.com

- 打開PyCharm軟件

 2、建立項目及優化軟件設置

 一、新建項目

 二、修改默認字符集編碼爲utf-8

- 文件 - 設置 - 編輯器 - 文件編碼

三、設置Python默認模板頭部信息

- 文件 - 設置 - 編輯器 - 文件和代碼模板 - Python Script

四、修改字體大小(根據實際狀況修改)

- 文件 - 設置 - 編輯器 - Font

 五、解決PyCharm卡頓的問題

- 顯示編輯器內存佔用

設置 - 外觀和行爲 - 外觀 - 顯示內存指示的選項勾上,在右下角就顯示了當前PyCharm已佔用內存狀況。

- 修改默認的vm memory

幫助 - 查找操做 - 輸入vm - 打開"編輯自定義VM選項"

- 首次打開可能會提示文件不存在,點擊建立便可。

- 編輯pycharm64.exe.vmoptions文件,將 -Xms改成1024m, -Xmx改成2048m,保存文件,關閉程序,從新打開pycharm,在右下角發現vm memory顯示的內存上限已擴充到了2048m。(參數解釋:-Xms 堆內存的最小大小,-Xmx 堆內存的最大大小)

六、顯示工具欄

視圖 - 工具欄

七、修改文件默認換行符

 

 

3、小試牛刀

一、Hello World!

#!/usr/bin/env python
 
print("Hello World!")

 二、變量  

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time: '2019/3/27 11:36'

name = "devil"
name2 = name
print("name,name2")

name = "jack"
print(name,name2)

4、註釋

單行註釋:# 被註釋的內容

多行註釋(三個雙引號或三個單引號):""" 被註釋的內容 """

5、用戶輸入

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

name = input("What's your name: ")
print("Hello" + name)

格式化輸出:方式一(字符串的拼接,在內存裏開闢多塊空間,效率低下,非必要不建議使用)

name = input("name: ")
age = input("age: ")
job = input("job: ")

msg = '''
------ info of ''' + name + ''' ------
Name:''' + name + '''
Age: ''' + age + '''
Job: ''' + job

print(msg)

格式化輸出:方式二

name = input("name: ")
age = input("age: ")
job = input("job: ")

msg = '''
------ info of $s ------
Name: $s
Age: %s
Job: %s
''' % (name,name,age,job)

print(msg)

格式化輸出:方式三

name = input("name: ")
age = input("age: ")
job = input("job: ")

msg = '''
------ info of {_name} ------
Name: {_name}
Age: {_age}
Job: {_job}
'''.format(_name=name,_age=age,_job=job)

print(msg)

格式化輸出:方式四(不夠清晰,不建議使用)

name = input("name: ")
age = input("age: ")
job = input("job: ")

msg = '''
------ info of {0} ------
Name: {0}
Age: {1}
Job: {2}
'''.format(name,age,job)

print(msg)

利用getpass模塊中的getpass方法,實現輸入密碼時密文不可見的效果。

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

import getpass

# 將用戶輸入的內容賦值給pwd變量
pwd = getpass.getpass("請輸入密碼: ")

# 打印輸入的內容
print(pwd)

注:此模塊在pycharm中沒法使用

6、表達式if...else

- 用戶登陸驗證

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

import getpass

name = input("請輸入用戶名: ")
pwd = getpass.getpass("請輸入密碼: ")

if name == "devil" and pwd == "abc123":
    print("Welcome user {_name} login...".format(_name=name))
else:
    print("Invalid username or password!")

- 猜年齡遊戲

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

my_age = 28

user_input = int(input("input your guess num: "))

if user_input == my_age:
    print("yes, your got it!")
elif user_input > my_age:
    print("think smaller!")
else:
    print("think bigger!")

7、表達式while loop

- 死循環

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

while True:
    print("無限循環... ",count)
    count = count + 1        # count +=1

- 循環100次退出

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

count = 0
while True:
    print("循環... ",count)
    count +=1
    if count == 100:
        print("已循環100次,自動退出循環.")
        break

- 如何實現讓用戶不斷的猜年齡,但只給最多3次機會,再猜不對就退出程序。 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
my_age = 28

count = 0
while count < 3:
    user_input = int(input("input your guess num: "))
    if user_input == my_age:
        print("yes, your got it!")
        break
    elif user_input > my_age:
        print("think smaller!")
    else:
        print("think bigger!")
    count +=1    # 每次loop 計數器+1
else:
    print("猜了這麼屢次都不對,你個笨蛋.")

8、表達式for loop

- 循環10次

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

for i in range(10):
    print("loop ",i)

run result:

loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
loop 7
loop 8
loop 9

- 每隔2個數打印

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

for i in range(0,10,2):
    print("loop ",i)

run result:

loop 0
loop 2
loop 4
loop 6
loop 8

- 仍是上面猜數的遊戲,當循環到3次的時候詢問是否繼續

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
my_age = 28
 
count = 0
while count < 3:
    user_input = int(input("input your guess num: "))
    if user_input == my_age:
        print("yes, your got it!")
        break
    elif user_input > my_age:
        print("think smaller!")
    else:
        print("think bigger!")
    count +=1    # 每次loop 計數器+1
    if count == 3:
        countine_confirm = input("do you want to keep guessing...?")
        if countine_confirm != "n" and countine_confirm != "no":
            count = 0

9、break、continue和return的用法和區別

一、break:直接結束一個循環,跳出循環體。break之後的循環體中的語句不會繼續執行,循環體外面的會執行。

二、continue:停止本次循環,繼續下次循環。continue之後的循環體中的語句不會繼續執行,下次循環繼續執行,循環體外面的會執行。

三、return:return的功能是結束一個方法。一旦在循環體內執行return,將會結束該方法,循環天然也隨之結束。與continue和break不一樣的是,return直接結束整個方法,無論整個ruturn處於多少層循環以內。

參照文章:https://blog.csdn.net/zyw0101/article/details/84649397

10、Python2.x 與 Python3.x 的區別

一、字符編碼

Python2默認爲ASCII編碼,而Python3默認爲Unicode編碼

二、print函數

- Python2中print爲class

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'

run result:

Python 2.7.15
Hello, World!
Hello, World!
text print more text on the same line

- Python3中print爲一個函數,必須用括號括起來。

print('Python', python_version())
print('Hello, World!')
print("some text,", end="")
print(' print more text on the same line')

run result:

Python 3.6.8
Hello, World!
some text, print more text on the same line

三、經過input()解釋用戶的輸入

- Python2的input獲得的是int類型,raw_input獲得的是str類型。

注:python2.x中要避免使用input()

>>> num = input("enter a number: ")
enter a number: 123

>>> type(num)
<type 'int'>

###### 分隔符 ######
>>> num = raw_input("enter a number: ")
enter a number: 123

>>> type(num)
<type 'str'>

###### 分隔符 ######
>>> name = input("enter your name: ")
enter your name: devil

Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
name = input("enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'devil' is not defined

- Python3中input獲得的是str類型

>>> num = input("enter a number: ")
enter a number: 123

>>> type(num)
<class 'str'>

四、整除

- Python2中帶上小數點/表示真除,%表示取餘,//結果取整

print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0

run result:

Python 2.7.15
3 / 2 = 1
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

- Python3中/表示真除,%表示取餘,//結果取整

print('Python', python_version())
print('3 / 2 =', 3 / 2)
print('3 // 2 =', 3 // 2)
print('3 / 2.0 =', 3 / 2.0)
print('3 // 2.0 =', 3 // 2.0)

run result:

Python 3.6.8
3 / 2 = 1.5
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

11、做業

- 做業一:博客

博客地址:https://www.cnblogs.com/91donkey/

- 做業二:編寫登陸接口

一、輸入用戶名密碼

二、認證成功後顯示環境信息

三、輸錯三次後鎖定

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time: '2019/3/29 10:37'

f = open("d:\\user.txt",'r')
authfile = f.read()
count = 0
while count < 3:
    username = input("請輸入用戶名: ")
    try:
        f = open("d:\\lock.txt", 'r')
        lock_user = (f.readline()).strip()
        if username == lock_user:
            print("輸入的帳戶因屢次嘗試登陸,已被鎖定......請與管理員進行聯繫!")
            break
        f.close()
    except:
        print("",end="")
    password = input("請輸入密碼: ")
    if username == authfile.split()[0] and password == authfile.split()[1]:
        print("登陸成功,歡迎 %s 回來..." % username)
        break
    else:
        if count == 2:
            print("嘗試登陸錯誤次數過多,帳戶被鎖定,請稍後重試...")
            f = open("d:\\lock.txt", 'a')
            f.write(username+"\n")
            f.close()
        else:
            print("Invalid username or password!")
    count +=1
f.close()

優化空間:當user.txt和lock.txt中存在多條記錄的時候該如何判斷。

- 做業三

一、三級菜單

二、可依次選擇進入各子菜單

三、所需新知識點:列表、字典

相關文章
相關標籤/搜索