zoukankan      html  css  js  c++  java
  • 练习36--设计和调试

    一 if语句的规则

    1. 每一个“if 语句”必须包含一个 else。
    2. 如果这个 else 永远都不应该被执行到,因为它本身没有任何意义,那你必须在 else语句后面使用一个叫做 die 的函数,让它打印出错误信息并且死给你看,就像我们上节课做的那样,按照这个思路你可以找到很多错误。
    3. “if 语句”的嵌套不要超过 2 层,最好尽量保持只有 1 层。
    4. 把“if 语句”当做段落来对待,其中的每一个 if, elif, else 就跟段落中的句子一样。在每句前后留一个空行以作区分。
    5. 你的布尔测试应该很简单,如果它们很复杂的话,你需要将它们的运算事先放到一个变量里,并且为变量取一个好名字。

    二 循环的规则

    1. 只有在循环永不停止时使用“while循环”,这意味着你可能永远都用不到。这条只有Python 中成立,其他的语言另当别论。
    2. 其他类型的循环都使用“for循环”,尤其是在循环的对象数量固定或者有限的情况下。

    三 调试建议

    1. 不要使用调试器(“debugger”)。调试器所做的相当于对病人的全身扫描。你并不会得到某方面的有用信息,而且你会发现它输出的信息太多,而且大部分没有用,或者只会让你更加困惑。
    2. 最好的调试程序的方法是用 print 在每个你想要检查的关键环节将关键变量打印出来,从而检查那里是否有错。
    3. 让程序一部分一部分地运行起来。不要等一个很长的脚本写完后才去运行它。写一点,运行一点,再修改一点。

    四 课后作业

    写软件最好的方式是把它分解成很多小任务来完成:
    1. 在一张纸或者索引卡片上,写上要完成这个软件你需要做的任务列表,这就是你的
    待办事项。
    2. 从任务列表上找到对你来说最容易的一个任务。
    3. 在你的源文件上用注释的方式写下你要用代码实现它的思路指南。
    4. 在你的注释下面写代码。
    5. 写完就执行脚本看看你的写的代码能否正常运行。
    6. 坚持这样的过程:写代码、运行测试、修改代码,知道它能正常运行。
    7. 完成后给这项任务打勾,然后找下一个最容易的任务,重复上述步骤。
     
    五  设计的程序
    一个猜书名的程序,很鸡肋(就一些简单的输入输出和判断),以后慢慢加内容吧,文本下载地址:https://i.cnblogs.com/files
      1 # -*- coding:utf-8 -*-
      2 def MemoryOfScatteredStars():
      3     filename = open("散落星河的记忆.txt")
      4     string = filename.read()
      5     print(f"{string}
    ")
      6     filename.close()
      7 
      8 def LoveYouLikeLovingLife():
      9     filename = open("爱你就像爱生命.txt")
     10     string = filename.read()
     11     print(f"{string}
    ")
     12     filename.close()
     13 
     14 def BlowingAwayTheDustFromMyHeart():
     15     filename = open("轻轻吹去心上的灰尘.txt")
     16     string = filename.read()
     17     print(f"{string}
    ")
     18     filename.close()
     19 
     20 def OneHundredYearsOfSolitude():
     21     filename = open("百年孤独.txt")
     22     string = filename.read()
     23     print(f"{string}
    ")
     24     filename.close()
     25 
     26 def ADreamOfRedMansions():
     27     filename = open("红楼梦.txt")
     28     string = filename.read()
     29     print(f"{string}
    ")
     30     filename.close()
     31 
     32 def TheGoldenAge():
     33     filename = open("黄金时代.txt")
     34     string = filename.read()
     35     print(f"{string}
    ")
     36     filename.close()
     37 
     38 def DragonRaja():
     39     filename = open("龙族.txt")
     40     string = filename.read()
     41     print(f"{string}
    ")
     42     filename.close()
     43 
     44 def NorwegianWood():
     45     filename = open("挪威的森林.txt")
     46     string = filename.read()
     47     print(f"{string}
    ")
     48     filename.close()
     49 
     50 def TheThreeBodyProblem():
     51     filename = open("三体.txt")
     52     string = filename.read()
     53     print(f"{string}
    ")
     54     filename.close()
     55 
     56 def typeFavourite():
     57     #while 1 :
     58     print("|----小寻很开心您来到小寻的专属乐园----|")
     59     print("|---小寻为您准备了三本小寻最喜欢的书---|
    ")
     60     print("如果想重新选择您熟悉的类别,您可以输入1、2、3以外的任意数字返回上一层")
     61     num = int(input("请输入1、2、3选择阅读一本书的部分内容:"))
     62     # print("如果不喜欢上述选择的话,您可以输入4来重新选择一本书")
     63 
     64     if num == 1:
     65         MemoryOfScatteredStars()
     66     elif num == 2:
     67         LoveYouLikeLovingLife()
     68     elif num == 3:
     69         BlowingAwayTheDustFromMyHeart()
     70     # elif num ==4:
     71     #     exit()
     72     else:
     73         print("输入错误,请重新输入")
     74         return                                         # 怎么返回到这个函数本身?
     75         
     76     print("现在来猜猜书名吧,你可以输入数字进行选择:")
     77     print("|-----1:《散落星河的记忆》-----|")
     78     print("|---2:《轻轻吹去心上的灰尘》---|")
     79     print("|-----3:《爱你就像爱生命》-----|")
     80     print("|---------4:《白夜行》---------|")
     81     print("|-----5:《霍乱时期的爱情》-----|
    ")
     82     guess = int(input("请输入您的选择:"))
     83     if num == 1 and guess == 1:
     84         print("恭喜您猜对啦
    ")
     85     elif num == 2 and guess == 3:
     86         print("恭喜您猜对啦
    ")
     87     elif num == 3 and guess == 2:
     88         print("恭喜您猜对啦
    ")
     89     elif num == 1 and guess != 1:
     90         print("猜错啦,正确答案是:《散落星河的记忆》
    ")
     91     elif num == 2 and guess != 3:
     92         print("猜错啦,正确答案是:《爱你就像爱生命》
    ")
     93     elif num == 3 and guess != 2:
     94         print("猜错啦,正确答案是:《轻轻吹去心上的灰尘》
    ")
     95     else:
     96         exit(0)
     97 
     98 def typeClassic():
     99     print("|-----------欢迎来到经典书籍大学堂-----------|")
    100     print("|---小寻给您提供了三本经典书籍,希望您喜欢---|
    ")
    101     print("如果想重新选择您熟悉的类别,您可以输入1、2、3以外的任意数字返回上一层")
    102     num = int(input("请输入1、2、3选择阅读一本书的部分内容:"))
    103     
    104     if num == 1:
    105         OneHundredYearsOfSolitude()
    106     elif num == 2:
    107         ADreamOfRedMansions()
    108     elif num == 3:
    109         TheGoldenAge()
    110     else:
    111         print("输入错误,请重新输入")
    112         return
    113         
    114     print("现在来猜猜书名吧,你可以输入数字进行选择:")
    115     print("|-----1:《百年孤独》-----|")
    116     print("|------2:《红楼梦》------|")
    117     print("|-----3:《黄金时代》-----|")
    118     print("|--------4:《飘》--------|")
    119     print("|----5:《日瓦戈医生》----|
    ")
    120     guess = int(input("请输入您的选择:"))
    121     if num == 1 and guess == 1:
    122         print("恭喜您猜对啦
    ")
    123     elif num == 2 and guess == 2:
    124         print("恭喜您猜对啦
    ")
    125     elif num == 3 and guess == 3:
    126         print("恭喜您猜对啦
    ")
    127     elif num == 1 and guess != 1:
    128         print("猜错啦,正确答案是:《百年孤独》
    ")
    129     elif num == 2 and guess != 2:
    130         print("猜错啦,正确答案是:《红楼梦》
    ")
    131     elif num == 3 and guess != 3:
    132         print("猜错啦,正确答案是:《黄金时代》
    ")
    133     else:
    134         exit(0)
    135 
    136 def typeNovel():
    137     print("|----------欢迎来到小说大杂烩的世界----------|")
    138     print("|---小寻给您提供了三本流行小说,希望您喜欢---|
    ")
    139     print("如果想重新选择您熟悉的类别,您可以输入1、2、3以外的任意数字返回上一层")
    140     num = int(input("请输入1、2、3选择阅读一本书的部分内容:"))
    141     
    142     if num == 1:
    143         DragonRaja()
    144     elif num == 2:
    145         NorwegianWood()
    146     elif num == 3:
    147         TheThreeBodyProblem()
    148     else:
    149         print("输入错误,请重新选择:")
    150         return
    151         
    152     print("现在来猜猜书名吧,你可以输入数字进行选择:")
    153     print("|-------1:《龙族》-------|")
    154     print("|----2:《挪威的森林》----|")
    155     print("|-------3:《三体》-------|")
    156     print("|-------4:《撒野》-------|")
    157     print("|-----5:《斗破苍穹》-----|
    ")
    158     guess = int(input("请输入您的选择:"))
    159     if num == 1 and guess == 1:
    160         print("恭喜您猜对啦
    ")
    161     elif num == 2 and guess == 2:
    162         print("恭喜您猜对啦
    ")
    163     elif num == 3 and guess == 3:
    164         print("恭喜您猜对啦
    ")
    165     elif num == 1 and guess != 1:
    166         print("猜错啦,正确答案是:《龙族》
    ")
    167     elif num == 2 and guess != 2:
    168         print("猜错啦,正确答案是:《挪威的森林》
    ")
    169     elif num == 3 and guess != 3:
    170         print("猜错啦,正确答案是:《三体》
    ")
    171     else:
    172         exit(0)
    173 
    174 def over():
    175     print("|--- 感谢使用猜书名程序 ---|
    ")
    176     exit()
    177 
    178 def main():
    179     
    180     while 1:
    181         print("|-----欢迎使用猜书名程序-----|")
    182         print("|-----1.作者最喜欢的书籍-----|")
    183         print("|----2.国内外经典名著一览----|")
    184         print("|-------3.流行小说串烧-------|")
    185         print("|----- 4.退出猜书名程序 -----|
    ")
    186         num = int(input("请选择您最熟悉的书籍类型:"))
    187     
    188         if num == 1:
    189             typeFavourite()
    190         elif num ==2:
    191             typeClassic()
    192         elif num == 3:
    193             typeNovel()
    194         elif num == 4:
    195             print("小寻会继续努力扩展游戏内容,感谢大家一直关注呀!")
    196             over()
    197         else:
    198             print("您输入的选择不正确,请重新输入:")
    199 
    200 main()
     
  • 相关阅读:
    如何对抗硬件断点--- 调试寄存器
    学会破解要十招
    Ollydbg 中断方法浅探
    脱壳经验(二)--如何优化
    jquery 选择器,模糊匹配
    CSS实现内容超过长度后以省略号显示
    微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法
    Exif.js获取图片的详细信息(苹果手机移动端上传图片旋转90度)
    jquery中的$("#id")与document.getElementById("id")的区别
    CentOS7 安装lua环境(我是在mysql读写分离用的)
  • 原文地址:https://www.cnblogs.com/luoxun/p/13341406.html
Copyright © 2011-2022 走看看