按照教程敲的代码改进出现问题
本帖最后由 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
三天就学完类了,厉害厉害,大佬带带我
没学懂 只学了个大概 然后按教程敲的 自己改了一下 然后就改废了 深谙流年 发表于 2021-7-5 23:39
三天就学完类了,厉害厉害,大佬带带我
三天花了很多时间啊,每天学十来个小时啊,零基础学的太累了 1835575828 发表于 2021-7-5 23:40
三天花了很多时间啊,每天学十来个小时啊,零基础学的太累了
我类以前的基础学了好长时间,一直在磨磨唧唧的学,现在才正式开始学类,唉,转it感觉难 深谙流年 发表于 2021-7-5 23:49
我类以前的基础学了好长时间,一直在磨磨唧唧的学,现在才正式开始学类,唉,转it感觉难
有些东西我没学清楚 像字符串很多没记住 1835575828 发表于 2021-7-5 23:53
有些东西我没学清楚 像字符串很多没记住
我个人认为基础还是要牢固的,虽然说可以百度,而且一看就会,但是基础记牢了,在编写高级复杂代码的时候就不会那么卡了 深谙流年 发表于 2021-7-5 23:58
我个人认为基础还是要牢固的,虽然说可以百度,而且一看就会,但是基础记牢了,在编写高级复杂代码的时候 ...
是 我准备明天书到了后就开始补一下基础 就先不往前写了 这边就出现了问题 while里面出的问题 还不知道怎么修改 1835575828 发表于 2021-7-6 00:06
是 我准备明天书到了后就开始补一下基础 就先不往前写了 这边就出现了问题 while里面出的问题 还不知道怎 ...
好像是你if里面的continue问题吧,后面的直接忽略了, 深谙流年 发表于 2021-7-6 00:09
好像是你if里面的continue问题吧,后面的直接忽略了,
continue不是跳出本轮循环吗?我跳出本轮循环一轮回又随机给a赋值了,应该不会影响啊 1835575828 发表于 2021-7-6 00:13
continue不是跳出本轮循环吗?我跳出本轮循环一轮回又随机给a赋值了,应该不会影响啊
是跳出循环了,但是你最下面的代码也不会执行了呀 深谙流年 发表于 2021-7-6 00:15
是跳出循环了,但是你最下面的代码也不会执行了呀
是呀 可是现在的情况是百分百执行这个if里面的了 else不会执行了 而我的设置应该是有30%的概率执行if里面的内容 1835575828 发表于 2021-7-6 00:16
是呀 可是现在的情况是百分百执行这个if里面的了 else不会执行了 而我的设置应该是有30%的概率执行if里面 ...
概率好像不是这样算的{:5_94:},并不是说给了三个数就是30概率 深谙流年 发表于 2021-7-6 00:19
概率好像不是这样算的,并不是说给了三个数就是30概率
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了 深谙流年 发表于 2021-7-6 00:19
概率好像不是这样算的,并不是说给了三个数就是30概率
有点不太懂 我给a随机1到10的某个数,如果a随机到1 or 2 or 3时则执行if的内容,如果没有那就执行else下去,这样有什么问题吗 深谙流年 发表于 2021-7-6 00:21
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了
哎 可以了哎 那为什么随机1到10不行 深谙流年 发表于 2021-7-6 00:21
你试试指点三个数,然后随机一个数,这个好像可以算是伪随机了
就是我按你的随机了1~3,然后如果a=1,则执行if 可为什么1到10随机1,2,3不行 1835575828 发表于 2021-7-6 00:21
有点不太懂 我给a随机1到10的某个数,如果a随机到1 or 2 or 3时则执行if的内容,如果没有那就执行else下 ...
我的意思是概率并不是说给三个数就是30%概率了,这个概率问题好像很深奥,并不是我们想当然这样的,就跟买彩票一样,1%的概率并不是说买一百张就会中一张, 深谙流年 发表于 2021-7-6 00:24
我的意思是概率并不是说给三个数就是30%概率了,这个概率问题好像很深奥,并不是我们想当然这样的,就跟 ...
或者你写个循环,多试几次,有可能之前就没随机到123这三个数 1835575828 发表于 2021-7-6 00:23
哎 可以了哎 那为什么随机1到10不行
概率问题,这个很深奥,很麻烦,我也不是很懂
页:
[1]
2