练习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()
 
原文地址:https://www.cnblogs.com/luoxun/p/13341406.html