《笨方法学PYTHON》——eighteenthlesson

习题36:设计和调试

If语句的规则

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

第一条,我很是怀疑,只有if难道不成吗?难道是作者在提示我们,if后面最好跟一个else,没有else意义不大,是这个含义吧

循环的规则

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

break——跳出循环,continue——该轮循环结束,继续下一轮循环

调试(debug)的小技巧

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

这几个总结还是不错,所以抄写了一遍。

这道题,作者的意思是写一个和上一道题目查不到的游戏,我把上道题的逻辑列举一遍,然后自己写一段逻辑出来,大家可以参考一下:

  1. 请选择左转还是右转
  2. 左转告诉用户,这间房间门前有只熊,请问用户选择对熊做什么?给熊蜂蜜,熊则抱着蜂蜜开心的走了,于是你有房间住了;对着熊吹口哨,则熊从门前走了,于是你可以开门进房间了,但熊还是在旁边,继续问用户选择对熊做什么,继续吹口哨这时候熊可不耐烦了,就向你扑过来了你挂了,选择开门就可以进入房间,进去后发现,这是一间堆满黄金的屋子,但这个时候熊还是在房间里呀请问你愿意花多少钱租这间房间?让用户输入金额,用户如果不是输入的数字,则提示用户输入有问题,如果输入小于50则输出你不贪婪,这些金子送你了;如果输入大于50,则这件房间不租了;
  3. 右转可不能了,这间屋子里有个恶魔,请问你是选择逃跑还是选择决斗,逃跑你完了,你跑不了死定了;决斗,才发现这只不过是一个幻想。
def goldRoom():
    print("这是一间堆满黄金的屋子!")
    while True:
        amout = input("请输入您打算花费多少钱租下这间屋子:")
        if amout.isdigit():
            if int(amout) < 50:
                dead("小伙子,你还不算贪婪,孺子可教,这间屋子租给你了。")
            else:
                dead("你如此贪婪,露宿街头算了。")
        else:
            print("问你出多少钱,你都不是输入的数字,重新输入!!!")


def bearRoom():
    print("这房间门前有只熊......")
    bearMoved = False
    while True:
        next = input("请告诉哥们你要对熊做什么(1、给蜂蜜,2、吹口哨,3、开门):")
        if next == "1":
            dead("熊得到蜂蜜之后很开心,于是你有房间住了,恭喜恭喜!")
        elif next == "2" and not bearMoved:
            print("熊走开了......")
            bearMoved = True
        elif next == "2" and bearMoved:
            dead("熊扑向你了,你死定了......")
        elif next == "3" and bearMoved:
            goldRoom()
        else:
            print("你输入的啥呀,重新输入!")


def evilRoom():
    print("神呐,这间房间可有间恶魔......")
    while True:
        next = input("请问你选择逃跑还是决斗呢?")
        if next == "逃跑":
            dead("遇间恶魔,你逃跑有个毛用,你死定了。")
        elif next == "决斗":
            dead("这才对嘛,恭喜通关!!!")
        else:
            print("你输入的啥呀,重新输入!")


def dead(why):
    print(why, "over!!!")
    exit(0)


def run():
    print("来,咱玩个游戏吧!\n请问你选择左转还是右转:")
    while True:
        next = input("1为左转2为右转>>>")
        if next == "1":
            bearRoom()
        elif next == "2":
            evilRoom()
        else:
            print("你输入的啥呀,重新输入!")


run()

print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!")
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!")
Response.Write("点个赞吧");
alert(’点个赞吧’)

猜你喜欢

转载自blog.csdn.net/qq_41470573/article/details/84779986