day1(老男孩-Python3.5-S14期全棧開發)

做者:趙俊            發佈日期:2019/10/18python

1、第一個python程序app

一、在解釋器下寫hello world程序運行,與運行外部文件方法oop

 運行外部文件,必須在相應位置建立一個python文件,裏面寫上語句優化

 二、#!/usr/bin/evn python的做用,告訴操做系統使用的解釋器是什麼編碼

#!/usr/bin/python至關於寫死了python路徑;
#!/usr/bin/env python會去環境設置尋找python目錄,推薦這種寫法spa

2、變量操作系統

一、pycharm工程新建文件,模板代碼設置命令行

 二、變量的內存管理3d

 

 

 三、變量定義的規則code

  • 變量只能是字母、數字或下劃線的任意組合
  • 變量的第一個字符不能是數字
  • 如下關鍵字不能聲明爲變量

   ['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']

 

3、字符編碼的區別與介紹

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

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

 

 二、關於中文編碼

簡體中文的GB2312和用於繁體中文的big5

從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的

三、國際編碼

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼

UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存

四、# -*- coding: utf-8 -*-

python 2.x上寫中文要告訴解釋器編碼格式

python 3.x支持unicode編碼

4、用戶輸入及格式化輸出

一、註釋

單行註釋:#號後面跟要註釋的內容

多行註釋:'''被註釋內容'''                三個單引號或雙引號均可以

多行註釋能夠用來打印多行,以下圖,左側爲源碼,右側爲輸出

 

 二、用戶輸入

1 username = input("請輸入用戶名")
2 password = input("請輸入密碼")
3 print(username,password)

三、格式化輸出

用+號拼接字符串,不建議使用,佔用內存多

1 name = input("請輸入用戶名")
2 age = input("請輸入年齡")
3 info = '''
4 ----------info of '''+name+'''----------
5 name:'''+name+'''
6 age:'''+age
7 print(info)

用%s或%d或f%,%s是接收字符串的,%d是接收數值的,%d是接收浮點。input輸入的均爲字符串,全部在用%d時,必須用int()強制類型裝換爲整型

1 name = input("請輸入用戶名")
2 age = input("請輸入年齡")
3 info = '''
4 ----------info of %s----------
5 name:%s
6 age:%s
7 '''%(name,name,age)
8 print(info)

 使用format格式化輸出

1 name = input("請輸入用戶名")
2 age = input("請輸入年齡")
3 info = '''
4 ----------info of {_name}----------
5 name:{_name}
6 age:{_age}
7 '''.format(_name=name,_age= age)
8 print(info)

 使用format格式化輸出另外一種

1 name = input("請輸入用戶名")
2 age = input("請輸入年齡")
3 info = '''
4 ----------info of {0}----------
5 name:{0}
6 age:{1}
7 '''.format(name,age)
8 print(info)

 

5、if else流程判斷

一、密文輸入

導入標準庫import getpass。這個在pychar中沒效果,用命令行就能夠實現

1 import getpass
2 name = input("請輸入用戶名")
3 age = getpass.getpass("請輸入年齡")
4 info = '''
5 ----------info of {0}----------
6 name:{0}
7 age:{1}
8 '''.format(name,age)
9 print(info)

 

 二、if語句基本結構

1 _username = "zhaojun"
2 _password = "123"
3 username = input("請輸入用戶名:")
4 password = input("請輸入密碼:")
5 
6 if _username == username and _password == password:
7     print("welcome {name} login...".format(name = _username))
8 else:
9     print("invalid username or password")

三、if elif語句      猜數字

1 _number = 33
2 number = int(input("猜數字:"))
3 
4 if number == _number:
5     print("恭喜你,猜對了!")
6 elif number > _number:
7     print("猜大了!")
8 else:
9     print("猜小了!")

 

6、while循環

一、while循環,改進循環猜數字3次

 1 _number = 33
 2 count = 0
 3 while count<3:
 4     number = int(input("猜數字:"))
 5     if number == _number:
 6         print("恭喜你,猜對了!")
 7         break
 8     elif number > _number:
 9         print("猜大了!")
10     else:
11         print("猜小了!")
12     count +=1

二、while else。改進三次後提示猜次數過多

 1 _number = 33
 2 count = 0
 3 while count<3:
 4     number = int(input("猜數字:"))
 5     if number == _number:
 6         print("恭喜你,猜對了!")
 7         break
 8     elif number > _number:
 9         print("猜大了!")
10     else:
11         print("猜小了!")
12     count +=1
13 else:
14     print("已經猜了三次了,再見!")

 三、猜數字任性玩改進

 1 _number = 33
 2 count = 0
 3 while count<3:
 4     number = int(input("猜數字:"))
 5     if number == _number:
 6         print("恭喜你,猜對了!")
 7         break
 8     elif number > _number:
 9         print("猜大了!")
10     else:
11         print("猜小了!")
12     count +=1
13     if count == 3:
14         confirm = input("你是否繼續猜數字?按回車從新開始,按n爲退出")
15         if confirm != "n":
16             count = 0

 

7、for循環

 一、基本語法

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

二、用for循環改進猜數字

 1 _number = 33
 2 for i in range(3):
 3     number = int(input("猜數字:"))
 4     if number == _number:
 5         print("恭喜你,猜對了!")
 6         break
 7     elif number > _number:
 8         print("猜大了!")
 9     else:
10         print("猜小了!")
11 else:
12     print("已經猜了三次了,再見!")

 三、range裏面的參數分別爲,最小值,最大值,步長

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

 

 8、課後做業

一、做業二:編寫登錄接口

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

在代碼目錄創建三個文本文件以下(最後一個字符串要帶換行,由於前幾行都有換行,爲了比較時比如較,也就給最後一個加換行):

 

程序流程圖:

 代碼:

 1 # 是否鎖定標誌
 2 is_locked = 0
 3 # 登陸三次計數
 4 count = 0
 5 #用戶名是否存在標誌
 6 user_exist = 0
 7 num = 0
 8 while count<3:
 9     print("----------請登陸----------")
10     username = input("請輸入用戶名:")
11     password = input("請輸入密碼:")
12     count+=1
13     locked_file = open("locked.txt", "r")
14     locked_list = locked_file.readlines()
15     for i in range(len(locked_list)):
16         if username + "\n" == locked_list[i]:
17             is_locked = 1
18             break
19     if is_locked == 0:
20         locked_file.close()
21         user_file = open("username.txt", "r")
22         user_list = user_file.readlines()
23         for i in range(len(user_list)):
24             if username+"\n" == user_list[i]:
25                 user_exist = 1
26                 num = i
27                 break
28         if user_exist == 1:
29             user_file.close()
30             pass_file = open("password.txt", "r")
31             pass_list = pass_file.readlines()
32             if password + "\n" == pass_list[num]:
33                 pass_file.close()
34                 print("恭喜,登陸成功!")
35                 break
36             else:
37                 pass_file.close()
38                 print("密碼錯誤!")
39                 continue
40         else:
41             user_file.close()
42             print("用戶名不存在,請重新輸入!")
43     else:
44         locked_file.close()
45         print("用戶被鎖定,請聯繫管理員解鎖!")
46 else:
47     locked_file = open("locked.txt", "a")
48     locked_file.write(username+"\n")
49     locked_file.close()
50     print("輸入超過三次,用戶被鎖定!")

 

二、做業三:多級菜單
  • 三級菜單
  • 可依次選擇進入各子菜單
  • 所需新知識點:列表、字典

程序流程圖:

 

 

代碼:

 1 #Author:ZHJ
 2 phone_model_huawei = {
 3     "Mate30系列":""
 4     ,"nova 5 Pro系列":""
 5     ,"暢享9系列":""
 6 }
 7 phone_model_apple = {
 8     "iPhone 11系列":""
 9     ,"iPhone X系列":""
10     ,"iPhone 8系列":""
11 }
12 phone_model_samsung = {
13     "GALAXY Note 10系列":""
14     ,"GALAXY Note 9系列":""
15     ,"GALAXY S8系列":""
16 }
17 
18 computer_modle_lenove = {
19     "啓天M415系列":""
20     ,"揚天T4900d系列":""
21     ,"擎天T510A系列":""
22 }
23 computer_modle_dell = {
24     "成銘 3980MT系列":""
25     ,"Inspiron 靈越 3670系列":""
26     ,"Vostro 成就 3670系列":""
27 }
28 computer_modle_hp = {
29     "光影精靈系列":"",
30     "暗影精靈5系列":"",
31     "戰99 Pro G1 MT系列":""
32 }
33 
34 phone_brand = {
35     "華爲":phone_model_huawei,
36     "蘋果":phone_model_apple,
37     "三星":phone_model_samsung
38 }
39 computer_brand = {
40     "聯想":computer_modle_lenove,
41     "戴爾":computer_modle_dell,
42     "惠普":computer_modle_hp
43 }
44 
45 commodity = {
46     "手機":phone_brand,
47     "電腦":computer_brand
48 }
49 
50 num = 1
51 input_commodity = ""
52 input_brand = ""
53 input_modle = ""
54 while True:
55     if num == 1:
56         print("----------請輸入要查詢的商品----------")
57         print(list(commodity.keys()))
58         input_commodity = input("請選擇一個商品:")
59         if input_commodity in commodity:
60             num += 1
61         elif input_commodity =="q":
62             break
63         elif input_commodity =="b":
64             continue
65         else:
66             print("查詢商品不存在,請從新輸入!")
67             continue
68     elif num == 2:
69         print("----------請輸入要查詢的品牌----------")
70         print(list(commodity.get(input_commodity).keys()))
71         input_brand = input("請選擇一個品牌:")
72         if input_brand in commodity.get(input_commodity):
73             num += 1
74         elif input_brand =="q":
75             break
76         elif input_brand =="b":
77             num-=1
78             continue
79         else:
80             print("查詢品牌不存在,請從新輸入!")
81             continue
82     elif num == 3:
83         print("----------請輸入要查詢的型號----------")
84         print(list(commodity.get(input_commodity).get(input_brand).keys()))
85         input_modle = input("請選擇一個型號:")
86         if input_modle in commodity.get(input_commodity).get(input_brand):
87             print("----------**********----------")
88             print("謝謝使用,查詢完成!")
89             print("----------**********----------")
90             break
91         elif input_modle =="q":
92             break
93         elif input_modle =="b":
94             num-=1
95             continue
96         else:
97             print("查詢品牌不存在,請從新輸入!")
98             continue
相關文章
相關標籤/搜索