1835575828 发表于 2021-7-5 23:30:20

按照教程敲的代码改进出现问题

本帖最后由 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-5 23:39:12

三天就学完类了,厉害厉害,大佬带带我

1835575828 发表于 2021-7-5 23:40:17

深谙流年 发表于 2021-7-5 23:39
三天就学完类了,厉害厉害,大佬带带我

没学懂 只学了个大概 然后按教程敲的 自己改了一下 然后就改废了

1835575828 发表于 2021-7-5 23:40:51

深谙流年 发表于 2021-7-5 23:39
三天就学完类了,厉害厉害,大佬带带我

三天花了很多时间啊,每天学十来个小时啊,零基础学的太累了

深谙流年 发表于 2021-7-5 23:49:48

1835575828 发表于 2021-7-5 23:40
三天花了很多时间啊,每天学十来个小时啊,零基础学的太累了

我类以前的基础学了好长时间,一直在磨磨唧唧的学,现在才正式开始学类,唉,转it感觉难

1835575828 发表于 2021-7-5 23:53:18

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

有些东西我没学清楚 像字符串很多没记住

深谙流年 发表于 2021-7-5 23:58:46

1835575828 发表于 2021-7-5 23:53
有些东西我没学清楚 像字符串很多没记住

我个人认为基础还是要牢固的,虽然说可以百度,而且一看就会,但是基础记牢了,在编写高级复杂代码的时候就不会那么卡了

1835575828 发表于 2021-7-6 00:06:11

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

是 我准备明天书到了后就开始补一下基础 就先不往前写了 这边就出现了问题 while里面出的问题 还不知道怎么修改

深谙流年 发表于 2021-7-6 00:09:46

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

好像是你if里面的continue问题吧,后面的直接忽略了,

1835575828 发表于 2021-7-6 00:13:04

深谙流年 发表于 2021-7-6 00:09
好像是你if里面的continue问题吧,后面的直接忽略了,

continue不是跳出本轮循环吗?我跳出本轮循环一轮回又随机给a赋值了,应该不会影响啊

深谙流年 发表于 2021-7-6 00:15:23

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

是跳出循环了,但是你最下面的代码也不会执行了呀

1835575828 发表于 2021-7-6 00:16:25

深谙流年 发表于 2021-7-6 00:15
是跳出循环了,但是你最下面的代码也不会执行了呀

是呀 可是现在的情况是百分百执行这个if里面的了 else不会执行了 而我的设置应该是有30%的概率执行if里面的内容

深谙流年 发表于 2021-7-6 00:19:55

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

概率好像不是这样算的{:5_94:},并不是说给了三个数就是30概率

深谙流年 发表于 2021-7-6 00:21:03

深谙流年 发表于 2021-7-6 00:19
概率好像不是这样算的,并不是说给了三个数就是30概率

你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了

1835575828 发表于 2021-7-6 00:21:20

深谙流年 发表于 2021-7-6 00:19
概率好像不是这样算的,并不是说给了三个数就是30概率

有点不太懂 我给a随机1到10的某个数,如果a随机到1 or 2 or 3时则执行if的内容,如果没有那就执行else下去,这样有什么问题吗

1835575828 发表于 2021-7-6 00:23:07

深谙流年 发表于 2021-7-6 00:21
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了

哎 可以了哎 那为什么随机1到10不行

1835575828 发表于 2021-7-6 00:23:57

深谙流年 发表于 2021-7-6 00:21
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了

就是我按你的随机了1~3,然后如果a=1,则执行if 可为什么1到10随机1,2,3不行

深谙流年 发表于 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%的概率并不是说买一百张就会中一张,

深谙流年 发表于 2021-7-6 00:25:24

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

或者你写个循环,多试几次,有可能之前就没随机到123这三个数

深谙流年 发表于 2021-7-6 00:26:29

1835575828 发表于 2021-7-6 00:23
哎 可以了哎 那为什么随机1到10不行

概率问题,这个很深奥,很麻烦,我也不是很懂
页: [1] 2
查看完整版本: 按照教程敲的代码改进出现问题