• 写给小白的Python之005:语句


    导读 :

    1.if语句

    2.while语句

    3.for语句

    4.break和continue

    5.pass和else

    一、if语句

    if语句是最常用的条件控制语句,Python中的一般形式为:

    if 条件一:

        statements

    elif 条件二:

        pass # 空语句/占位语句

    else:

        statements

    Python中用 elif 代替了 else if ,所以if语句的关键字为:if - elif - else。

    注意:

    1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。

    2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。

    3、在Python中没有switch - case语句。

     1. if语句的三种类型

    单分支

    if not (a>0 and a<=50):
        print("在0到50之外....")

    简单猜数字游戏:

    age_of_princal = 56
    guess_age = int(   input(">>:") )

    双分支:

    if guess_age == age_of_princal:
        print("yes")
    else:
        print("no ")

    多分支:

    if guess_age == age_of_princal:
        print("Yes,you got it..")
    elif guess_age > age_of_princal:
        print("shoud try samller..")
    else:
        print("try bigger ...")

    2. 案例:简单成绩等级判断

    score = int(input("score:"))
    if score > 90:
        print("A")
    elif score > 80:
        print("B")
    elif score > 70:
        print("C")
    elif score > 50:
        print("D")
    else:
        print("")

    3. if嵌套:上火车案例

    ticket = 1              #1表示有车票  0表示没有车票
    knifeLenght = 48     #cm
    
    #先判断是否有车票
    if ticket==1:
        print("通过了车票的检测,进入到了车站,接下来要安检了")
    
        #判断刀的长度是否合法
        if knifeLenght<=10:
            print("通过了安检,进入到了候车厅")
            print("马上就要见到TA了,很开心.....")
    
        else:
            print("安检没有通过,等待公安处理....")
    
    else:
        print("兄弟 你还没有买票了,先去买票 才能进站....")

    4. 猜拳游戏

    import random
    
    player = int(input('请输入:剪刀(0)  石头(1)  布(2):'))
    computer = random.randint(0,2)
    
    # 用来进行测试   #print('player=%d,computer=%d',(player,computer))
    
    if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):
        print('获胜,哈哈,你太厉害了')
    
    elif player == computer:
       print('平局,要不再来一局')
    
    else:
       print('输了,不要走,洗洗手接着来,决战到天亮')

    5. 扩展:随机数的处理

    在 Python 中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”

    import random

    导入模块后,可以直接在 模块名称 后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数。

        random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b。

    例如:

    random.randint(12, 20)  # 生成的随机数n: 12 <= n <= 20   
    
    random.randint(20, 20)  # 结果永远是 20   
    
    random.randint(20, 10)  # 该语句是错误的,下限必须小于上限。

    二、while循环

    1. while 语句基本语法

    初始条件设置 —— 通常是重复执行的 计数器

    while 条件(判断 计数器 是否达到 目标次数):

        条件满足时,做的事情1

        条件满足时,做的事情2

        ...(省略)...

        处理条件(计数器 + 1)

    else:

        语句

    注意冒号和缩进。另外,在Python中没有do..while循环。

    几乎所有的程序语言都选择从 0 开始计数。因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始。

    示例

    a, b = 0, 1
    
    while b < 10: # 循环输出斐波纳契数列
        print(b)
        a, b = b, a+b

    while循环一般通过数值是否满足来确定循环的条件

     i = 0
    
    while i<5:
        print("当前是第%d次执行循环"%(i+1))
        print("i=%d"%i)
        i+=1

    结果:

        当前是第1次执行循环

        i=0

        当前是第2次执行循环

        i=1

        当前是第3次执行循环

        i=2

        当前是第4次执行循环

        i=3

        当前是第5次执行循环

        i=4

    2. while循环嵌套

    打印如下:

        *

        * *

        * * *

        * * * *

        * * * * *

    第1种方法实现:

    # 定义一个计数器变量,从数字1开始,循环会比较方便
    row = 1
    while row <= 5:
        print("*" * row)
        row += 1

    第2种方法实现:

    row = 1
    
    while row <= 5:
        # 假设 python 没有提供字符串 * 操作
        # 在循环内部,再增加一个循环,实现每一行的 星星 打印
    
        col = 1
        while col <= row:
            print("*", end="")
            col += 1
    
        # 每一行星号输出完成后,再增加一个换行
        print("")  #等同于print("
    ")
    
        row += 1

    3. 案例

    (1)计算1~100的累积和(包含1和100)

    i = 1
    sum = 0
    
    while i<=100:
        sum = sum + i
        i += 1
    
    print("1~100的累积和为:%d"%sum)

    (2)计算1~100之间偶数的累积和(包含1和100)

    i = 1
    sum = 0
    
    while i<=100:
        if i%2 == 0:
            sum = sum + i
        i+=1
    
    print("1~100的累积和为:%d"%sum)

    (3)打印九九乘法表

    第1种方法:

    row = 1
    
    while row <= 9:
    
        col = 1
        while col <= row:
            # end = "",表示输出后,不换行
            # "	" 可以在控制台输出一个制表符,协助在输出文本时对齐
    
            print("%d * %d = %d" % (col, row, row * col), end="	")
            col += 1
    
        # 一行打印完成的换行
        print("")
    
        row += 1

    第2种方法:

        row = 1
    
        while row<=9:
    
            col=1
            while col<=row:
                print("%d*%d=%-2d "%(col,row,row*col),end='')
                col+=1
    
            print('')
    
            row+=1

    结果:

    1*1=1

    1*2=2   2*2=4

    1*3=3   2*3=6   3*3=9

    1*4=4   2*4=8   3*4=12  4*4=16

    1*5=5   2*5=10  3*5=15  4*5=20  5*5=25

    1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36

    1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49

    1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64

    1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

    4. print函数扩展

    在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行;

    如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""

    其中 "" 中间可以指定 print 函数输出内容之后,继续希望显示的内容 。

    语法格式如下

    # 向控制台输出内容结束之后,不会换行

    print("*", end="")

    # 单纯的换行

    print("")

    end="" 表示向控制台输出内容结束之后,不会换行

    三、for循环

    1. for循环基本语法

    for循环一般是对能保存多个数据的变量,进行遍历。

    Python中的for语句与C语言中的for语句有点不同:C语言中的for语句允许用户自定义迭代步骤和终止条件;而Python的for语句可以遍历任何序列(sequence),按照元素在序列中的出现顺序依次迭代。一般形式为:

    for variable in sequence:

        statements

    else:

        statements

    示例

    words = ['cat','love','apple','python','friends']
    
    for item in words:
    
        print(item, len(item))

    如果你需要在循环体内修改你正 迭代的序列,你最好是制作一个副本,这时切片标记就非常有用了:

    words = ['cat','love','apple','python','friends']
    
    for item in words[:]: # 制作整个列表的切片副本
        if len(item) >= 6:
            words.insert(0, item)
    
    print(words)

    我们注意到循环语句中还可以使用 else子句 ,下面有讲到。

    demo1

    name = 'dongGe'
    
    for x in name:
    
        print(x)

    结果:

    d

    o

    n

    g

    G

    e

    demo2:

    name = ''
    
    for x in name:
        print(x)
    else:
        print("没有数据")

    结果:

    没有数据

     

    2. 应用场景

    在 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典。(关于字典之后会讲到)

    需求:要判断 某一个字典中 是否存在 指定的 值:

           如果 存在,提示并且退出循环;

           如果 不存在,在 循环整体结束 后,希望 得到一个统一的提示.

    students = [
        {"name": "阿土",
         "age": 20,
         "gender": True,
         "height": 1.7,
         "weight": 75.0},
        {"name": "小美",
         "age": 19,
         "gender": False,
         "height": 1.6,
         "weight": 45.0},
    ]
    
    find_name = "阿土"
    
    for stu_dict in students:
        print(stu_dict)
        # 判断当前遍历的字典中姓名是否为find_name
        if stu_dict["name"] == find_name:
            print("找到了")
            # 如果已经找到,直接退出循环,就不需要再对后续的数据进行比较
            break
    else:
        print("没有找到")
    
    print("循环结束")

    输出结果:

    {'gender': True, 'weight': 75.0, 'name': '阿土', 'height': 1.7, 'age': 20}

    finded

    finish

     

    3. 扩展:range函数

    如果你要遍历一个数字序列,那么内置的range()函数就可以派上用场了。函数range()常用于for循环中,用于产生一个算术数列:

    >>> list(range(10)) # 默认从0开始
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    >>> list(range(1, 11)) # 从1到11, 前闭后开
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    >>> list(range(0, 30, 5)) # 5表示步长, 每隔5取一个数
    [0, 5, 10, 15, 20, 25]

    示例:(试一下以下代码的运行结果)

    for i in range(2, 11):
        print(i)

    四、break和continue

    break 某一条件满足时,退出循环,不再执行后续重复的代码。

    continue 某一条件满足时,不执行后续重复的代码 。

    break/continue只能用在循环中, 除此以外不能单独使用。

    break/continue在嵌套循环中, 只对最近的一层循环起作用,即只对 当前所在循环 有效。

    break的作用:

    用来结束整个循环。

    带有break的循环示例如下:

    i = 0
    
    while i<5:
        i = i+1
        print('----')
        if i==3:
            break
        print(i)
    else:
        print("==while循环过程中,如果没有执行break退出,则执行本语句==")

    运行结果:

    ----
    1
    ----
    2
    ----

    for in 遍历示例如下:

    name = 'salmond'
    
    for x in name:
        print('----')
        if x == 'm': 
            break
        print(x)
    else:
        print("==for循环过程中,如果没有执行break退出,则执行本语句==")

    运行结果:

    ----
    s
    ----
    a
    ----
    l
    ----

    continue的作用

    用来结束本次循环,紧接着执行下一次的循环。

    带有continue的循环示例如下:

    i = 0
    
    while i<5:
        i = i+1
        print('----')
        if i==3:
            continue
        print(i)

    运行结果:

    ----
    1
    ----
    2
    ----
    ----
    4
    ----
    5

    for in 遍历示例如下:

    name = 'salmond'
    
    for x in name:
        print('----')
        if x == 'm': 
            continue
        print(x)
    else:
        print("==while循环过程中,如果没有break则执行==")

    试着预想以下上面代码的执行效果,然后实际运行以下。

    五、pass和else子句

    pass

    pass语句什么都不做,它只在语法上需要一条语句但程序不需要任何操作时使用。pass语句是为了保持程序结构的完整性。

    else子句

    在循环语句中还可以使用 else子句 ,else子句在序列遍历结束(for语句)或循环条件为假(while语句)时执行,但循环被break终止时不执行:

    # 循环结束执行else子句

    for i in range(2, 11):
        print(i)
    else:
        print('for statement is over.')

    # 被break终止时不会执行else子句

    for i in range(5):
        if(i == 4):
            break;
        else:
            print(i)
    
    else:
        print('for statement is over') # 不会输出

    六、练习题:语句

    1. 使用if,编写程序,实现以下功能

    _ 从键盘获取用户名、密码

    _ 如果用户名和密码都正确(预先设定一个用户名和密码),那么就显示“欢迎进入xxx的世界”,否则提示密码或者用户名错误

    2.BMI 计算

    输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数。

    * 例如:一個52公斤的人,身高是155cm,则BMI为 :`52(kg)/1.55^2(m)= 21.6`

    * BMI指数:
    ```
    低于18.5:过轻
    18.5-25:正常
    25-28:过重
    28-32:肥胖
    高于32:严重肥胖
    ```

    3.个人所得税

    编写一个程序计算个人所得税(以下为个人所得税税率表,3500元起征):
    ```
    应纳税所得额(含税) 税率(%)
    不超过1500元的 3
    超过1500元至4,500元的部分 10
    超过4,500元至9,000元的部分 20
    超过9,000元至35,000元的部分 25
    超过35,000元至55,000元的部分 30
    超过55,000元至80,000元的部分 35
    超过80,000元的部分 45
    ```

     

    写给小白的Python之004:数据类型之字符串练习题答案

    现有字符串num_str = "0123456789",请分别对num_str按下列要求操作:

    # 1. 截取从 2 ~ 5 位置 的字符串
    print(num_str[2:6])
    
    # 2. 截取从 2 ~ `末尾` 的字符串
    print(num_str[2:])
    
    # 3. 截取从 `开始` ~ 5 位置 的字符串
    print(num_str[:6])
    
    # 4. 截取完整的字符串
    print(num_str[:])
    
    # 5. 从开始位置,每隔一个字符截取字符串
    print(num_str[::2])
    
    # 6. 从索引 1 开始,每隔一个取一个
    print(num_str[1::2])
    
    # 倒序切片
    # -1 表示倒数第一个字符
    print(num_str[-1])
    
    # 7. 截取从 2 ~ `末尾 - 1` 的字符串
    print(num_str[2:-1])
    
    # 8. 截取字符串末尾两个字符
    print(num_str[-2:])
    
    # 9. 字符串的逆序
    print(num_str[::-1])
    # print(aStr[-1::-1])
  • 相关阅读:
    js中break/continue
    js实现连接的两种放法
    jsdate对象toLocaleString()方法小结
    接口学习小节
    c# 装箱和拆箱
    c#数据类型学习
    return 作用域
    js中break/continue
    ArcGIS Runtime for Android开发教程V2.0(9)基础篇查询检索
    【转】ArcGIS 10.1 地图发布以及缓存管理
  • 原文地址:https://www.cnblogs.com/salmond/p/8689952.html
Copyright © 2020-2023  润新知