1.簡述編譯型與解釋型語言的區別,且分別列出你知道的哪些語言屬於編譯型,哪些屬於解釋型?
高級語言分為編譯型與解釋型兩種,分別從執行速度、開發效率、跨平台性三個方面說它們的區別。 編譯型語言因為執行的是機器碼文件,所以執行速度快且不依賴解釋器,但每次修改源代碼都需要重新編譯,所以導致開發效率低,不同的操作系統,調用的底層機器指令不同,所以跨平台性差。 解釋型語言需要解釋器邊把源文件解釋成機器指令邊交給cpu執行,所以執行速度要比編譯型慢很多,但是每次修改時立刻見效,所以開發效率很高,解釋器已經做好了對不同操作系統的交互處理,天生跨平台。 C/C++/C#/Delphi/Go屬於編譯型,PHP/Java/JavaScript/Python/Perl/Ruby屬於解釋型。
2.執行 Python 腳本的兩種方式?
(1).交互方式:啟動python解釋器,執行命令 (2).腳本方式:Python xxx.py 或者 chmod +x xxx.py && ./xxx.py
3.Python單行注釋和多行注釋分別用什么?
單行注釋:#要注釋內容 多行注釋:"""要注釋內容""" 或者'''要注釋內容'''
4.聲明變量注意事項有哪些?
(1).變量由數字、字母和下划線組成 (2).變量不能以數字開頭 (3).變量不能使用Python關鍵字 (4).變量區分大小寫
模塊名,包名 :小寫字母, 單詞之間用_分割。 類名:首字母大寫。 全局變量: 大寫字母, 單詞之間用_分割。 普通變量: 小寫字母, 單詞之間用_分割。 函數: 小寫字母, 單詞之間用_分割。 實例變量: 以_開頭,其他和普通變量一樣 。 私有實例變量(外部訪問會報錯): 以__開頭(2個下划線),其他和普通變量一樣 。 專有變量: __開頭,__結尾,一般為python的自有變量(不要以這種變量命名)。
5.如何查看變量在內存中的地址?
id(變量名)
6.寫代碼
a. 實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗!
#!/usr/bin/env python #-*- coding:utf-8 -*- import getpass _username = "seven" _password = "123" username = input("username:") password = getpass.getpass("password:") if username == _username and password == _password: print("hello,seven") else: print("error,input again")
b. 實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重復輸入三次
#!/usr/bin/env python #-*- coding:utf-8 -*- import getpass _username = "seven" _password = "123" count = 0 while count < 3: count += 1 username = input("username:") password = getpass.getpass("password:") if username == _username and password == _password: print("hello,seven") break else: print("error,input again")
#!/usr/bin/env python #-*- coding:utf-8 -*- import getpass _username = 'seven' _password = '123' count = 0 def login(): username = input('username:') password = getpass.getpass('password:') return username,password while count<3: username,password = login() if username == _username and password == _password: print('hello,seven') break else: count += 1 print ('error,input again')
c. 實現用戶輸入用戶名和密碼,當用戶名為 seven 或 alex 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重復輸入三次
#!/usr/bin/env python # -*- coding:utf-8 -*- import getpass _username = ['seven','alex'] _password = "123" count = 0 while count < 3: count += 1 username = input("用戶名:") # password = input("密碼:") password = getpass.getpass("密碼:") if username in _username and password == _password: print("登陸成功!") break else: print("登陸失敗!")
7.寫代碼
a. 使用while循環實現輸出2-3+4-5+6...+100 的和
# 2+4+6...+100 # -3-5...-99 count = 1 sum = 0 while count < 100: count += 1 if count % 2 == 0 : sum += count else: sum -= count print(sum)
sum = 0 for count in range(2,101): # print(count) if count % 2 == 0 : sum += count else: sum -= count print(sum)
b. 使用 while 循環實現輸出 1,2,3,4,5, 7,8,9, 11,12
count = 0 while count <= 12: if count == 6 or count == 10: pass # 換成continue不行,因為會跳過本次循環,count不能+1,count永遠==6,永遠跳過本次循環。 else: print(count) count += 1
count = 0 while count < 12: count += 1 if count == 6 or count == 10: pass # 換成continue可以,因為雖然跳出了本次循環,但是下次循環的時候count可以+1。 else: print(count)
c. 使用while 循環輸出100-50,從大到小,如100,99,98...,到50時再從0循環輸出到50,然后結束
count = 101 while count > 50: count -= 1 print(count) if count == 50: count = 0 while count < 51: print(count) count += 1 break
d. 使用 while 循環實現輸出 1-100 內的所有奇數
count = 0 while count < 100: count += 1 if count % 2 == 1: print(count)
for count in range(1,101,2): print(count)
e. 使用 while 循環實現輸出 1-100 內的所有偶數
count = 0 while count < 100: count += 1 if count % 2 == 0: print(count)
for count in range(2,101,2): print(count)
8.現有如下兩個變量,請簡述 n1 和 n2 是什么關系?
n1 = 123456
n2 = n1
給數據123456起了另外一個別名n2,相當於n1和n2都指向該數據的內存地址
9.制作趣味模板程序(編程題)
需求:等待用戶輸入名字、地點、愛好,根據用戶的名字和愛好進行任意顯示
如:敬愛可愛的xxx,最喜歡在xxx地方干xxx
#方法一: name = input("請輸入姓名:") address = input("請輸入地點:") hobby = input("請輸入愛好:") info = """ 敬愛可愛的%s,最喜歡在%s地方干%s """% (name,address,hobby) print(info) #方法二: name = input("請輸入姓名:") address = input("請輸入地點:") hobby = input("請輸入愛好:") info = """ 敬愛可愛的{0},最喜歡在{1}地方干{2} """ print(info.format(name,address,hobby))
10.輸入一年份,判斷該年份是否是閏年並輸出結果。(編程題)
注:凡符合下面兩個條件之一的年份是閏年。 (1) 能被4整除但不能被100整除。 (2) 能被400整除。
year = int(input("Please input the year:")) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print(year,"is a leap year") else: print(year,"is not a leap year")
11.假設一年期定期利率為3.25%,計算一下需要過多少年,一萬元的一年定期存款連本帶息能翻番?(編程題)
money = 10000 years = 0 rate = 0.0325 while money <= 20000: years += 1 money = money * (1+rate) print(str(years)+"年以后,一萬元的一年定期存款連本帶息能翻番")
作業
編寫登陸接口
基礎需求:
讓用戶輸入用戶名密碼
認證成功后顯示歡迎信息
輸錯三次后退出程序
#!/usr/bin/env python3 # -*- encoding: utf8 -*- # 輸錯用戶名和輸錯密碼的次數總共最多為3次 import getpass exit_flag = False count = 0 while count < 3 and not exit_flag: user = input('\n請輸入用戶名:') if user != "wss": count += 1 print("\n用戶名錯誤") else: while count < 3 and not exit_flag: pwd = getpass.getpass('\n請輸入密碼:') # pwd = input('\n請輸入密碼:') if pwd == "123": print('\n歡迎登陸') print('..........') exit_flag = True else: count += 1 print('\n密碼錯誤') continue if count >= 3: # 嘗試次數大於等於3時鎖定用戶 if user == "": print("\n您輸入的錯誤次數過多,且用戶為空") elif user != "wss": print("\n您輸入的錯誤次數過多,且用戶 %s 不存在" % user) else: print("\n您輸入的錯誤次數過多")
#!/usr/bin/python3 #-*- coding:utf-8 -*- # 輸錯用戶名和輸錯密碼的次數分別最多為3次 # import getpass _username = "wss" _password = "123" count = 0 exit_flag = False while count < 3 and not exit_flag: count += 1 username = input("\nPlease input your username:") if username == _username: exit_flag = True # 當密碼正確時,跳過第一層循環,不再詢問用戶名 count = 0 while count < 3: count += 1 password = input("\nPlease input your password:") # password = getpass.getpass("\nPlease input your password:") if password == _password: print("\nhello,%s" % username) break # 密碼正確,跳過第二層循環,不再詢問密碼 else: print("\nYour password is wrong") else: print("\nYour username is wrong") if count >= 3: # 嘗試次數大於等於3時強制退出 print("\nYou try more than 3 times,be forced to quit")
升級需求:
可以支持多個用戶登錄 (提示,通過列表存多個賬戶信息)
用戶3次認證失敗后,退出程序,再次啟動程序嘗試登錄時,還是鎖定狀態(提示:需把用戶鎖定的狀態存到文件里)
#!/usr/bin/env python3 # -*- encoding: utf8 -*- # 輸錯用戶名和輸錯密碼的次數總共最多為3次 import getpass user_list = { "wss": "123", "alex": "456", "jay": "789" } f = open("deny_user_list.txt", "a", encoding="utf-8") # 沒有此文件時創建 f.close() with open("deny_user_list.txt", "r", encoding="utf-8") as deny_user_list_file: deny_user_list = deny_user_list_file.readlines() exit_flag = False count = 0 while count < 3 and not exit_flag: user = input('\n請輸入用戶名:') if user not in user_list: count += 1 print("\n用戶名錯誤") elif user + "\n" in deny_user_list: print("\n用戶已被鎖定,請聯系管理員解鎖后重新嘗試") break else: while count < 3 and not exit_flag: pwd = getpass.getpass('\n請輸入密碼:') # pwd = input('\n請輸入密碼:') if pwd == user_list[user]: print('\n歡迎登陸') print('..........') exit_flag = True else: count += 1 print('\n密碼錯誤') continue if count >= 3: # 嘗試次數大於等於3時鎖定用戶 if user == "": print("\n您輸入的錯誤次數過多,且用戶為空") elif user not in user_list: print("\n您輸入的錯誤次數過多,且用戶 %s 不存在" % user) else: with open("deny_user_list.txt", "a", encoding="utf-8") as deny_user_list_file: if user + "\n" not in deny_user_list: deny_user_list_file.write(user + "\n") print("\n您輸入的錯誤次數過多,%s 已經被鎖定" % user)
#!/usr/bin/env python # -*- coding:utf-8 -*- # 輸錯用戶名和輸錯密碼的次數分別最多為3次 # import getpass user_dict = dict([("wss", "123"), ("alex", "456"), ("jay", "789")]) # 存儲用戶信息 deny_user_list = [] # 初始化拒絕用戶列表 f = open("deny_user_list.txt", "a", encoding="utf-8") # 沒有此文件時創建 f.close() with open("deny_user_list.txt", "r", encoding="utf-8") as deny_user_list_txt: for deny_user in deny_user_list_txt.readlines(): # 將文件內容轉換為列表 deny_user = deny_user.strip() # 去掉換行符 deny_user_list.append(deny_user) count = 0 exit_flag = False while count < 3 and not exit_flag: count += 1 username = input("\nPlease input your username:") if username in user_dict and username not in deny_user_list: exit_flag = True # 當用戶名正確時,跳過第一層循環,不再詢問用戶名 count = 0 while count < 3: count += 1 password = input("\nPlease input your password:") # password = getpass.getpass("\nPlease input your password:") if password == user_dict[username]: print("\nhello,%s" % username) break # 當密碼正確時,跳過第二層循環,不再循環密碼 else: print("\nYour password is wrong") elif username in deny_user_list: print("\n%s is locked,please contact the administrator" % username) break else: print("\nYour username is wrong") if count >= 3: # 當嘗試次數大於等於3時強制退出並鎖定用戶 if username not in user_dict or username == "": print("\nYou try more than 3 times,be forced to quit") else: with open("deny_user_list.txt", "a", encoding="utf-8") as deny_user_list_file: if username not in deny_user_list: deny_user_list_file.write(username + "\n") print("\nYou try more than 3 times,%s has been locked" % username)