鱼C论坛

 找回密码
 立即注册
查看: 1460|回复: 1

[技术交流] 《零基础入门学习Python》第七第八第九 《了不起的分支和循环》笔记

[复制链接]
发表于 2019-1-18 15:47:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Ice_in_left 于 2019-2-26 10:51 编辑

第七节内容
  1. 加载背景音乐
  2. 播放背景音乐(设置单曲循环)
  3. 我方飞机诞生
  4. interval = 0

  5. while True:
  6.    
  7.     if 用户是否点击了关闭按钮:
  8.         退出程序

  9.     interval +=1
  10.     if interval == 50:
  11.         interval = 0
  12.         小飞机诞生

  13.     小飞机移动一个位置
  14.     屏幕刷新

  15.     if 用户鼠标产生移动:
  16.         我方飞机中心位置 = 用户鼠标位置
  17.         屏幕刷新
  18.         
  19.     if 我方飞机与小飞机发生肢体冲突:
  20.         我方挂,播放撞机音乐
  21.         修改我方飞机图案
  22.         打印"Game over"
  23.         停止背景音乐,最好淡出
复制代码


第八节内容

0.了不起的分支和循环2
        判断:该不该做某事。if else
        循环:持续的做某事。while
1.
● 现在小甲鱼来考考大家:
    —按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。
● 解题方案:
        一method1.py
        一method2.py
        一method3.py

method1.py :

  1. score = int(input('请输入一个分数:'))
  2. if 100 >= score >= 90:
  3.     print('A')
  4. if 90 > score >= 80:
  5.     print('B')
  6. if 80 > score >= 60:
  7.     print('C')
  8. if 60 > score >= 0:
  9.     print('D')
  10. if score < 0 or score > 100:
  11.     print('输入错误!')
复制代码


method2.py:
  1. score = int(input('请输入一个分数:'))
  2. if 100 >= score >= 90:
  3.     print('A')
  4. else:
  5.     if 90 > score >= 80:
  6.         print('B')
  7.     else:
  8.         if 80 > score >= 60:
  9.             print('C')
  10.         else:
  11.             if 60 > score >= 0:
  12.                 print('D')
  13.             else:
  14.                 print('输入错误!')
复制代码


method3.py:

  1. score = int(input('请输入一个分数:'))
  2. if 100 >= score >= 90:
  3.     print('A')
  4. elif 90 > score >= 80:
  5.     print('B')
  6. elif 80 > score >= 60:
  7.     print('C')
  8. elif 60 > score >= 0:
  9.     print('D')
  10. else:
  11.     print('输入错误!')
复制代码


比较 method1.py,method2.py,method3.py 的优劣势
        逻辑上: method2.py==method3.py
                      elif == else if
        体现了:python两大特性:简洁,可读性好

        method1.py 把输入的值判断五次,事实上如果输入的是 98,输出 A,后面的完全可以不用再判断了。判断后面四次完全是在浪费 CPU 的时间。
        method2.py , method3.py 的效率是 method1.py 的4倍。

2.  Python可以有效避免“悬挂else”
        ● 什么叫“悬挂else”?
        ● 我们举个例子,初学C语言的朋友可能很容易被以下代码欺骗:
  1. if ( hi > 2 )
  2.     if ( hi > 7 )
  3.     printf(“好棒!好棒!”);

  4. else
  5.     printf(”切~”);
复制代码

        看起来下面的 else 应该是和 if ( hi > 2 ) 匹配。但是实际上 C 语言有就近匹配原则,下面的 else 应该和 if ( hi > 7 ) 相匹配。
        而 python 没有悬挂 else 的问题。
        python 强制规定必须要正确对齐缩进否则无法运行,python 让程序员决定 else 属于哪个 if。
        通过限制选择,减少不确定性。

3.  条件表达式(三元操作符)

        ● 有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作:
  1. x , y = 4 , 5
  2. if x < y :
  3.     small = X
  4. else:
  5.     small = y
复制代码

        ● 例子可以改进为:
  1. small = x if x < y else y
复制代码


        语法:x if 条件 else y

        三元操作符(三目操作符)实际上是看这个操作符有几个操作数。
        赋值号有两个操作数就是二元操作符。
        减号只有一个操作符就是一元操作符。
        三元操作符就是有三个操作数。
        (818)python作者推崇简洁的编程理念,很长一段时间python没有三元操作符概念,他觉得三元操作符会使得程序结构变得非常复杂。
        但是 python 社区小伙伴表达了极大的诉求,所以最后还是加上了。大概是2.5的时候加入的。

4.  断言(assert)
        ● assert 这个关键字我们称之为“断言”,  当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
        举个例子:
        >>> assert 3 > 4

        ● 一般来说我们可以用 Ta 在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
        与其让错误的条件导致程序后面会出现莫名其妙的 bug 或者崩溃不如在错误条件出现的时候自爆并捕捉合理的处理。


第九节内容

0.  while 循环
        while 条件:
                循环体

      注:在条件为真的时候执行某一段指定的代码。直到条件为假。

1.  for 循环
        ● 虽然说 Python 是由 C 语言编写而来的,但是 Ta 的 for 循环跟 C 语言的 for 循环不太一样,Python 的 for 循环显得更为智能和强大!

        ● 语法:
        for  目标 in 表达式:
             循环体

        注:python 的 for 循环可以调用迭代器的 next() 方法,会自动的去捕获StopIteration()这个异常,并结束循环。
        小甲鱼提到的以后会讲的:'列表',‘元组’。
        标准数据类型:
                在内存中存储的数据可以有多种类型。

                例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。

                Python 定义了一些标准类型,用于存储各种类型的数据。
                Python有五个标准的数据类型:
                      ● Numbers(数字)
                      ● String(字符串)
                      ● List(列表)
                      ● Tuple(元组)
                      ● Dictionary(字典)

2.  例子:
        0.
  1. favourite='FishC'
  2. for i in favourite:
  3.     print(i,end='   ')

  4. #结果:F   i   s   h   C  
复制代码

        1.
  1. member=['小甲鱼','小布丁','黑夜','迷途','怡静']
  2. for each in member:
  3.      print(each,len(each))
  4.     #结果:小甲鱼 3
  5.           #小布丁 3
  6.           # 黑夜 2
  7.           # 迷途 2
  8.           # 怡静 2
复制代码

3.  range()
        ● 语法: range( [strat,] stop[, step=1] )
        — 这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
        — step=1 表示第三个参数的值默认值是1。
        — range这个 BIF 的作用是生成一个从 start 参数的值开始到 stop 参数的值结束的数字序列。

4.  例子:
        1.
  1. range(5)
  2. #结果:range(0, 5)
复制代码

        2.
  1. list(range(5))
  2. #结果:[0, 1, 2, 3, 4]
复制代码

        3.
  1. for i in range(5):
  2.     print(i)
  3.     #结果:0
  4.           #1
  5.           #2
  6.           #3
  7.           #4
复制代码

        4.
  1. for i in range(2,9):
  2.     print(i)
  3.     #结果:2
  4.           #3
  5.           #4
  6.           #5
  7.           #6
  8.           #7
  9.           #8
复制代码

        5.
  1. for i in range(1,10,2):
  2.     print(i)
  3.     #结果:1
  4.           #3
  5.           #5
  6.           #7
  7.           #9
复制代码


        6.
  1. for num in range(10,20):  # 迭代 10 到 20 之间的数字
  2.    for i in range(2,num): # 根据因子迭代
  3.       if num%i == 0:      # 确定第一个因子
  4.          j=num/i          # 计算第二个因子
  5.          print ('%d 等于 %d * %d' % (num,i,j))
  6.          break            # 跳出当前循环
  7.    else:                  # 循环的 else 部分
  8.       print (num, '是一个质数')
  9.     #结果:10 等于 2 * 5
  10.           #11 是一个质数
  11.           #12 等于 2 * 6
  12.           #13 是一个质数
  13.           #14 等于 2 * 7
  14.           #15 等于 3 * 5
  15.           #16 等于 2 * 8
  16.           #17 是一个质数
  17.           #18 等于 2 * 9
  18.           #19 是一个质数
复制代码


4.  补充知识点:字符串格式化
        1.字符串
  1. print ("His name is %s"%("Aviad"))
  2.     #结果 His name is Aviad
复制代码

        2.整数
  1. print ("He is %d years old"%(25))
  2.     #结果 He is 25 years old
复制代码

        3.浮点数
  1. print ("His height is %f m"%(1.83))
  2.     #结果 His height is 1.830000 m
复制代码

        4.浮点数(指定保留小数点位数)
  1. print ("His height is %.2f m"%(1.83))
  2.     #结果 His height is 1.83 m
复制代码

        5.占位符宽度
  1. print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))
  2.     #结果 Name:     Aviad Age:      25 Height:    1.83
复制代码

        6.占位符宽度(左对齐)
  1. print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))
  2.     #结果 Name:Aviad      Age:25       Height:1.83
复制代码

        7.指定占位符(只能用0当占位符?)
  1. print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))
  2.     #结果 Name:Aviad      Age:00000025 Height:00001.83
复制代码

        8.科学计数法
  1. format(0.0015,'.2e')
  2.     #结果 '1.50e-03'
复制代码

        9.词典来传递真实值
  1. print ("I'm %(c)s. I have %(l)d yuan." % {'c':'hungry','l':22})
  2.     #结果 I'm hungry. I have 22 yuan.
复制代码

格式符
        格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

                %s    字符串 (采用str()的显示)

                %r    字符串 (采用repr()的显示)

                %c    单个字符

                %b    二进制整数

                %d    十进制整数

                %i    十进制整数

                %o    八进制整数

                %x    十六进制整数

                %e    指数 (基底写为e)

                %E    指数 (基底写为E)

                %f    浮点数

                %F    浮点数,与上相同

                %g    指数(e)或浮点数 (根据显示长度)

                %G    指数(E)或浮点数 (根据显示长度)

                %%    字符"%"

        可以用如下的方式,对格式进行进一步的控制:

        %[(name)][flags][width].[precision]typecode

        (name)为命名

        flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

        width表示显示宽度

        precision表示小数点后精度

        比如:

        print("%+10x" % 10)
        print("%04d" % 5)
        print("%6.3f" % 2.3)

        上面的width, precision为两个整数。我们可以利用*,来动态代入这两个量。比如:

        print("%.*f" % (4, 1.2))
        Python实际上用4来替换*。所以实际的模板为"%.4f"。

        总结:
        Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。

5. 两个关键的语句:
0.
0.4.jpg

1.  break:终止当前循环。跳出循环体。
        eg:
  1. bingo = '小甲鱼是帅哥'
  2. answer = input('请输入小甲鱼最想听的一句话:')

  3. while True:
  4.     if answer == bingo:
  5.         break
  6.     answer = input('抱歉,错了,请重新输入(答案正确才能退出游戏):')

  7. print('哎呦,帅哦~')
  8. print('您真是小甲鱼肚子里的蛔虫啊^_^')
复制代码


2.  contiune:终止本轮循环并开始下一轮循环。
        注:开始下一轮循环之前会判断循环条件,如果成立则开始下一轮循环。否则退出循环。
        eg:
  1. for i in range(10):
  2.     if i%2 !=0:
  3.         print(i)
  4.         continue
  5.     i+=2
  6.     print(i)
  7.     #结果:2
  8.           #1
  9.           #4
  10.           #3
  11.           #6
  12.           #5
  13.           #8
  14.           #7
  15.           #10
  16.           #9
复制代码



手动下一页!
《零基础入门学习Python》第十第十一第十二笔记   

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
heidern0612 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-1-18 16:47:34 | 显示全部楼层
内容比较多。看到有纰漏的或者有不对的地方,欢迎回复指正。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 03:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表