本博客原文地址:https://www.cnblogs.com/BobHuang/p/15531908.html,原文體驗更佳
編程集中出現在八年級上冊,為高中信息技術必修的前置內容。大多數題目都可以使用在線評測平台測試練習,詳見 初中信息技術(Python)TZOJ題單
第一單元 Python程序設計基礎
第1課 初識Python
P4 輸出語句
print("歡迎來到精彩的Python世界!")
print("Hello, Python World!")
P5 打招呼
# 我的第一個程序
name=input("請輸入你的姓名")
print("你好,",name)
P6 隨堂練習2
>>> print("2+3=",2+3)
結果為2+3= 5
P6 隨堂練習3
name=input("請輸入你的姓名:")
age=input("請輸入你的年齡:")
print("大家好,我叫",name,",今年",age,"歲。")
第2課 常用數據類型
P8 字符串索引
>>> st="Python"
>>> print(st[0],st[1],st[2],st[3],st[4],st[5])
結果為P y t h o n
P9 列表索引
>>> lst=[571,"杭州",572,"湖州",573,"嘉興"]
>>> print(lst[0],lst[1],lst[2],lst[3],lst[4],lst[5])
結果為571 杭州 572 湖州 573 嘉興
P9 切片
>>> lst=['HUAWEI','OPPO','VIVO','XIAOMI']
>>> lst[1:3]
結果為['OPPO', 'VIVO']
P9 開動腦筋
>>> lst=['HUAWEI','OPPO','VIVO','XIAOMI']
>>> lst[0][1]
結果為'U'
P9 日積月累
st="Python",則st[-1]返回值是'n',st[1]返回值是'y'。
lst=['HUAWEI','OPPO','VIVO','XIAOMI'],則lst[-3:-1]返回值是['OPPO','VIVO']。
P10 三角形周長
a,b,c=3,4,5
msg="三角形周長是"
p=a+b+c
print(msg,p)
P11 隨堂練習1
>>> a,b=3,"Hello"
>>> type(a),type(b)
結果為(<class 'int'>, <class 'str'>)
>>> len(b)
結果為5
P11 隨堂練習2
>>> Mphone=['HUAWEI','OPPO','VIVO','XIAOMI']
>>> _____________
輸出結果為['OPPO'],空處應填Mphone[1:2]
>>> _____________
輸出結果為['OPPO','XIAOMI'],空處應填Mphone[1:3]
第3課 算數運算符和表達式
P13 運算符示例
>>> 5+30*20/10
結果為65.0
P13 親身體驗
>>> 3+5.0
>>> 9**0.5
>>> 123%10
結果分別為
8.0
3.0
3
P15 華氏溫度轉攝氏溫度
F=float(input("請輸入華氏溫度:"))
C=(5/9)*(F-32)
print("對應的攝氏溫度為:",C)
P15 fomat函數保留2位小數
>>> x=26.666666666668
>>> print(format(x,'.2f'))
結果為26.67
P16 隨堂練習1 3位數的每一位
x=int(input('輸入3位數的自然數:'))
a=x//100 #百位上的數字
_________ #十位上的數字
c=x%10 #個位上的數字
print(a,b,c,sep=',')
空處應填b=x//10%10或b=x%100//10等
P16 隨堂練習2 攝氏溫度轉華氏溫度
C=float(input("請輸入攝氏溫度:"))
F=9*C/5+32
print("對應的華氏溫度為:",F)
第二單元 Python程序基本結構
第4課 順序結構程序設計
P20 海倫公式求三角形面積
#輸入三角形的三邊長
a=float(input("輸入三角形的第一邊長:"))
b=float(input("輸入三角形的第二邊長:"))
c=float(input("輸入三角形的第三邊長:"))
#計算三角形的半周長
p = (a+b+c)/2.0
#計算三角形的面積
s=(p*(p-a)*(p-b)*(p-c))**0.5
#輸出三角形的面積
print("三角形面積為:",s)
P21 隨堂練習求圓的面積、周長
R=float(input("請輸入圓的半徑R:"))
PI=3.14
S=________
L=________
print("圓的周長為:",S,"圓的面積為:",L)
空處應填PI*R*R和2*PI*R以及其他等價形式
第5課 分支結構設計
P23 兩個數較大
if a>=b:
print("兩個數中較大為:",a)
else:
print("兩個數中較大為:",b)
P23 親身體驗,兩個數較小
if a<=b:
print("兩個數中較小為:",a)
else:
print("兩個數中較小為:",b)
P25 輸入賬號和密碼,校驗是否正確
# 輸入賬號和密碼
user=input("請輸入賬號:")
pwd=input("請輸入密碼:")
# 判斷輸入的賬號和密碼是否正確
if user=="admin" and pwd=="Python@16":
print("登陸成功!")
else:
print("賬號密碼有誤!")
P26 隨堂練習1 出租車收費
#輸入路程
s=float(input("請輸入行駛路程:"))
#向上取整
if int(s)!=s:
s=round(s+0.5)
#計算金額
if s<=3:
m=10
else:
__________
print(s,"千米","付費",m,"元")
空處應填m=10+(s-3)*2
P26 隨堂練習2 判斷三角形是否成立
#輸入三條邊長
a=float(input("輸入三角形第一邊長:"))
b=float(input("輸入三角形第二邊長:"))
c=float(input("輸入三角形第三邊長:"))
#若構成三角形、則求三角形面積
if _____________
p = (a+b+c)/2.0
s=(p*(p-a)*(p-b)*(p-c))**0.5
print("三角形面積為:",s)
else:
print("輸入的三條邊,不能構成三角形!")
空處應填a+b>=c and a+c>=b and b+c>=a:
第6課 多分支結構程序設計
P28 三個數的最大值
if a>=b and a>=c:
print("三個數中最大數為:",a)
elif b>=c:
print("三個數中最大數為:",b)
else:
print("三個數中最大數為:",c)
P29 親身體驗 三個數的最小值
if a<=b and a<=c:
print("三個數中最小數為:",a)
elif b<=c:
print("三個數中最小數為:",b)
else:
print("三個數中最小數為:",c)
P29 開動腦筋 三個數最大值的其他解法
max_value=a
if b>max_value:
max_value=b
if c>max_value:
max_value=c
print(max_value)
P30 算術四則運算的簡易計算器
# 簡易計算器(四則運算)
x=float(input("請輸入第一個運算數:"))
y=float(input("請輸入第二個運算數:"))
op=input("請輸入算術運算符(+-*/):")
c=0
if op=='+':
c=x+y
print("運算結果為:",c)
elif op=='-':
c=x-y
print("運算結果為:",c)
elif op=='*':
c=x*y
print("運算結果為:",c)
elif op=='/':
try:
c=x/y
print("運算結果為:",c)
except:
print("除數不能為零!")
else:
print("運算符輸入有誤!")
P31 隨堂練習 運動會成績名次
使用多分支語句
#輸入名次
mc=int(input("參加運動會項目名次(1~6):"))
#計算並輸出得分
if mc==1:
print("得分為:7分")
elif mc==2:
print("得分為:5分")
elif mc==3:
print("得分為:4分")
elif mc==4:
print("得分為:3分")
elif mc==5:
print("得分為:2分")
elif mc==6:
print("得分為:1分")
_______
print("輸入的名次不在1~6范圍!")
空處應填else:
使用列表
#輸入名次
mc=int(input("參加運動會項目名次(1~6):"))
#利用列表,計算得分
lst=[7,5,4,3,2,1]
if mc>=1 and mc<=6:
__________
print("項目得分為:",df)
else:
print("輸入的名次不在1~6范圍!")
空處應填df=lst[mc-1]
第7課 多分支結構的應用實例
P34 根據車牌首字母識別汽車所在地
#汽車牌號所在地查詢
chepai= input("請輸入汽車牌號首字母:")
if chepai=="A":
print("所在地:杭州市")
elif chepai=="B":
print("所在地:寧波市")
elif chepai=="C":
print("所在地:溫州市")
elif chepai=="D":
print("所在地:紹興市")
elif chepai=="E":
print("所在地:湖州市")
elif chepai=="F":
print("所在地:嘉興市")
elif chepai=="G":
print("所在地:金華市")
elif chepai=="H":
print("所在地:衢州市")
elif chepai=="J":
print("所在地:台州市")
elif chepai=="K":
print("所在地:麗水市")
elif chepai=="L":
print("所在地:舟山市")
else:
print("無法查詢")
P35 開動腦筋 要求不區分大小寫
#將小寫轉換為大寫
if chepai>='a' and chepai<='z':
chepai=chr(ord(chepai)-ord('a')+ord('A'))
#首字母是列表第二個元素
chepai= chepai[1]
P35 隨堂練習 空氣質量指數查詢
AQI = int(input("請輸入空氣指數值:"))
if AQI<=50:
print("空氣質量優,各類人群可戶外正常活動")
elif AQI<=100:
print("空氣質量良,少數敏感人群減少戶外運動")
elif AQI<=150:
print("空氣輕度污染,減少長時間戶外運動")
elif AQI<=200:
print("空氣中度污染,應適量減少戶外運動")
elif AQI<=300:
print("空氣重度污染,一般人減少戶外活動")
else:
print("空氣嚴重污染,一般人避免戶外活動")
第8課 循環結構--for循環
P37 for循環遍歷字符串
#輸出字符串中的各個字符
s="Python3"
for i in s:
print(i)
P38 開動腦筋 for循環輸出["apple","banana","peach"]
#輸出列表中各個元素
lst=["apple","banana","peach"]
for i in lst:
print(i)
P38 求1到n中的奇數的和
sum=0
for i in range(1,101,2):
sum=sum+i
print("1~100的所有奇數的和:",sum)
P38 輸出列表中的各個元素
#輸出列表中各個元素
lst=["apple","banana","peach"]
n=len(lst)
for index in range(n):
print("當前水果:",lst[index])
P39 親身體驗 利用len()函數輸出"Python3"各個字符
s="Python3"
n=len(s)
for i in range(n):
print(s[i])
P39 隨堂練習1
#通過成員資格運算符輸出列表元素
program=["Java","Python","Visual Basic"]
for w in program:
print(w,len(w))
輸出應填
Java 4
Python 6
Visual Basic 12
P39 隨堂練習2
#通過索引遍歷輸出列表元素
program=["Java","Python","Visual Basic"]
n=len(program)
for i in range(n):
print(i,program[i])
輸出應填
0 Java
1 Python
2 Visual Basic
第9課 for循環的應用實例
P42 數麥粒
#n表示棋盤的格子數
n=int(input("請輸入棋盤格子數:"))
p=1 #第1格麥粒數p置初值1
s=0 #累加器s初始化為0
#通過for語句循環累加,並輸出麥粒總數
for i in range(1,n+1):
s=s+p
p=p*2
print("當前格子序號:",i,",當前格子麥粒數:",int(p/2))
print("棋盤格子數為:",n,"麥粒總數:",s)
P43 利用麥粒數估算重量
s=(s*0.03)/(1000*1000)
P44 尋找水仙花數
lst=[]
for __________
a=i%10
b=(i//10)%10
c=i//100
if (a**3+b**3+c**3)==i:
lst.append(i)
print(lst)
空處應填i in range(100,1000,1):
第10課 循環結構--while循環
P46 多個數求和
#計數器和累加器置初值0
s=0
i=0
#輸入需循環計算的數,並給出結束循環的條件
xstr=input("請輸入數【直接按回車則】:")
while xstr!="":
x=float(xstr)
s=s+x
i=i+1
xstr=input("請輸入數【直接按回車則】:")
print("\n輸入個數為:",i)
print("輸入和為:",format(s,".2f"))
P47 開動腦筋,輸入"quit"退出循環
while xstr!="quit":
P47 登錄程序
user=""
psd=""
while True:
if user!="admin":
user=input("請輸入賬號:")
continue
psw=input("請輸入密碼:")
if psw=="Python@16":
break
print("賬號密碼正確,登陸成功!")
P38 隨堂練習1 閱讀程序
x=0
while x<50:
x=(x+2)*(x+3)
print(x)
輸出結果為72
P38 隨堂練習2 閱讀程序
x=0
while x<10:
x=x+1
if x%2==0:
continue
print(x)
輸出結果為
1
3
5
7
9
第11課 while循環的應用實例
P51 猜數游戲
num=66
i=0
while True:
guess=int(input("請輸入猜測的數:"))
if guess<num:
print("偏小")
i=i+1
elif guess>num:
print("偏大")
i=i+1
else:
print("正確,共猜測次數:",i+1)
break
P51 隨堂練習 儲蓄問題
#儲蓄年數n置初值0
n=0
#p是本金金額
p=float(input('請輸入本金金額:'))
#q是預期數額
q=float(input('請輸入預期金額:'))
while __________:
p=p+p*0.03
n+=1
print("需要儲蓄(年數):",n)
空處應填p<q或q>p
第三單元 算法與程序設計
第12課 Python的函數
P55 內建len()函數
>>> st="Python"
>>> len(st)
輸出結果為6
lst=['HUAWEI','OPPO','VIVO','XIAOMI']
len(lst)
輸出結果為3
P56 調用函數打印姓名和年齡
#定義printinfo函數
def printinfo(name,age):
print("Name:",name)
print("Age:",age)
#調用printinfo函數
printinfo("miki",50)
printinfo(age=50,name="miki")
輸出結果為
Name: miki
Age: 50
Name: miki
Age: 50
P58 斐波那契數列的前n個元素
#定義fib函數,n為形參
def fib(n):
a,b=1,1
for i in range(3,n+1):
a,b=b,a+b
return b
#輸入月數
n=int(input('請輸入第n個月:'))
#調用fib函數,i值為實參
for i in range(1,n+1):
print(fib(i),end=' ')
P59 隨堂練習2 第幾天
#定義函數 fcount()
def fcount (year, month, day):
sum=0
#判斷該年是否為閏年
if year%400==0 or (year%4==0 and year%100!=0):
lst=[31,29,31,30,31,30,31,31,30,31,30,31]
for i in range(month-1):
sum=sum+lst[i]
return sum+day
else:
lst=[31,28,31,30,31,30,31,31,30,31,30,31]
for i in range(month-1):
sum=sum+lst[i]
return sum+day
#輸入年月日
year=int(input("請輸入年份:"))
month=int(input("請輸入月份:"))
day=int( input("請輸入日期:"))
# 調用函數fount(),並輸出天數
sum=_____________
print(year,"年", month,"月",day,"日","是今年的第",sum,"天!")
空處應填fcount(year, month, day)
第13課 Python的模塊
P61 導入整個模塊的文件
>>> import math
>>> math.sqrt(2)
只導入模塊中的指定函數
from math import pow
pow(2,3)
P64 利用蒙特卡羅方法計算π的值
import random
import math
num = int(input("請輸入投點數:"))
point = 0
for i in range(1, num+1):
x, y = random.random(), random.random()
dist = math.sqrt(x ** 2 + y ** 2)
if dist <= 1.0:
point = point + 1
Pi = 4.0 * (point/num)
print("Pi值是:",Pi)
P65 隨堂練習1 觀察輸出結果
>>> import random
>>> dir(random)
>>> help(random)
>>> random.random()
>>> random.randint(1,10)
P65 隨堂練習2 列表元素循環左移問題
定義函數left(),並保存到模版文件move.py
# 模塊文件 move.py
# 將列表循環左移K位
def left(lst,k):
temp=lst
for i in range(k):
temp.append(temp.pop(0))
return temp
新建“列表元素的循環左移”文件lst_move.py,程序代碼如下,請填寫空缺的代碼。
import __________
p = [1,2,3,4,5,6]
n=3
print(__________)
空處應分別填
move
move.left(p,3)
第14課 枚舉算法
P70 百錢買百雞
count=0 #循環計數
for x in range(21):
for y in range(34):
count = count + 1
if 5*x+3*y+(100-x-y)/3==100:
print("公雞:",x,"母雞:",y,"小雞:",100-x-y)
print("循環運行次數:",count)
P70 隨堂練習1 零錢兌換
count=0 #循環計數
for x in range(21):
for y in range(11):
sy=100-(5*x+10*y)
if sy>=0 and sy%20==0:
count = count + 1
print("兌換方法數:",count)
P71 隨堂練習2 尋找完全數
# 初始化空列表
lst = []
for n in range(2,10001):
s=0
for i in range(1,n-1):
if n%i==0:
_____________
if s==n:
lst.append(n)
print("2~10000中的完全數有:",lst)
空處應填s=s+i
第15課 Python的圖形界面設計
P73 沒有組件的GUI程序
import tkinter #導入tkinter模塊
win=tkinter.Tk() #生成一個主窗體對象
win.geometry("250x130")
win.title("沒有組建的窗體")
win.mainloop() #進入消息循環
P73 "退出"按鈕的程序代碼
import tkinter as tk #導入tkinter模塊重名為tk
win=tk.Tk() #生成一個主窗體對象
win.title("沒有組建的窗體")
win.geometry("250x130") #窗體大小
def my_quit():
win.quit()
# win.destroy()
but_quit=tk.Button(win,text="退出",
commad=my_quit(),width=10,height=2)
but_quit.pack()
win.mainloop() #進入消息循環
P76 tkinter實現登錄
#設計基本框架
import tkinter as tk
import tkinter.messagebox
win=tk.Tk()
win.title("用戶登錄")
win.geometry("250x130")
#---功能代碼開始---
#一設計功能函數--
#設置變量
var_Name=tk.StringVar() #設置變里為StringVar對象
var_Name.set('') #初始和重置時的清空
var_Pwd=tk.StringVar()
var_Pwd.set('')
# 按鈕處理函數
def login():
name=var_Name.get() #獲取用戶名
pwd=var_Pwd.get() #獲取密碼
if name=='admin' and pwd =='python@16':
tk.messagebox.showinfo(title="用戶登錄", message="成功!")
else:
tk.messagebox.showinfo(title="用戶登錄", message="失敗!")
def cancel():
var_Name.set('')#清空用戶名
var_Pwd.set('')#清空密碼
def quit():
win.quit()
#win.destroy()
#一登錄窗口各組件設計一
#設計2個提示標簽
labname=tk.Label(win,text="賬號",width=80)
labpwd=tk.Label(win,text="密碼",width=80)
#設計2個輸入框( textvariable為文本框的值,並關聯變里 var_Name)
entname=tk.Entry(win, width=100, textvariable=var_Name)
entpwd=tk.Entry(win, show='*', width=100, textvariable=var_Pwd)
#設計3個按鈕
but_Ok=tk.Button(win,text="登陸", command=login)
but_Cancel=tk.Button(win,text="重置", command=cancel)
but_quit=tk.Button(win,text="退出", command=quit)
#---登錄窗口各組件布局---
#組建的窗口布局
labname.place(x=20, y=10, width=80, height=20)
labpwd.place(x=20, y=40, width=80, height=20)
entname.place(x=120,y=10,width=80, height=20)
entpwd.place(x=120, y=40, width=80, height=20)
but_Ok.place(x=30, y=80, width=50, height=20)
but_Cancel.place(x=100,y=80,width=50, height=20)
but_quit.place(x=170, y=80, width=50, height=20)
win.mainloop()
P76 隨堂練習 溫度轉換的tkinter程序
from tkinter import *
from tkinter import messagebox
def cancel():
swdVar.set('')
hwdVar.set('')
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def FToC():
if is_number(hwdVar.get()):
# 華氏溫度轉化為攝氏溫度
s = 5 / 9.0 * (float(hwdVar.get()) - 32)
swdVar.set('{:.2f}'.format(s))
else:
messagebox.showinfo(title="錯誤", message="請輸入數字!")
def CToF():
if is_number(swdVar.get()):
# 攝氏溫度轉換為華氏溫度
h = 9 / 5.0 * float(swdVar.get()) + 32
hwdVar.set('{:.2f}'.format(h))
else:
messagebox.showinfo(title="錯誤", message="請輸入數字!")
win = Tk()
win.title('溫度轉換')
win.geometry('250x150')
# 攝氏溫度變量
swdVar = StringVar()
lb1 = Label(win, text="攝氏溫度C")
lb1.place(x=20, y=10, width=80, height=20)
swd = Entry(win, textvariable=swdVar)
swdVar.set('')
swd.place(x=100, y=10, width=100, height=20)
# 華氏溫度變量
hwdVar = StringVar()
lb1 = Label(win, text="華氏溫度C")
lb1.place(x=20, y=50, width=80, height=20)
hwd = Entry(win, textvariable=hwdVar)
hwdVar.set('')
hwd.place(x=100, y=50, width=100, height=20)
but_FToC=Button(win,text="C轉F", command=CToF)
but_FToC.place(x=50, y=80, width=50, height=20)
but_Cancel=Button(win,text="重置", command=cancel)
but_Cancel.place(x=50, y=110, width=50, height=20)
but_FToC=Button(win,text="F轉C", command=FToC)
but_FToC.place(x=150, y=80, width=50, height=20)
#退出按鈕
but_quit=Button(win,text="退出", command=win.destroy)
but_quit.place(x=150, y=110, width=50, height=20)
win.mainloop()
P78 閱讀材料 Python第三方庫的使用
數值計算NumPy、圖像處理PIL、2D圖形繪制Matplotlib、數據分析pandas和Python的Web開發框架Django,對應的包名分別為numpy、pillow、matplotlib、pandas和django。
可以直接在命令行下pip install或者切換到Python安裝目錄下的scipts目錄中執行命令
> pip install pillow
如果下載太慢,可以加上-i https://pypi.tuna.tsinghua.edu.cn/simple 使用清華的源來安裝
使用import關鍵字來導入第三方庫中的對象,PIL庫包含21個與圖像處理相關的對象,最常用的是Image和ImageFilter對象,可以按如下方式導入。
>>> from PIL import Image
>>> from PIL import ImageFilter
將一張BMP圖片生成其JPEG格式的縮略圖
#將一張圖片,生成其縮略圖
from PIL import Image #導入PIL庫中的Image對象
img = Image.open("麗江山水.bmp") #加載圖像文件
img.thumbnail((128,128)) #創建文件的縮略圖
img.save("麗江山水縮略圖.jpg","JPEG") #以JPEG格式保存圖像文件
print("處理結束!")
將圖片處理成浮雕效果
#將圖片處理成浮雕效果
from PIL import Image #導入PIL庫中的Image對象
from PIL import ImageFilter #導入PIL庫中的ImageFilter對象
img = Image.open("麗江山水.bmp") #加載圖像文件
omg=img.filter(ImageFilter.EMBOSS) #生成圖像的浮雕效果
omg.save("麗江山水浮雕效果.bmp") #保存圖像文件
print("處理結束!")
