鱼C论坛

 找回密码
 立即注册
查看: 3476|回复: 25

[已解决]按照教程敲的代码改进出现问题

[复制链接]
发表于 2021-7-5 23:30:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 1835575828 于 2021-7-5 23:36 编辑

才学三天python 不知道哪里出现了问题
想让两个角色互相对打 作者想让叶孤城有30%的概率释放天外飞仙并眩晕对方一回合,但是按这种代码运行,叶孤城百分百释放了天外飞仙,请大佬解释
关键是while后面第二个if中的continue不知道用的对不对 应该是那里出了问题
import time
import random
class Role:
    def __init__(self,name,hp):
        self.name=name
        self.hp=hp
    def tong(self,enemy):
        enemy.hp-=10
        print('【%s】捅了【%s】一刀'%(self.name,enemy.name))
    def kanren(self,enemy):
        enemy.hp-=15
        print('【%s】砍了【%s】一刀'%(self.name,enemy.name))
    def dazhao(self,enemy):
        enemy.hp-=30
        print('【%s】对【%s】使用天外飞仙,眩晕【%s】一回合'%(self.name,enemy.name,enemy.name))
    def chiyao(self):
        self.hp+=10
        print('【%s】吃了一口药'%(self.name))
    def __str__(self):
        return '%s还剩下%s的血量'%(self.name,self.hp)
xmcx=Role('西门吹雪',300)
ygc=Role('叶孤城',300)
time.sleep(3)
print('决战紫禁之巅')
print('对战双方:')
print(xmcx.name,'生命:%s'%(xmcx.hp))
print(ygc.name,'生命:%s'%(ygc.hp))
print('战斗开始!')
time.sleep(3)
while True:
    if xmcx.hp<=0 or ygc.hp<=0:
        break
    a=random.randint(1,10)
    if a == 1 or 2 or 3:
        ygc.dazhao(xmcx)
        print(ygc)
        print(xmcx)
        print('**************************************')
        continue
    else:
        ygc.kanren(xmcx)
        print(ygc)
        print(xmcx)
        print('**************************************')
    xmcx.tong(ygc)
    print(ygc)
    print(xmcx)
    print('**************************************')
    xmcx.chiyao()
    print(ygc)
    print(xmcx)
    print('**************************************')
    time.sleep(1)
print('游戏结束....')
print('西门吹雪获胜')
最佳答案
2021-7-6 14:35:21
这句用错了
 if a == 1 or 2 or 3:

应该拆开写
 if a == 1 or a == 2 or  a == 3:

或者

if a in [1,2,3]:
import time
import random
class Role:
    def __init__(self,name,hp):
        self.name=name
        self.hp=hp
    def tong(self,enemy):
        enemy.hp-=10
        print('【%s】捅了【%s】一刀'%(self.name,enemy.name))
    def kanren(self,enemy):
        enemy.hp-=15
        print('【%s】砍了【%s】一刀'%(self.name,enemy.name))
    def dazhao(self,enemy):
        enemy.hp-=30
        print('【%s】对【%s】使用天外飞仙,眩晕【%s】一回合'%(self.name,enemy.name,enemy.name))
    def chiyao(self):
        self.hp+=10
        print('【%s】吃了一口药'%(self.name))
    def __str__(self):
        return '%s还剩下%s的血量'%(self.name,self.hp)
xmcx=Role('西门吹雪',300)
ygc=Role('叶孤城',300)
time.sleep(3)
print('决战紫禁之巅')
print('对战双方:')
print(xmcx.name,'生命:%s'%(xmcx.hp))
print(ygc.name,'生命:%s'%(ygc.hp))
print('战斗开始!')
time.sleep(3)
while True:
    if xmcx.hp<=0 or ygc.hp<=0:
        break
    a=random.randint(1,9)
    if a in [1,2,3]:
        ygc.dazhao(xmcx)
        print(ygc)
        print(xmcx)
        print('**************************************')
        continue
    else:
        ygc.kanren(xmcx)
        print(ygc)
        print(xmcx)
        print('**************************************')
    xmcx.tong(ygc)
    print(ygc)
    print(xmcx)
    print('**************************************')
    xmcx.chiyao()
    print(ygc)
    print(xmcx)
    print('**************************************')
    time.sleep(1)
print('游戏结束....')
print('西门吹雪获胜')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-5 23:39:12 | 显示全部楼层
三天就学完类了,厉害厉害,大佬带带我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-5 23:40:17 | 显示全部楼层
深谙流年 发表于 2021-7-5 23:39
三天就学完类了,厉害厉害,大佬带带我

没学懂 只学了个大概 然后按教程敲的 自己改了一下 然后就改废了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-5 23:40:51 | 显示全部楼层
深谙流年 发表于 2021-7-5 23:39
三天就学完类了,厉害厉害,大佬带带我

三天花了很多时间啊,每天学十来个小时啊,零基础学的太累了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-5 23:49:48 | 显示全部楼层
1835575828 发表于 2021-7-5 23:40
三天花了很多时间啊,每天学十来个小时啊,零基础学的太累了

我类以前的基础学了好长时间,一直在磨磨唧唧的学,现在才正式开始学类,唉,转it感觉难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-5 23:53:18 | 显示全部楼层
深谙流年 发表于 2021-7-5 23:49
我类以前的基础学了好长时间,一直在磨磨唧唧的学,现在才正式开始学类,唉,转it感觉难

有些东西我没学清楚 像字符串很多没记住
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-5 23:58:46 | 显示全部楼层
1835575828 发表于 2021-7-5 23:53
有些东西我没学清楚 像字符串很多没记住

我个人认为基础还是要牢固的,虽然说可以百度,而且一看就会,但是基础记牢了,在编写高级复杂代码的时候就不会那么卡了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-6 00:06:11 | 显示全部楼层
深谙流年 发表于 2021-7-5 23:58
我个人认为基础还是要牢固的,虽然说可以百度,而且一看就会,但是基础记牢了,在编写高级复杂代码的时候 ...

是 我准备明天书到了后就开始补一下基础 就先不往前写了 这边就出现了问题 while里面出的问题 还不知道怎么修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:09:46 | 显示全部楼层
1835575828 发表于 2021-7-6 00:06
是 我准备明天书到了后就开始补一下基础 就先不往前写了 这边就出现了问题 while里面出的问题 还不知道怎 ...

好像是你if里面的continue问题吧,后面的直接忽略了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-6 00:13:04 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:09
好像是你if里面的continue问题吧,后面的直接忽略了,

continue不是跳出本轮循环吗?我跳出本轮循环一轮回又随机给a赋值了,应该不会影响啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:15:23 | 显示全部楼层
1835575828 发表于 2021-7-6 00:13
continue不是跳出本轮循环吗?我跳出本轮循环一轮回又随机给a赋值了,应该不会影响啊

是跳出循环了,但是你最下面的代码也不会执行了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-6 00:16:25 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:15
是跳出循环了,但是你最下面的代码也不会执行了呀

是呀 可是现在的情况是百分百执行这个if里面的了 else不会执行了 而我的设置应该是有30%的概率执行if里面的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:19:55 | 显示全部楼层
1835575828 发表于 2021-7-6 00:16
是呀 可是现在的情况是百分百执行这个if里面的了 else不会执行了 而我的设置应该是有30%的概率执行if里面 ...

概率好像不是这样算的,并不是说给了三个数就是30概率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:21:03 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:19
概率好像不是这样算的,并不是说给了三个数就是30概率

你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-6 00:21:20 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:19
概率好像不是这样算的,并不是说给了三个数就是30概率

有点不太懂 我给a随机1到10的某个数,如果a随机到1 or 2 or 3时则执行if的内容,如果没有那就执行else下去,这样有什么问题吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-6 00:23:07 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:21
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了

哎 可以了哎 那为什么随机1到10不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-6 00:23:57 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:21
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了

就是我按你的随机了1~3,然后如果a=1,则执行if 可为什么1到10随机1,2,3不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:24:43 | 显示全部楼层
1835575828 发表于 2021-7-6 00:21
有点不太懂 我给a随机1到10的某个数,如果a随机到1 or 2 or 3时则执行if的内容,如果没有那就执行else下 ...

我的意思是概率并不是说给三个数就是30%概率了,这个概率问题好像很深奥,并不是我们想当然这样的,就跟买彩票一样,1%的概率并不是说买一百张就会中一张,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:25:24 | 显示全部楼层
深谙流年 发表于 2021-7-6 00:24
我的意思是概率并不是说给三个数就是30%概率了,这个概率问题好像很深奥,并不是我们想当然这样的,就跟 ...

或者你写个循环,多试几次,有可能之前就没随机到123这三个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-6 00:26:29 | 显示全部楼层
1835575828 发表于 2021-7-6 00:23
哎 可以了哎 那为什么随机1到10不行

概率问题,这个很深奥,很麻烦,我也不是很懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-8 03:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表