python实训报告

实训1 Python基础知识实训

1.安装Python解释器,使用pycharm编写 Hello world 程序。
2.数字求和,编写一个程序,通过用户输入两个数字,并计算这两个数字之和。

num1=input("请输入第1个数字:")
 	num2=input("请输入第2个数字:")
 	sum=float(num1)+float(num2)
 	print("数字%s和%s相加之和是%.1f"%(num1,num2,sum))

3.编写程序,要求输入三角形的三条边(假设给定的三条边符合构成三角形的条件:任意两边之和大于第三边),计算三角形的面积并输出。

import math				#导入math模块
a=int(input("请输入三角形的第一条边:"))	#输入第一条边并将其转换为整型
b=int(input("请输入三角形的第二条边:"))	#输入第二条边并将其转换为整型
c=int(input("请输入三角形的第三条边:"))	#输入第三条边并将其转换为整型
s=1/2*(a+b+c)				#计算s
area=math.sqrt(s*(s-a)*(s-b)*(s-c))		#调用sqrt函数计算面积
print("此三角形面积为:",area)		#输出三角形面积

4.编写程序,实现输入用户姓名、年龄和地址,然后使用print()函数输出。

name = input("请输入姓名:")
age = int(input("请输入年龄:"))
address = input("请输入地址:")
print(name,'今年',age,'岁,','地址是',address,'。')

实训2 常用数据类型及函数实训

1.编写一个简易计算器,要求根据输入的数字和四则运算符,计算运算结果并输出。

operator_list = ['+','-','*','/']			#创建列表并赋值四则运算符
number_1 = float(input("请输入第一个操作数:"))	#获取第一个操作数
operator = input("请输入运算符:")		#获取运算符
number_2 = float(input("请输入第二个操作数:"))	#获取第二个操作数
#判断用户输入的运算符并进行计算,将结果赋值给变量result
if operator not in operator_list:			#输入的运算符不是四则运算符
    print("输入的运算符有误,请输入四则运算符!")	#输出提示语
else:					#输入的运算符属于四则运算符
    if operator == '+':				#运算符为“+”
        result = number_1 + number_2		#两数相加的值赋给变量result
    elif operator == '-':			#运算符为“-”
        result = number_1 - number_2		#两数相减的值赋给变量result
    elif operator == '*':			#运算符为“*”
        result = number_1 * number_2		#两数相乘的值赋给变量result
    elif operator == '/':			#运算符为“/”
        result = number_1 / number_2		#两数相除的值赋给变量result
    print(number_1,operator,number_2,"=",result)#将两个操作数的运算结果输出

2.编写一个登录验证程序,要求:(1)输入用户名密码;(2)认证成功显示登录信息;(3)同一个用户输错3次密码后被锁定,并退出程序。

count =0						#定义count变量并赋初值为0
passwd=123					#定义passwd变量并赋初值为123
dict1={'alex':[passwd,count],'Tom':[passwd,count]}	#定义字典用于存储用户信息
while True:					#开始循环
    name = input("please input your name:")		#输入用户名
    password = int(input("please input your password:"))	#输入密码
    if name not in dict1.keys():			#如果输入的用户名不在字典中
        print("name %s is not in dict"%name)		#输出提示语
        break					#跳出循环
    if dict1[name][1] > 2:				#如果次数大于2
        print("the name %s locked"%name)		#输出被锁定提示信息
        break					#跳出循环
    if password == dict1[name][0]:			#如果输入的密码正确
        print("login ok")				#输出登录成功提示语
        break					#跳出循环
    else:						#密码输入错误
        print("name or passwd error")			#输出提示语
        dict1[name][1] +=1				#次数加1

3.编写一个模拟三级菜单的程序,要求:(1)打印省、市、县三级菜单;(2)可返回上一级;(3)可随时退出程序。

data = {
    '北京': {
        '昌平':
            {
                '沙河': ['沙河机场', '链家'],
                '天通苑': ['北方明珠', '天通尾货']
            },
        '朝阳':
            {
                '花家地': ['朝阳公园', '望京soho'],
                '北小河': ['北小河公园', '北京中学']
            }
    },
    '上海': {
        '虹桥':
            {
                '虹桥机场': ['超市', '特产店', '水吧'],
                '东方明珠': ['电影院', '游泳馆', '餐馆']
            },
        '浦东':
            {
                '景秀路': ['世纪公园', '立交桥'],
                '中环路': ['鲁迅公园', '同济大学']
            }
    },
    '河北': {
        '石家庄':
            {
                '行唐': ['东正', '阳关'],
                '赵县': ['赵州桥', '高村乡']
            },
        '唐山':
            {
                '滦南县': ['司各庄镇', '安各庄镇'],
                '玉田县': ['玉田镇', '亮甲店镇']
            }
    }
}
while True:
    for i in data:			#打印第一级列表
        print(i)
    choice = input("请选择省或直辖市(退出请按q):")
    if choice in data:			#如果在第一级列表里则进入下一级列表
        while True:
            for i2 in data[choice]:		#打印第二级列表
                print(i2)
            choice2 = input("请选择(退出请按q返回省或直辖市列表请按b):")
            if choice2 in data[choice]:		#如果在第二级列表里则进入下一级
                while True:
                    for i3 in data[choice][choice2]:	#打印第三级列表
                        print(i3)
                    choice3=input("请选择(退出请按q返回上一级列表请按b):")
                    if choice3 in data[choice][choice2]:
                        for i4 in data[choice][choice2][choice3]:
                            print(i4)
                        choice4 = input("已经到达最后一级(退出请按q返回上一级列表请按b):")
                        if choice4 == 'b':
                            continue
                        elif choice4 == 'q':
                            exit()
                    elif choice3 == 'b':		#从第三级返回第二级
                        break
                    elif choice3 == 'q':
                        exit()
            elif choice2 == 'b':			#从第二级返回第一级
                break
            elif choice2 == 'q':
                exit()
    elif choice == 'q':
        exit()

4.编写一个简单的学生管理系统,实现增加学生信息、删除学生信息、修改学生信息、展示学生信息。

stuInfos=[]			#用来保存学生的所有信息
def printMenu():			#打印功能提示
    print("="*20)
    print(" 学生管理系统V1.0 ")
    print("1.添加学生信息")
    print("2.删除学生信息")
    print("3.显示所有学生信息")
    print("0.退出系统")
    print("="*20)
#添加一个学生信息
def addStuInfo():
    newNum = input("请输入新学生的学号:")	#提示并获取学生的学号
    newName = input("请输入新学生的姓名:")	#提示并获取学生的姓名
    newSex = input("请输入新学生的性别(男/女):")	#提示并获取学生的性别
    newInfo = {}				#定义字典
    #赋值
    newInfo['num'] = newNum
    newInfo['name'] = newName
    newInfo['sex'] = newSex
    stuInfos.append(newInfo)			#将元素添加到列表中
#删除一个学生信息
def delStuInfo(student):
    del_num = input("请输入要删除的学生的学号:")	#提示并获取学生学号
    for stu in student:				#遍历列表
        if stu['num'] == del_num:			#判断是否与输入的学号相同
            student.remove(stu)			#删除该学生信息
#显示所有学生信息
def showStuInfo():
    print("=" * 20)
    print("学生的信息如下:")
    print("=" * 20)
    print("序号    学号    姓名   性别")
    i = 1
    #遍历存储学生信息的列表,输出每个学生的详细信息
    for tempInfo in stuInfos:
        print("%d      %s      %s     %s" % (i, tempInfo['num'],tempInfo['name'], tempInfo['sex']))
        i += 1
#main函数控制整个程序的流程
def main():
    while True:
        printMenu()			#打印功能菜单
        key = input("请输入功能对应的数字")	#获取用户输入
        if key == '1':			#添加学生信息
            addStuInfo()
        if key == '2':			#删除学生信息
            delStuInfo(stuInfos) 
        elif key == '3':			#显示学生信息
            showStuInfo()
        elif key == '0':			#退出循环
            quit_con = input("确定退出吗?(Yes or No):")
            if quit_con == 'Yes':
                break
main()				#调用main函数

实训3 面向对象实训

1.创建三个游戏角色,分别是:(1)小A,女,18,初始战斗力1000;(2)小B,男,20,初始战斗力1800;(3)小C,女,19,初始战斗力2500。游戏场景,分别是:(1)草丛战斗,消耗200战斗力;(2)自我修炼,增长100战斗力;(3)多人游戏,消耗500战斗力。请编写程序模拟游戏场景。

class Person:
    def __init__(self, na, gen, age, fig):
        self.name = na
        self.gender = gen
        self.age = age
        self.fight =fig 
    def grassland(self): 
        self.fight = self.fight - 200 
    def practice(self):
        self.fight = self.fight + 100
    def incest(self):
        self.fight = self.fight - 500 
    def detail(self):
        temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s"  % (self.name, self.gender, self.age, self.fight)
        print(temp) 
# #####################  开始游戏  #####################
a = Person('小A', '女', 18, 1000)    # 创建小A
b = Person('小B', '男', 20, 1800)  # 创建小B
c = Person('小C', '女', 19, 2500)      # 创建小C
a.incest() #小A参加一次多人游戏
b.practice()#小B我修炼了一次
c.grassland() #小C参加一次草丛战斗
#输出当前所有人的详细情况
a.detail()
b.detail()
c.detail()

2.编写程序,模拟猫狗大战,要求:(1)可创建多个猫和狗的对象,并初始化每只猫和狗(包括昵称、品种、攻击力、生命值等属性)。(2)猫可以攻击狗,狗的生命值会根据猫的攻击力而下降;同理狗可以攻击猫,猫的生命值会根据狗的攻击力而下降。(3)猫和狗可以通过吃来增加自身的生命值。(4)当生命值小于等于0时,表示已被对方杀死。

#定义一个猫类
class Cat:
    role = 'cat'			#猫的角色属性都是猫
#构造方法初始化猫
    def __init__(self, name, breed, aggressivity, life_value):
        self.name = name		#每一只猫都有自己的昵称
        self.breed = breed		#每一只猫都有自己的品种
        self.aggressivity = aggressivity	#每一只猫都有自己的攻击力
        self.life_value = life_value		#每一只猫都有自己的生命值
#定义猫攻击狗的方法
    def attack(self,dog):
        dog.life_value -= self.aggressivity	#狗的生命值会根据猫的攻击力而下降
#定义增长生命值的方法
    def eat(self):
        self.life_value += 50
#定义判断是否死亡的方法
    def die(self):
        if self.life_value <= 0:		#如果生命值小于等于0表示已被对方杀死
            print(self.name,'已被杀死!')
        else:
            print(self.name,'的生命值还有',self.life_value)
#定义一个狗类
class Dog:  
    role = 'dog'			#狗的角色属性都是狗
#构造方法初始化狗
    def __init__(self, name, breed, aggressivity, life_value):
        self.name = name		#每一只狗都有自己的昵称
        self.breed = breed		#每一只狗都有自己的品种
        self.aggressivity = aggressivity	#每一只狗都有自己的攻击力
        self.life_value = life_value		#每一只狗都有自己的生命值
#定义狗攻击猫的方法
    def bite(self,cat):
        cat.life_value -= self.aggressivity	#猫的生命值会根据狗的攻击力而下降
#定义增长生命值的方法
    def eat(self):
        self.life_value += 30
#定义判断是否死亡的方法
    def die(self):
        if self.life_value <= 0: 		#如果生命值小于等于0表示已被对方杀死
            print(self.name,'已被杀死!')
        else:
            print(self.name,'的生命值还有',self.life_value)
#创建实例
cat_1 = Cat('Mily','波斯猫',30,1500)	#创造了一只实实在在的猫
dog_1 = Dog('Lucky','哈士奇',50,900)	#创造了一只实实在在的狗
cat_1.die()				#输出猫的当前状态
dog_1.die()			#输出狗的当前状态
print('------开始战斗-----')
cat_1.attack(dog_1)			#猫攻击狗一次
dog_1.bite(cat_1)			#狗攻击猫一次
cat_1.die()				#输出猫的当前状态
dog_1.die()			#输出狗的当前状态
for i in range(29):			#循环实现,猫攻击狗29次
    cat_1.attack(dog_1)
dog_1.die()			#输出狗的当前状态
cat_1.eat()				猫吃东西一次
cat_1.die()				#输出猫的当前状态

实训4 网络爬虫

爬取百度搜索“Python程序设计教程”的结果,并将搜索结果保存到“12-4.txt”文件中。

import requests			#导入requests库
from bs4 import BeautifulSoup	#从bs4库中导入BeautifulSoup类
import re			#导入re模块
import json			#导入json库
#定义函数,根据填写的url参数获取数据
def getKeywordResult(keyword):
    url = 'http://www.baidu.com/s?wd='+keyword
    #异常处理
    try:
        r = requests.get(url, timeout=30)#使用get函数打开指定的url
        r.raise_for_status()		#如果状态不是200,则引发异常
        r.encoding = 'utf-8'		#更改编码方式
        return r.text			#返回页面内容
    except:
        return ""			#发生异常返回空字符
#定义数据解析函数,用于找到符合条件的数据并返回
def parserLinks(html):
    soup = BeautifulSoup(html, "html.parser")	#将html对象转换为BeautifulSoup对象
    links = []				#定义列表用于存储数据
    #找到所有符合条件的信息并遍历
    for div in soup.find_all('div', {'data-tools': re.compile('title')}):
        data = div.attrs['data-tools']		#获得属性值
        d = json.loads(data)			#将属性值转换成字典
        links.append(d['title'])			#返回数据加到列表之后
    return links				#返回列表数据
#定义main函数,用于调用函数并将得到的数据写入文件
def main():
    html = getKeywordResult('Python程序设计教程')	#调用获取页面内容函数
    ls = parserLinks(html)			#调用解析数据函数
    count = 1
    with open('12-4.txt','w') as fd:		#将数据写入12-4.txt文件中
        for i in ls:
            fd.write('[')
            fd.write(str(count))
            fd.write(']')
            fd.write(i)				#写入文件
            fd.write('\n')
            count += 1
    print('写入文件成功!')
main()					#调用main函数

实训报告到这里结束,有需要的可以随意。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年6月16日
下一篇 2023年6月17日

相关推荐