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()
     
  • 相关阅读:
    linux sysfs (2)
    微软——助您启动云的力量网络虚拟盛会
    Windows Azure入门教学系列 全面更新啦!
    与Advanced Telemetry创始人兼 CTO, Tom Naylor的访谈
    Windows Azure AppFabric概述
    Windows Azure Extra Small Instances Public Beta版本发布
    DataMarket 一月内容更新
    和Steve, Wade 一起学习如何使用Windows Azure Startup Tasks
    现实世界的Windows Azure:与eCraft的 Nicklas Andersson(CTO),Peter Löfgren(项目经理)以及Jörgen Westerling(CCO)的访谈
    正确使用Windows Azure 中的VM Role
  • 原文地址:https://www.cnblogs.com/luoxun/p/13341406.html
Copyright © 2011-2022 走看看