本博客原文地址: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("处理结束!")