20211105李宜时《Python程序设计》实验四报告

课程: 《Python程序设计》
班级: 2111
姓名: 李宜时
学号: 20211105
实验教师: 王志强
实验日期: 2022年5月31日
必修/选修: 公选课

1.实验内容
模拟原神这款游戏的抽卡模式做一个抽卡的模拟器
2.实验要求:
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)

注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

批阅:注意本次实验不算做实验总分,前三个实验每个实验10分,累计30分。本次实践算入综合实践,打分为25分。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分

(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。

注意:每个人的实验不能重复,课代表先统计大家做的内容并汇总,有重复的需要自行协商。
3.实验过程及结果
(1).首先对原神游戏抽卡的效果机制进行了解,并且尝试找到抽卡的模式,由于我对原神的抽卡模式不是很了解也没找到办法用数学和函数来表示他,后来在哔站上看到一个原神爱好者的实验,我就在哔站上与他私信交流,并学习他的思维模式用python来编写原神抽卡。
(2).以下是代码的基本解释
首先是打印开始的条件

之后是定义一些变量

在之后从库中引用

然后进行定义

之后开始函数和循环(一下是开始,具体函数见下方源代码)

最后打印结果

(3).Pycharm上运行成果展示


(4).在ESC上进行运行

(5).源代码
print("原神抽卡模拟器——准备好开始了吗")

s=input("你想要抽谁的池子啊?")
print("PS:抽卡数为0则为终止抽卡")

a="✨"+s+"✨5"
qq="✨我叫"+s+",是个僵尸"+"✨5"

b=[a,a,a,a,a]
c=["✨迪卢克✨5","✨琴✨5",qq,"✨莫娜✨5","✨刻晴✨5"]
d=["凝光✨4","云堇✨4","五郎✨4","诺艾尔✨4",
"托马✨4","班尼特✨4","安柏✨4","香菱✨4",
"辛焱✨4","烟绯✨4","重云✨4","罗莎莉亚✨4",
"凯亚✨4","迪奥娜✨4","早柚✨4","砂糖✨4",
"九条裟罗✨4","菲谢尔✨4","丽莎✨4","雷泽✨4",
"北斗✨4","行秋✨4","芭芭拉✨4",
"安柏✨4","凯亚✨4","丽莎✨4"]
e=["弓藏✨4","绝弦✨4","昭心✨4","流浪乐章✨4","西风长枪✨4",
"雨裁✨4","钟剑✨4","匣里龙吟✨4","笛剑✨4","祭礼弓✨4",
"西风猎弓✨4","祭礼残章✨4","西风秘典✨4","匣里灭尘✨4",
"祭礼大剑✨4","西风大剑✨4","祭礼剑✨4","西风剑✨4"]
f=["弹弓","鸦羽弓","讨英龙杰谭","史莱姆枪","沐浴龙血的剑","飞天御剑",
"冷刃","神射手之誓","翡玉法球","魔导绪论","以理服人","铁影阔剑","黎明神剑"]

from random import choice

bd4=[]
bd5=[]
dbd=0
z=[]
ch=[]
kc=b+c+d2+e2+f*120
zg4=[]
zg5=[]
zn=0

def ck(n) :
x=0
global kc
global bd4
global bd5
global z
global ch
global dbd
global zg4
global zg5
global zn
global a
global b
global c
global d
global e
global f

while x != n :
    g=choice(kc)
    bd4.append(g)
    bd5.append(g)
    z.append(g)
    x=x+1

    if len(bd4)==9 and [i for i in bd4 if i in d+e]==[] :
        g=choice(d+e)
        bd4=[]
        bd5.append(g)
        z.append(g)
        zg4.append(g)
        x=x+1
    if [i for i in bd4 if i in d+e]!=[] :
        bd4=[]
        zg4.append(g)

    if g in b :
        ch.append(g)
        zg5.append(g)
        dbd=0
        bd5=[]
    if g in c :
        ch.append(g)
        zg5.append(g)
        dbd=1
        bd5=[]

    if dbd == 0 :
        if len(bd5)==89 and [i for i in bd5 if i in b+c]==[] :
            kc=b+c
        else:
            if len(bd5)>=85 and [i for i in bd5 if i in b+c]==[] :
                kc=b*10+c*10+d*2+e*2+f*120
            else:
                if len(bd5)>=80 and [i for i in bd5 if i in b+c]==[] :
                    kc=b*5+c*5+d*2+e*2+f*120
                else:
                    if len(bd5)>70 and [i for i in bd5 if i in b+c]==[] :
                        kc=b*3+c*3+d*2+e*2+f*120
                    elif len(bd5)<70 :
                        kc=b+c+d*2+e*2+f*120
    elif dbd == 1 :
        if len(bd5)==89 and [i for i in bd5 if i in b+c]==[] :
            kc=b
        else:
            if len(bd5)>=85 and [i for i in bd5 if i in b+c]==[] :
                kc=b*10+d+e+f*60
            else:
                if len(bd5)>=80 and [i for i in bd5 if i in b+c]==[] :
                   kc=b*5+d+e+f*60
                else:
                   if len(bd5)>=70 and [i for i in bd5 if i in b+c]==[] :
                    kc=b*3+d+e+f*60
                   elif len(bd5)<70 :
                    kc=b+d+e+f*60
else :
    print()

    print("出货: ")
    if ch==[] :
        print("无")
    else:
        for i in ch :
            print(i)

    print()

    print("详细情况: ")
    for i in z :
        print(i)
    z=[]
    ch=[]
    print()
    n=eval(input("本次抽卡次数: "))
    if n !=0 :
        zn=zn+n
        ck(n)
    else :
        print("本次抽卡总出货数: ")
        print()
        print("四星出货: ")
        for i in zg4 :
            print(i)
        print()
        print("五星出货: ")
        for i in zg5 :
            print(i)
        print("本次抽卡总数: ",zn)
        print("本次抽卡花费: ",zn*160,"原石")

n=eval(input("本次抽卡次数:"))

if n !=0:
zn=zn+n
ck(n)
else:
print("行吧,等待一个池子吧")

print()
print()
print()

4.实验中遇到的问题和解决办法
问题1:再设计代码的时候对原神的抽卡模式和函数设计不了解
问题1解决办法:在哔站上与懂得原神抽卡模式的人进行私信交流并且求教
问题2:在上传到华为云上的时候没有办法运行
问题2解决办法:想起他的同学请教得知运行的办法
问题3:代码无法按照预期运行
问题3解决办法:反复查看学习内容,发现最后没有循环的结尾导致不完整无法运行。
5.全课总结(感悟、思考等)
首先,我十分的荣幸能够选择这们课程,遇到了王志强老师。
在这们课中我们首先了解了python,知道了它的基本用途和优势所在
我们下载了相关的软件 配置了相关的环境
之后我们学习了相关的知识:输入输出,运算符,字符串,数字类型,变量缩进,注释
各种语句类型,(continue语句,break语句)嵌套循环,for循环,while循环,各种的if语句
集合,字典,元祖,列表,乘法,切片,索引
自字符串的相关运行和变化
各种函数的编写和元素
访问限制,如和使用ip地址向别的电脑发消息
爬虫,反爬虫,反反爬虫。
这些知识,由浅入深,将我带进python的世界,让我从一个python的小白,到现在的会一点小小的编程。
在这个课程中我遇到的最大的问题就是我的电脑的问题,我的电脑是苹果的电脑,各种相关的软件比如pycharm,vscode,git,xshell都是不能够下载和正常的使用的,在开始的学习中给我造成了许多的困扰,并且网上的各种教程都没有相关的讲解,也没有软件的相关下位替代,就算有零星的讲解也都是老版本苹果电脑,对于新版本的电脑根本不适合,我也是因此十分的困惑,直到后来我找到了安装虚拟机的方法,给我的电脑好不容易安装了免费的虚拟机,在这之后我才可以在虚拟机上进行一些常规的操作,python的学习才走上正轨。
课程的王老师是十分优秀的老师,老师对于我们的问题有非常详细的解答,对待各种的问题都会有相对应的方法。老师上课的讲解也十分的通俗易懂,让人接受起来没有什么难题,在每一次的试验中也让我们对于我们这一段时间学习的内容进行复习,是十分有助于我们学习的方式,防止了我们一边学习一边遗忘,老师在每一次的课程之后也都会在微信群里发布有关的资料帮助大家开拓视野进一步学习,加强大家的兴趣,将python和日常生活相结合,还有相关的法律法规。
总之,在这门python课程上我学到了很多的东西,也是在很快乐很轻松的氛围之内学到了,这么一种编程模式,还当了很长一段时间的大三学长啊哈哈哈,给我留下了十分美好的回忆。

posted @ 2022-05-31 22:08  20211105李宜时  阅读(83)  评论(0编辑  收藏  举报