20214333 李嘉延 实验四 Python综合实践
20214313 实验四《Python程序设计》报告
课程:《Python程序设计》
班级: 2143
姓名: 李嘉延
学号:20214333
实验教师:王志强
实验日期:2022年5月30日
必修/选修: 公选课
一.实验内容
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
我选择了游戏制作,我对第一节课老师所教的猜数游戏大感兴趣,所以我做了个猜数游戏,加入了电脑和玩家一起猜,并且在赢家猜中之后,会有炸弹boom!
当然选择制作这个游戏也是因为它简单易用。
二.实验过程及结果
设置数字炸弹
实现猜数循环
玩家的猜数
电脑的猜数
游戏过程
第一把电脑获胜
后面来了一把玩家获胜
附上代码
import random import time #定义time和random bomb = random.randint(1, 999) #设计随机数bomb在(1,999) print("Bomb has been generated, please begin the game") start = 0 end = 999 while 1 == 1: #猜数循环,直到猜数正确结束 people = int(input('Please enter a number between {} and {}:'.format(start, end))) #玩家输入要猜得的数在这个范围内 if people > bomb: print('too big') end = people elif people < bomb: print('too small') start = people else: print('BOOM!!!') break print('The computer waited to enter a number between {} and {}:'.format(start, end)) time.sleep(1) com = random.randint(start + 1, end - 1) print('Computer input:{}'.format(com)) if com > bomb: print('too big') end = com elif com < bomb: print('too small') start = com else: print('BOOM!!!') break
在华为云服务器上开机
把python文件上传只华为ESC服务器
在putty上运行
在制作游戏过程中打算添加炸弹特效和音频,但多次实验未果,在网络上进行查询特效代码较为困难,也不能很好的展现游戏结果。
三、课程及实验总结
主要学习的内容有
(1)变量赋值及其命名规则
(2)运算符及其优先级
(3)基本数据类型
(4)循环语句
(5)列表、元组、字典、集合及其常用功能
(6)字符串与正则表达式
(7)面向对象程序设计
(8)文件操作及异常处理
(9)Python操作数据库
(10)Python爬虫爬取想要的内容
这学期所学的python让我学会很多很多,数字炸弹不是非常出色,但让我想起了老师第一次教我们猜数游戏的场景。
在课上老师带领我们做了很多有趣的python实验,我列出部分代码
#笔记 #.upper() 大写 .lower() 小写 .strip()去除首尾空格 #类(属性+函数) 属性:类的变量 方法:类的函数 #def 定义函数 def init (self): 一定要有self,不然会报错 #""" class student: name = "" number = "" hobby = "" def __init__(self, name, number, hobby): # 构造方法自动执行 self.name = name self.number = number self.hobby = hobby print(self.name, self.number, self.hobby) def edithobby(self, hobby): self.hobby = hobby print("爱好已经改变,变为:" + self.hobby) stu1 = student("纪颜成", "20214340", "星际") stu1.edithobby("模仿小憨包") print(stu1, stu1.name, stu1.number) # 封装,继承,多态
besti计算器
print("Besti计算器!你值得拥有") flag=True #while循环开始# choice=input("请输入您想要选择的计算器类型:0为普通计算器、1为复数计算器\n") while flag==True: op = input("请输入需要做的操作(+、-、*、/,输入0代表退出):\n") if op=="0": break if choice=="0": a = int(input("请输入操作数a:\n")) b = int(input("请输入操作数b:\n")) elif choice=="1": a = complex(input("请输入第一个复数:\n")) b = complex(input("请输入第二个复数:\n")) result=0 if op=="+": result = a + b elif op=="-": result = a - b elif op == "*": result = a * b elif op == "/": result = a / b else: print("输入有误,请重新输入\n") continue print(a, op, b,"=",result,"\n") #whlie循环结束#
BMI指数测算
#BMI=Body Mass Index #身体质量指数是国际上衡量人体胖瘦程度以及是否健康的一个常用指标 #体质指数(BMI)=体重(kg)÷身高^2(m) def bmi_fuc(peoplename,weight,height): bmi=weight/(height**2) if bmi<18.5: print(peoplename,"你的体重过轻,多吃点好吃的!") elif bmi>=18.5 and bmi<24.9: print(peoplename,"你的体重正常,请继续保持!") elif bmi>=24.9 and bmi<29.9: print(peoplename,"你的体重过重,请加强锻炼!") else: print(peoplename,"你可能有点肥胖,请及时检查和多锻炼!") if __name__=="_main_": bmi_fuc("sunwukong",55,1.7) ####### flag=True while flag==True: peoplename=input("请输入被测人姓名") weight=float(input("请输入被测人体重")) height=float(input("请输入被测人身高")) bmi_fuc(peoplename,weight,height) temp=input("请问,是否需要继续测试?Y/N") if temp=="Y" or temp=="y" : pass elif temp=="N" or temp=="n" : flag==False break
socket
#!/usr/bin/env python # -*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1', 502) s = socket.socket() # 创建套接字 s.connect(ip_port) # 连接服务器 while True: # 通过一个死循环不断接收用户输入,并发送给服务器 inp = input("请输入要发送的信息: ").strip() if not inp: # 防止输入空信息,导致异常退出 continue s.sendall(inp.encode()) if inp == "exit": # 如果输入的是‘exit’,表示断开连接 print("结束通信!") break server_reply = s.recv(1024).decode() print(server_reply) s.close() # 关闭连接 #!/usr/bin/env python # -*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1', 502) sk = socket.socket() # 创建套接字 sk.bind(ip_port) # 绑定服务地址 sk.listen(5) # 监听连接请求 print('启动socket服务,等待客户端连接...') conn, address = sk.accept() # 等待连接,此处自动阻塞 while True: # 一个死循环,直到客户端发送‘exit’的信号,才关闭连接 client_data = conn.recv(1024).decode() # 接收信息 if client_data == "exit": # 判断是否退出连接 exit("通信结束") print("来自%s的客户端向你发来信息:%s" % (address, client_data)) conn.sendall('服务器已经收到你的信息'.encode()) # 回馈信息给客户端 conn.close() # 关闭连接
写入文件
import os #f=open("hhh.txt",'r+',encoding= "utf-8")#打开 #f.write("嗨嗨嗨")#读写 #os.remove()#删除 #f.close()#关闭 path=r"C:\Users\86177\2143" if os.path.exists(path): print("该文件已存在!") else: os.mkdir(path)#chmod 777 xxx if os.path.exists(path+"\\214333.txt") print("该文件已存在!") file1=open(path+"\\214333.txt","r+") else: file1 = open(path + "\\214333.txt", "w+") name=input("请输入你的姓名:") number=input("请输入学号:") course=input("输入课程:") score=input("输入成绩:") flie1.write("姓名:"+name+"学号:"+number\ +"课程:"+course+"分数:"+score)
还有其他的一些有趣程序,就不一 一列出了
学习python时,其对我的最初的印象就是,相较于我学习过的c语言编程,它更加的简洁。所有的变量都不需要像c语言编程那样需要提前去定义,这样给了编程者很大的自由空间与方便。对于简化程序的代码,起到了许多的作用。而且,在字符串上的处理,python相对于c语言也是给程序员极大的便利。在c语言中,只能用字符类的数组对字符串进行相应的操作,步骤也是相对于比较繁琐的,而在python中,当我们需要创建一个字符串的时候,只需要在创建字符串的时候用"s=”就可以了。而python不仅如此,它的库也很多,正因为它强大的库,让编程变得不再艰难。我们只需要调用库中的函数,而对于函数的具体实现,也没有特殊的需求。
但是,我认为python虽然在许多方面相对于c语言比较方便,但也有其相对于弱一点的方面,比如说for循环等方面。不过也依然不会影响到python的强大,而随着近几年来的发展,python的受欢迎度也越来越高,而它的运用的领域也是越来越多,比如人工智能和大数据等领域,python都是在其中扮演者重要的角色。虽然一学期下来,我对python的学习也仅仅只是它的基础方面,但python的强大,也是足足地吸引着我,希望自己能够在不断地学习中,将python学习的更好。
初选这门课也是我们宿舍一起选的哈(想着一起做互相有个照应hh),老师上课的风格也很诙谐轻松,这让我们更易上手学习。在以后的课程里也希望能够选到王志强老师的课~