初中信息技术(Python) 源代码

本博客原文地址: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("处理结束!")
posted @ 2021-11-10 08:50  暴力都不会的蒟蒻  阅读(828)  评论(0编辑  收藏  举报