• 大爽Python入门教程 1-2 数与字符串


    大爽Python入门公开课教案
    点击查看教程总目录

    1 整数与浮点数

    整数大家都知道,比如1, 2, 10, 123, 都是整数int

    浮点数是什么呢?

    上一节的除法运算,不知道有没有人注意到,其结果的样子和整数是不同的。

    >>> 8/7
    1.1428571428571428
    

    上面输出的小数就是浮点数float

    在python里,浮点数就是小数。
    辨别方法就是小数点。

    同时

    • /除法运算的结果永远是浮点数
    • 浮点数和整数运算的结果永远是浮点数
    >>> 10 / 5
    2.0
    >>> 2.0 * 10
    20.0
    >>> 2.0 + 5
    7.0
    >>> 2.0 // 2
    1.0
    >>> 5.0 // 3
    2.0
    

    其中结果虽然都可以写成整数形式,但是
    却是带小数点的小数形式。

    爱思考的朋友可能会想到,
    从数学上来讲,所有的整数都可以写成小数形式,
    对应到python里刚展示的,所有的整数都可以表示成浮点数。
    以后是不是可以只用浮点数,不用整数。
    并不是!
    由于某种原因,计算机的浮点数是不精确的,所以能使用整数时最好使用整数。

    python的浮点数有两种形式

    1. 十进制形式

    也就是我们平时所看到的小数形式,比如
    3.14, 2.0, 0.3333333333333333

    1. 指数形式

    也就是科学计数法的形式。
    其写法为aen或者aEn, 对应的效果都是(a imes 10^n), n一般会带正负号。

    • a为科学计数法的尾数,
    • n是科学计数法的指数部分,
    • eE表示10的幂。

    举例说明

    • 1.23e-28, 即(1.23 imes 10^{-28})
    • 2.01e+19, 即(2.01 imes 10^{19})

    一般来讲,浮点数过长时会自动使用指数形式展示,比如

    >>> 0.000000000000000000000000000123
    1.23e-28
    >>> 2010.0 * 100000000 * 100000000
    2.01e+19
    

    实际是浮点数长度超过其本身精度限制时,会使用指数形式来展示。
    只要写成指数形式,就都是浮点数。

    2 字符串

    除了整数和浮点数,python还能直接操作字符串string

    字符串可以用单引号'...'或双引号"..."来表示(两种表现形式意义相同),
    引号里面就是字符串的内容。

    注意: 单引号或双引号必须是英文输入法下的。

    字符串示例

    • "a"
    • "abc"
    • "hello"

    字符串之间可以做加法(拼接),
    也可以和整数做乘法。

    >>> "hello " + "lihua"
    'hello lihua'
    >>> "a" + "b" + "c"
    'abc'
    >>> "a" * 10
    'aaaaaaaaaa'
    >>> "hello"*3
    'hellohellohello'
    

    补充: 字符串不能做除法和减法。

    3 计算与转换

    type

    想要知道一个变量的类型,我们可以使用函数type

    示例如下

    >>> type(123)
    <class 'int'>
    >>> type(0.1)
    <class 'float'>
    >>> type("abc")
    <class 'str'>
    >>> type("123")
    <class 'str'>
    

    注意,被引号括起来的"123"是字符串,不是整数。

    计算

    • 整数和浮点数可以直接计算,计算的结果永远是浮点数。
    • 字符串之间可以做加法,效果是拼接。
    • 字符串除了和整数做乘法外,不能和数直接计算(会报错)。

    举例如下

    >>> 3.14 * 100
    314.0
    >>> "123" + "345"
    '123345'
    >>> "123" + 345
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        "123" + 345
    TypeError: can only concatenate str (not "int") to str
    
    • 两个内容为数字的字符串做加法,其效果为拼接。
    • 字符串和数字相加会报错,
      TypeError: can only concatenate str (not "int") to str,
      该报错翻译(直接使用的百度翻译)为:
      类型错误,只能将str(而不是int)连接到str

    转换

    如果我们要进行计算的话,首先要进行类型转换。

    把数转换成字符串可以使用str(n)方法。

    把字符串转换成数,需要进行强制转换,无法转换就会报错,方法如下。

    • int(s): 将s强制转换成整数int
    • float(s): 将s强制转换成浮点数float

    举例:

    >>> str(123)
    '123'
    >>> "123" + str(123)
    '123123'
    >>> str(3.14)
    '3.14'
    >>> "1 + 2 = " + str(3)
    '1 + 2 = 3'
    >>> 123 + int("123")
    246
    >>> 123 + float("123")
    246.0
    

    4 情景思考

    简单场景

    首先,我们思考一个场景,
    我们想展示简单的加法,
    给x, y变量赋不同的值,
    然后以x + y = z的形式展示输出。

    输出示例:

    1 + 2 = 3
    2 + 2 = 4
    3 + 4 = 7
    

    直接反应

    可能有的朋友,直接想到的是

    print("1 + 2 = 3")
    print("2 + 2 = 4")
    print("3 + 4 = 7")
    

    这个写法不合适,
    一是不符合题意(没有定义x, y进行变量赋值)。
    二是不应该写死。(这个我们以后会进一步的展开)

    简单优化

    那么简单优化下,定义x, y进行变量赋值,代码如下

    x = 1
    y = 2
    z = x + y
    print("1 + 2 = " + str(z))
    
    x = 2
    y = 2
    z = x + y
    print("2 + 2 = " + str(z))
    
    x = 3
    y = 4
    z = x + y
    print("3 + 4 = " + str(z))
    

    这个时候在print里面,仍然有写死的问题。
    写死的代码,存在不能通用的问题,变量每次变化都要手动改动。

    再次优化

    那么再次优化下,解决下写死的问题

    x = 1
    y = 2
    z = x + y
    print(str(x) + " + " + str(y) + " = " + str(z))
    
    x = 2
    y = 2
    z = x + y
    print(str(x) + " + " + str(y) + " = " + str(z))
    
    x = 3
    y = 4
    z = x + y
    print(str(x) + " + " + str(y) + " = " + str(z))
    

    也就是使用了强制转换加字符串拼接,把数据变量插入到字符串中。
    其优点是:无论以后变量的值怎么边,print里面都不用在做修改。

    5 占位符

    介绍

    虽然上面使用强制转换加字符串拼接,解决了把数据变量插入到字符串中的问题。
    但是其代码可读性比较差,写起来也很麻烦。

    其实,python为我们提供了一种更方便的技术,
    帮助我们更灵活高效方便的,把变量的值插入到字符串中。

    那就是占位符
    占位符,简单解释,就是在字符串中帮变量占住位置的特殊符号。

    就像大学时,经常有人帮同学占座位,一般是用个东西放在那个座位上,表示这个地方有人占了,
    然后等正主来了,收起东西,让正主坐下。

    占位符的工作原理就是这样。
    python里面有三种占位符表示方法

    • %
    • format
    • f表达式

    这里只给大家简单的介绍下这三种写法。

    前两种的写法格式如下
    string operator variables

    • string: 含占位符的字串
    • operator: 特殊的操作符,可以理解为该操作符告诉字符串,正主来了
    • variables: 定义的变量名,正主

    注意:正主来了才能进行字符串替换,正主没来原样展示string

    %

    占位符简单写法为%s,然后其操作符为%
    只有一个变量的话,就直接放在操作符后面,
    多个变量,就用小括号一起括起来,再放在操作符后面。

    举例

    >>> x = 3
    >>> y = 4
    >>> z = x + y
    >>> "%s"
    '%s'
    >>> "%s" % z
    '7'
    >>> "%s + %s = %s" % (x, y, z)
    '3 + 4 = 7'
    

    format

    占位符简单写法为{}
    然后其操作符为format()
    变量都放到format的括号里面。

    举例

    >>> x = 3
    >>> y = 4
    >>> z = x + y
    >>> "{}"
    '{}'
    >>> "{}".format(z)
    '7'
    >>> "{} + {} = {}".format(x, y, z)
    '3 + 4 = 7'
    

    f表达式

    这个是Python 3.6开始的一个新功能,
    其简单格式为f'...{var}...'

    注意: 此时var必须填写(不然会报错)。

    举例

    >>> x = 3
    >>> y = 4
    >>> z = x + y
    >>> f'{}'
    SyntaxError: f-string: empty expression not allowed
    >>> f'{z}'
    '7'
    >>> f"{x} + {y} = {z}"
    '3 + 4 = 7'
    

    补充

    占位符不仅可以给数据变量用,还可以给其他类型变量用,比如也可以做字符串的拼接。

    >>> name = "lihua"
    >>> age = 18
    >>> "I am %s, %s years old." % (name, age)
    'I am lihua, 18 years old.'
    >>> "I am {}, {} years old.".format(name, age)
    'I am lihua, 18 years old.'
    >>> f"I am {name}, {age} years old."
    'I am lihua, 18 years old.'
    

    本系列课程,主要会使用前两种占位符。
    简单情况使用%,较麻烦的会使用format

    参考与拓展: python 格式化输出详解(占位符:%、format、f表达式)——上篇 理论篇

  • 相关阅读:
    C++界面库(十几种,很全)
    前端框架
    Asp.Net Web Api 接口,拥抱支持跨域访问。
    WEB控件
    MVC之验证
    AJAX跨域调用ASP.NET MVC或者WebAPI服务
    VS生产的编辑方法和编辑窗体
    DDD(领域驱动设计)应对具体业务场景,Domain Model(领域模型)到底如何设计?
    Redis简介与简单安装
    Cocos2d-x 3.1.1开发环境
  • 原文地址:https://www.cnblogs.com/BigShuang/p/14976130.html
Copyright © 2020-2023  润新知