Python 3 学习的第五天——Python基础

Posted jinzejun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3 学习的第五天——Python基础相关的知识,希望对你有一定的参考价值。

Python 学习的第五天

 写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享

一、课堂笔记

  1.字符编码

    二进制

      ---->ASKII:只能存储英文和拉丁字符。一个字符占一个字节,占8位。

      ------>Gb2312:只能存6700多个中文字符,1980

      -------->gbk1.0:存了两万多字符,1995

      ---------->gb18030:27000中文,2000

      

      ------------->unicode:utf-32: 一个字符占4个字节

       ------------->unicode:utf-16:一个字符占2个字节或2个以上,65535

      ------------->unicode:utf-- 8:一个英文用ASKII码来存,一个中文占3个字节

    转成unicode叫做编码,从unicode转成别的语言叫做解码

    GBK能显示的中文,Unicode也能显示。Unicode向下兼容GBK。虽然都能显示中文,但字符编码不一样。(基于Python2来说)

                           技术分享图片

    Python3 :

       所有的字符默认是 Unicode  in Python 3 

       encode 在编码的同时,会把数据转成字节类型(英文数字还是按照ASKII码来,但中文就转成代码了)

       decode 在解码的同时,会把 bytes 类型转成字符串

       b  =  byte  =  字节类型  =  [ 0 - 255 ] 

       Python 3 中的encode 和 Python 2 中的encode不一样

        

 

 

二、实践学习

需求:
打印省、市、县三级菜单。
可以随时返回上一级。
可以随时退出程序,不用exit来实现。
思路:(初步思路)
通过字典的嵌套来实现三级菜单的构建。
三级菜单的打印使用了if x=1? 然后进行打印,很麻烦,麻烦到令人发指。
返回上一级就是从底层while循环退出到上一层while循环。
随时退出程序暂时没有想法。

后期思路:
  层层嵌套一定要用到循环来寻找便捷
  
代码实现:
 1 china = {
 2     黑龙江:{佳木斯:[桦川,桦南,汤圆],
 3              哈尔滨:[松北,南岗,平房],
 4              鸡西:[鸡蛋,鸭蛋,鹅蛋]
 5             },
 6     吉林:{ 长春:[四平,松原,白城],
 7             吉林市:[吉北,吉南,吉东],
 8             通化:[东昌,集安,辉南]
 9             },
10     广东:{广州:[海珠,天河,白云],
11             深圳:[福田,罗湖,南山],
12             珠海:[香洲,斗门,金湾]
13            }
14 
15         }
16 #  重复率很高  代码效率很差
17 back_flag = False # 为了让程序可以输入b返回上一层循环
18 exit_flag = False
19 while not back_flag and not exit_flag:
20     for key in china:  #遍历china字典中的Keys
21         print(key)
22     choice = input("1>>").strip()
23     if choice == b:
24         back_flag = True
25     if choice == q:  # 输入q退出程序
26         exit_flag = True
27     if choice in china: #判断输入的城市在不在菜单当中
28         while not back_flag and not exit_flag: #这一层循环是为了让即便输入错误仍停留在第二层当中
29             for key2 in china[choice]:# [choice] 是非常出巧的地方,避免了使用if去进行傻瓜判断 嵌套的非常巧妙
30                 print(key2)
31             choice2 = input("2>>").strip()#choice2 是第二次输入的值,也就是市级菜单的值
32             if choice2 == b:
33                 back_flag = True
34             if choice2 == q:  # 输入q退出程序
35                 exit_flag = True
36 
37             if choice2 in china[choice]:
38                 while not back_flag and not exit_flag: #也是为了即便输入错误的值仍停留在该层等待
39                     for key3 in china[choice][choice2]:#这里字典的遍历挺精彩的!!!!!!!
40                         print(key3)
41                     choice3 = input("3>>").strip()
42                     if choice3 == b: #输入b返回上一层循环
43                         back_flag = True
44                     if choice3 == q: # 输入q退出程序
45                         exit_flag = True
46 
47                 else:
48                     back_flag = False
49 
50         else:
51             back_flag = False

以上代码为第一次写出来的笨重版本代码,具体笨重在代码循环的方式以及输入变量判断上,很是繁琐。

之后的代码为改进版本。

 1 china = {
 2     黑龙江:{佳木斯:{桦川,桦南,汤圆},
 3              哈尔滨:{松北,南岗,平房},
 4              鸡西:{鸡蛋,鸭蛋,鹅蛋}
 5             },
 6     吉林:{ 长春:{四平,松原,白城},
 7             吉林市:{吉北,吉南,吉东},
 8             通化:{东昌,集安,辉南}
 9             },
10     广东:{广州:{海珠,天河,白云},
11             深圳:{福田,罗湖,南山},
12             珠海:{香洲,斗门,金湾}
13            }
14 
15         }
16 
17 exit_flag = False
18 current_layer = china
19 
20 layers = [china]
21 
22 while not  exit_flag:
23     for k in current_layer:
24         print(k)
25     choice = input(">>:").strip()
26     if choice == "b":
27         current_layer = layers[-1]
28         #print("change to laster", current_layer)
29         layers.pop()
30     elif choice not  in current_layer:continue
31     else:
32         layers.append(current_layer)
33         current_layer = current_layer[choice]

 三、心得

  代码写的还不是很顺手,包括最初那到需求的时候所思考的方式,有点死,所以导致代码量复杂,很多傻瓜代码,然后在Python的编码学习部分学习的不是很透彻,学的很浅薄,主要还是亲手写代码这部分,很欠练。今天的学习更多都是在写这篇代码,其次学习了编码部分。T_T 编码部分的学习有点蒙比,有点乱学的,可能需要一段时间在代码上沉浸,才能慢慢感悟这些东西。

 

 

 

 














以上是关于Python 3 学习的第五天——Python基础的主要内容,如果未能解决你的问题,请参考以下文章

python基础学习第五天

学习python的第五天

学习python的第五天

走入计算机的第十五天(python基础三)

《Python编程从入门到实践》——学习python的第十五天

学习python的第五天