10.8 实践项目

作为实践,编程完成下面的任务。


调试硬币抛掷

下面程序的意图是一个简单的硬币抛掷猜测游戏。玩家有两次猜测机会(这

是一个简单的游戏)。但是,程序中有一些缺陷。让程序运行几次,找出缺陷,使该程序能正确运行。
import  random guess  =  ''
while  guess  not  in  ('heads',  'tails'):
print('Guess  the  coin  toss!  Enter  heads  or  tails:') guess  =  input()
toss  =  random.randint(0,  1)  #  0  is  tails,  1  is  heads if  toss  ==  guess:
print('You  got  it!') else:
print('Nope!  Guess  again!') guesss  =  input()
if  toss  ==  guess: print('You  got  it!')
else:
print('Nope.  You  are  really  bad  at  this  game.')

10.6    小结


断言、异常、日志和调试器,都是在程序中发现和预防缺陷的有用工具。用

Python 语句实现的断言,是实现心智正常检查的好方式。如果必要的条件没有保持为 True,它将尽早给出警告。断言所针对的错误,是程序不应该尝试恢复的,而是应该快速失败。否则,你应该抛出异常。
异常可以由 try 和 except 语句捕捉和处理。logging 模块是一种很好的方式,可以在运行时查看代码的内部,它比使用 print() 
函数要方便得多,因为它有不同的日志级别,并能将日志写入文本文件。
调试器让你每次单步执行一行代码。或者,可以用正常速度运行程序,并让调试器暂停在设置了断点的代码行上。利用调试器,你可以看到程序在运行期间,任何时候所有变量的值。
这些调试工具和技术将帮助你编写正确工作的程序。不小心在代码中引入缺陷,这是不可避免的,不论你有多少年的编码经验。


 习题


1 .写一条 assert 语句,如果变量 spam 是一个小于 10  的整数, 就触发


AssertionError。
2.编写一条 assert 语句,如果 eggs 和 bacon 包含的字符串彼此相同,而且不论大小写如何,就触发 AssertionError(也就是说,'hello' 和 'hello' 
被认为相同, 'goodbye' 和 'GOODbye' 也被认为相同)。
3.编写一条 assert 语句,总是触发 AssertionError。
4.为了能调用 logging.debug(),程序中必须加入哪两行代码?
5.为了让 logging.debug() 将日志消息发送到名为 programLog.txt 的文件中,程序必须加入哪两行代码?
6.5 个日志级别是什么?
7.你可以加入哪一行代码,禁用程序中所有的日志消息?
8.显示同样的消息,为什么使用日志消息比使用 print() 要好?
9.调试控制窗口中的 Step、Over 和Out 按钮有什么区别?
10.在点击调试控制窗口中的Go 按钮后,调试器何时会停下来?
11.什么是断点?
12.在 IDLE 中,如何在一行代码上设置断点?
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值