PYTHON奇幻冒险记19 杀死那只BUG

PYTHON奇幻冒险记19 杀死那只BUG

每天只需要占用大家中午吃饭的十分钟,有事没事看一下,轻松掌握一门语言!让我们一起努力吧。

如果大家有看我这个系列的文章的话,你会发现所有的知识都是一点点的增加的,我承认自己的文笔不是特别出彩,但是我依然会尽自己的努力,分享自己学习中一些收获,快乐其实就是这样!不过确实有些辛苦!

亲爱的,读者朋友们,欢迎大家来到PYTHON的奇幻冒险世界里!今天我们要解决的问题大家在生活中可能都会遇到!就是BUG!BUG其实并不是一件多么令人讨厌的事情,至少有BUG,我们就有工作量!好啦!言归正传!首先呢!咱们先解决上一课的遗留问题!


BOSS来袭

前期我们已经学习了很多PYTHON方面的知识,现在我们需要用它去改变PYTHON世界中的游戏规则!下面这个BOSS主要让我们和电脑做一个小游戏!“剪刀石头布!”
对的,就是猜拳小游戏!在这个猜拳的小游戏中我会加入一些新的知识点!大家一定要认真的看哦!否则就会失去一次提升的机会!

话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!

import random

# 出拳
CaiQuan  = ['石头','剪刀','布']
Computer = random.choice(CaiQuan)
Player   = ''
Player   = input('请出拳:[石头、剪刀、布]')  # 请用户输入选择
while Player not in CaiQuan:  # 当用户输入错误,提示错误,重新输入
    print('输入有误,请重新出拳')
    Player = input()

# 开始你的表演
print('————战斗过程————')
print('电脑出了:%s' % Computer)
print('你出了:%s'   % Player)

# 胜负
print('—————结果—————')
if Player == Computer:  # 使用if进行条件判断
    print('平局!')
elif (Player == '石头' and Computer == '剪刀') or (Player == '剪刀' and Computer == '布') or (Player == '布' and Computer == '石头'):
    print('你赢了!')
else:
    print('你输了!')

运行结果:

请出拳:[石头、剪刀、布]布
————战斗过程————
电脑出了:布
你出了:布
—————结果—————
平局!

是不是很简单呢?这样的设计是不是很完美呢?小鹏鹏是一个做事认真的人,想要进一步的改进!下面我们需要再将上面的代码优化一下,因为这样写,小鹏鹏觉得还是有些不好理解。


import random

# 出拳
CaiQuan  = ['石头','剪刀','布']
Computer = random.choice(CaiQuan)
Player   = ''
Player   = input('请出拳:[石头、剪刀、布]')  # 请用户输入选择
while Player not in CaiQuan:  # 当用户输入错误,提示错误,重新输入
    print('输入有误,请重新出拳')
    Player = input()

# 开始你的表演
print('————战斗过程————')
print('电脑出了:%s' % Computer)
print('你出了:%s'   % Player)

# 胜负
print('—————结果—————')
if Player == Computer:  # 使用if进行条件判断
    print('平局!')
# 现在我们需要换一种思维模式,假设电脑的选择有3种,索引位置分别是:0~石头、1~剪刀、2~布。
# 假设在电脑索引位置上减1,相当于右移,对应:-1布,0石头,1剪刀,皆胜。
elif Player == CaiQuan[CaiQuan.index(Computer)-1]:
    print('你赢了!')
else:
    print('你输了!')

运行结果:


请出拳:[石头、剪刀、布]剪刀
————战斗过程————
电脑出了:剪刀
你出了:剪刀
—————结果—————
平局!

不知道大家有没有发现什么不同,在面的代码中,我用到了一个index()函数!index()函数用于找出列表中某个元素第一次出现的索引位置!所以说嘛,看起来简单的事情背后,都有神奇的秘密哦!

1. 一起来找BUG

相信大家在学习PYTHON的过程中,肯定会遇到很多的BUG!今天我们就一起解决它!下面的例子中会有一些大家经常遇到的错误!所以你一定要动手敲一下哦!实践才是最好的老师!

话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!


Money = [100,500,1000,2000,5000,10000,20000,45000]

for i in range(1, len(Money))
    if Money[i-1] == 0:  # 判断除数等于0时,特殊处理。
        print('你上次存款为 0 哦!')
    else:
        times = Money[i]/Money[i-1]
        print('你的存款涨了%f倍'%times)

运行结果:

ERROR line 3
    for i in range(1, len(Money))
                                ^
SyntaxError: invalid syntax

大家有没有明白?第三行代码出错,无效的语法!是不是for语句后面要加分号呢?记住PYTHON的世界里面,没有中文哦!一定要用英文格式!

Money = [100,500,1000,2000,5000,10000,20000,45000]

for i in range(1, len(Money)):
    if Money[i-1] == 0:  # 判断除数等于0时,特殊处理。
        print('你上次存款为 0 哦!')
    else:
        times = Money[i]/Money[i-1]
        print('你的存款涨了%f倍'%times)

运行结果:


你的存款涨了5.000000倍
你的存款涨了2.000000倍
你的存款涨了2.000000倍
你的存款涨了2.500000倍
你的存款涨了2.000000倍
你的存款涨了2.000000倍
你的存款涨了2.250000

其实BUG的出现并不是一件坏的事情,对我们而言,最重要的事情,就是找到问题出错的原因!然后解决它,就对了!这也是一种学习进步的过程!

2. 杀死BOSS

通常,我们打游戏的过程中一定会遇见BOSS!那就消灭它!注意细节!BOSS击败后会有很大的收获哦!很多知识的细节,我将融入到游戏之中,这样大家可以更好的掌握!

话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!

print('\n欢迎大家来到PYTHON的奇幻世界!\n')
print('\n相信即将会成为这片大陆的主人!\n')

while True:
    try:
        x = input('请你输入被除数:')
        y = input('请你输入除数:')
        z = float(x)/float(y)
        print(x,'/',y,'=',z)
        break  # 这里默认每次只计算一次,所以在这里写了 break。
    except ZeroDivisionError:  # 当除数为0时,跳出提示,重新输入。
        print('0是不能做除数的!')
    except ValueError:  # 当除数或被除数中有一个不是数字时,跳出提示,重新输入。
        print('除数和被除数都应该是整值或浮点数!')

运行结果

欢迎大家来到PYTHON的奇幻世界!
相信即将会成为这片大陆的主人!

请你输入被除数:6
请你输入除数:r
除数和被除数都应该是整值或浮点数!
请你输入被除数:f
请你输入除数:7
除数和被除数都应该是整值或浮点数!
请你输入被除数:9
请你输入除数:7
9 / 7 = 1.2857142857142858


不知道大家有没有注意到一个细节,try…except语句!是的,当我们阐述了我们的表达式,一旦触发了except中的条件,这个错误就会被“过滤”掉。大家可以结合代码更好的理解哦!

总结

突然发现自己已经写了很多很多了!加上之前写的文章,不知道大家收获了多少。PYTHON是一门优秀的语言,我曾经听过,小孩子现在都会用PYTHON写代码了!所以说,我们更要努力的前行!虽然学习很辛苦,但是我相信是值得的!
加油!本系列文章我将坚持原创,而且是免费对大家开放!学习需要过程,一点点积累,不可能一下就会!所以,一定要紧跟着文章的进展,好好进步!

下节课,我准备写一篇教大家谈对象的文章,对的,就是谈对象!(毕竟我们的PYTHON也是一门面向对象的编程语言嘛!复杂的知识简单化,轻松化,就是我想要写文章的初衷!下期内容更加的精彩!我们不见不散~)

欢迎大家阅读我的《人性的弱点》,给你一种不一样的感觉!

猜你喜欢

转载自blog.csdn.net/weixin_46259642/article/details/112543733