• day02 while循环和格式化


    day02 while循环和格式化

    今日内容概要

    1. while循环
    2. 格式化
    3. 运算符
    4. 编码初始

    昨日内容回顾

    1. 变量

      变量命名规范:

      1. 由数字、字母和下划线组成
      2. 不能以数字开头
      3. 不能使用Python中的关键字
      4. Python中的变量名区分大小写
      5. 变量的命名要具有可描述性
      6. 变量名不应该有汉字和拼音
      7. 变量命名推荐写法:
        • 驼峰体
        • 下划线
    2. 常量

    3. 基本数据类型

      • 字符串
      • 整型
      • 布尔值
    4. 注释

    5. 用户交互

    6. 流程控制

    今日内容详细

    while循环

    while循环基本结构

    循环就是不断地重复着某件事情。while就是while循环的关键字。

    while循环的基本结构:

    while 条件:
    缩进 循环体
    

    典型while循环示例:

    print(1111)
    while True:   # 死循环
        print("坚强")
        print("过火")
        print("鸡你太美")
        print("大碗宽面")
    print(333)
    

    上面的例子中,第一步,先打印1111。第二步,进入while语句,判断while后的条件是否为真。while后的语句是True,为真,进入循环体中。第三步,打印坚强。第四五六步分别打印出过火鸡你太美大碗宽面。循环体中的内容运行完毕,程序又返回到while语句。第七步,继续判断while后的条件是否为真。然后继续进入循环体,重新打印内容。随后又返回到while语句中。因为while语句后面的条件一直都是True,故而循环往复,永不停息,成为了死循环。最后一条的333永远也打印不出来。

    1567757718914

    break语句

    很显然,这样的死循环并不能满足我们日常编程的需要。如果能有办法限制循环次数,将会十分实用。在这里,我们可以引入break语句。break可以终止当前循环。结合if条件语句,可以把死循环转换成有限的循环。例如:

    # 循环5次
    count = 0
    while True:  # 死循环
        count = count + 1  # 先执行 = 右边的内容
        if count == 5:
            print(count)
            break # 有限循环
            
    运行的结果为:
    5
    

    在这个例子中,我们先定义了一个变量count用来计数,也成为计数器。每一次循环,count就会增加1。当count等于5时,if语句的条件成立,打印出当前count的数值,运行break,退出循环。我们就成功把死循环转换成了有限循环。

    1567758395997

    continue语句

    除了break,while循环中还有一个很重要的语句continuecontinue语句的意思是跳出本次循环,继续下次循环。用通俗的话来讲,continue就是伪装成循环体中最后一行代码。例如:

    count = 0
    while True:  # 死循环
        count = count + 1  # 先执行 = 右边的内容
        if count == 5:
            print(111)
            continue  # continue 就是伪装成循环体中最后一行代码
        print(count)
    

    很显然,这还是一个死循环。只不过当计数器count等于5的时候,会打印一次111,并且这次的count,也就是5,不会被打印出来。

    QQ图片20190906145135

    条件控制循环

    除了通过使用break关键字来终止循环,我们还可以通过while后面的条件来控制循环次数:

    count = 0
    while count < 2:
        print(count)
        count = count + 1
        
    打印出的结果为:
    0
    1
    

    在上面的例子中,最开始计数器count的值为0。然后运行到while条件,count < 2是成立的,于是进入循环体。首先把count的内容0打印出来,然后count增加1,进入下一次循环。第二次循环也一样,打印1之后,count变成了2,再回到while判断语句。此时,count < 2不成立,循环终止。

    QQ图片20190906145142

    while else语句

    while语句也有判断的行为,所以也可以配合else语句使用。while else结构和if else结构很相似。只有当while后判断的条件不成立时,才会执行else中的语句。如果循环中没有break,else语句中的内容将在循环结束后执行;如果循环中有break,else语句中的内容有可能不被执行。观察下面两个例子:

    print(222)
    count = 0
    while count < 3:
        print(count)
        count = count + 1
    else:
        print(111)
    # 运行结果: 222 0 1 2 111
    
    print(222)
    count = 0
    while count < 3:
        print(count)
        count = count + 1
        break
    else:
        print(111)
    # 运行结果: 222 0
    

    在第一个例子中,经过三次循环后,计数器count的值将增加到3。此时,条件count < 3不再满足,跳出循环,执行else语句,打印出111来。而第二个例子中,在第一次循环中就遇到了break,循环被强行终止,并没有再次判断count < 3,于是就不会进入到else中,111便打印不出来。

    while循环小结

    • break:终止当前循环
    • continue:跳出本次循环,继续下次循环(就是伪装成循环体中最后一行代码)
    • continuebreak下方的代码都不会执行
    • while 循环可以通过条件控制循环的次数
    • while 语句可以和 else 语句配合使用,当 while后的条件不满足时,将会运行else中的语句。

    格式化

    有这样一个字符串:

    msg = """
    ------info------
    name:meet
    age:18
    sex:男
    hobby:女
    -------end------
    """
    

    如果我们想让用户输入名字,年龄,性别和爱好,然后程序按照上面的格式给打印出来。从目前我们所学的知识,我们可以用这样的代码来实现:

    a = "------info------"
    b = "name:"
    c = "age:"
    d = "sex:"
    e = "hobby:"
    f = "-------end------"
    name = input("name")
    age = input("age")
    sex = input("sex")
    hobby = input("hobby")
    print(a)
    print(b + name)
    print(c + age)
    print(d + sex)
    print(e + hobby)
    print(f)
    
    代码运行后就是这样的:
    namealex
    age18
    sex男
    hobby女
    ------info------
    name:alex
    age:18
    sex:男
    hobby:女
    -------end------
    

    %格式化

    不过虽然我们实现了需求,但是太过繁琐。这里就可以用到格式化的方法。格式化,就是在字符串中需要自定义的位置放入占位符,然后通过给占位符提供数据,从而构建新的字符串。提供的数据需要和占位符一一对应,否则将会报错。

    Python中常用的占位符有:

    • %s 字符串 :%s可以填充字符串也可以填充数字
    • %d|%i整型 : 必须填充数字
    • %% 转义:变成普通的%

    有了格式化的方法,上面的例子我们就可以简化成这个样子:

    name = input("name")
    age = input("age")
    sex = input("sex")
    hobby = input("hobby")
    a = "哈哈啊"
    msg = """
    ------info------
    name:%s
    age:%s
    sex:%s
    hobby:%s
    -------end------
    """
    print(msg%(name,int(age),sex,hobby))
    
    

    f-strings格式化

    在Python 3.6及以后的版本中引入了一个新的f-strings方法格式字符串,把上面的格式化方法进一步简化,具体做法为:

    msg = f"""
    ------info------
    name:{input("name")}
    age:{input("age")}
    sex:{input("sex")}
    hobby:{input("hobby")}
    -------end------
    """
    print(msg)
    
    

    用大括号将需要格式化的位置标记出来,在大括号里面填入变量或者数据,构建成新的字符串。

    其中,可以通过两个大括号{{}}来转义,表示普通的大括号。

    运算符

    比较运算符

    比较运算符主要有六个:

    1. >:大于
    2. <:小于
    3. >=:大于等于
    4. <=:小于等于
    5. ==:等于
    6. !=:不等于

    比较运算返回的值为TrueFalse

    算术运算符

    Python中的算术运算符有七个:

    1. +:加和
    2. -:相减
    3. *:相乘
    4. /:相除
    5. //:整除|地板除(向下取整)
    6. **:幂运算
    7. %:取余(模)

    算术运算主要用于数字的计算。字符串也可以用+*进行拼接。

    赋值运算符

    赋值运算符为=。在Python中,为了输入简便,还从其中算术运算符中衍生出了七种赋值运算符:+=-=*=/=//=**=%=。它们的用法和含义如下:

    a = 10
    b = 2
    b += 1	# b = b + 1
    a -= 1  # a = a - 1
    a *= 2  # a = a * 2
    a /= 2  # a = a / 2
    a //= 2 # a = a // 2
    a **= 2 # a = a ** 2
    a %= 2  # a = a % 2
    
    

    逻辑运算符

    逻辑运算符有三个:与(and,并且)、或(or)、非(not,不是)。

    逻辑运算的优先级是() > not > and > or,查找顺序为从左向右。例如:

    3>2 and 4>2 or True and not False and True
    # 先运算比较
    True and True or True and not False and True
    # 再运算not
    True and True or True and True and True
    # 运算and
    True or True
    # 最后运算or
    True
    
    

    当数字之间进行逻辑运算时,有这样一套规则:

    and数字进行逻辑运算时:
        两边都不为0和False时,选择and后边的内容
        两边都为假时,选择and前的内容
        一真一假选择假
    
    or 数字进行逻辑运算时:
        两边都不为0和False时,选择or前边的内容
        两边都为假时,选择or后边的内容
        一真一假选择真
    
    

    官方给出的运算规则是这个样子的:

    操作 结果
    x or y 如果x为假,选择y,否则选择x
    x and y 如果x为假,选择x,否则选择y
    not x 如果x为假,返回True,否则返回False

    可以通过下面的示例来找到这些规律:

    print(1 and 3)
    print(0 and 8)
    print(9 and 4)
    print(False and 5)
    
    

    成员运算符

    在Python中,成员运算符有两个:

    • a in b:用于判断a是否在b中
    • a not in b:用于判断a是否不在b中

    具体使用示例:

    name = "alex"
    msg = input(">>>")
    if name in msg:
        print(111)
    else:
        print(222)
        
    输出结果为:
    >>>alexad
    111
    >>>alecxaa
    222
    
    

    编码初识

    常见编码集:

    1. ascii:
      • 不支持中文
      • 一个字符占用8位
    2. gbk(包含ascii)国标码:
      • 一个英文字符占用8位(1字节)
      • 一个中文字符占用16位(2字节)
    3. Unicode:
      • 英文:4个字节,32位
      • 中文:4个字节,32位
    4. utf-8(最流行的编码集):
      • 英文:1个字节,8位
      • 欧洲:2个字节,16位
      • 亚洲:3个字节,24位

    单位转换:

    • 1字节 = 8位
    • 1Byte = 8 bits
    • 1024bytes = 1KB
    • 1024KB = 1MB
    • 1024MB = 1GB
    • 1024GB= 1TB #够用了
    • 1024TB = 1PB
  • 相关阅读:
    多线程——Thread与Runnable的区别(28)
    多线程——Runnable接口实现多线程(27)
    多线程——调用start()方法与直接调用run()方法的区别
    动态规划---优化编辑器问题(计算字符串距离)
    网易2017春招笔试真题编程题集合(4)——消除重复元素
    网易2017春招笔试真题编程题集合(3)——调整队形
    网易2017春招笔试真题编程题集合(2)——赶去公司
    网易2017春招笔试真题编程题集合(1)——双核处理
    Delphi2010安装win10不能编译问题
    数据类型转换byteushotint64(long)
  • 原文地址:https://www.cnblogs.com/shuoliuchina/p/11494919.html
Copyright © 2020-2023  润新知