zoukankan      html  css  js  c++  java
  • Python从菜鸟到高手(8):print函数、赋值与代码块

    1.神奇的print函数

    print函数相信读者一定对它不陌生,因为在前面的章节,几乎每个例子都使用了print函数,这个函数的功能就是在控制台输出文本。不过print在输出文本时还可以进行一些设置,以及输出多参数字符串。

    如果为print函数传入多个参数值,那么print函数会将所有的参数值首尾相接输出。

    # 输出结果:a b c d e
    print("a","b","c","d","e");
    

    我们可以看到,上面的这行代码输出了a到e,共5个字母。在Python控制台中输出了“a b c d e”。很明显是将这5个字符首尾相接输出了。不过这些字母之间用空格分隔,这是print函数默认的分隔符,用于分隔输出的多个参数值,这个默认设置是非常有用的,例如,执行下面的代码,会在等号(=)后面加一个空格。

    print("name =", "Bill")
    print("age =", 30)
    
    

    输出结果如下:
    name = Bill
    age = 30

    其中等号(=)前面的空格是第1个参数值包含的。

    print函数会为除了第1个参数值以外的其它参数值前面添加一个空格,这样做,在需要用空格分隔的场景下,就不需要在每一个参数值前面添加空格了。

    不过这种默认设置有利有弊,在不需要用空格分隔时,print函数仍然会添加空格。例如,要输出字符串“Apple,Orange,Banana”。其中Apple、Orange和Banana之间用逗号(,)分隔,逗号(,)与英文单词之间没有空格。如果按前面的做法,会有如下的代码输出这行字符串。

    print("Apple",",", "Orange",",","Banana")  
    
    

    输出的结果如下:
    Apple , Orange , Banana

    print("Apple",",", "Orange",",","Banana")  
    
    

    很明显,逗号(,)前后都有空格。当然,可以将逗号(,)与前面的英文单词合并,但逗号(,)与后面的英文单词之间仍然会有空格。

    print("Apple",",", "Orange",",","Banana")
    解决这个问题的方法很多,例如,可以用传统的字符串相加的方式输出字符串“Apple,Orange,Banana”。

    print("Apple" + "," + "Orange" + "," + "Banana")
    
    

    现在我们要用print函数特有的方法解决这个问题,就是修改默认的多参数值分隔符。在print函数最后添加“sep=","”,就可以将分隔符从空格改成逗号(,)。现在可以直接使用下面的代码输出字符串“Apple,Orange,Banana”。

    print("Apple", "Orange","Banana", sep=",") 
    

    输出结果。
    Apple,Orange,Banana

    print函数输出字符串时,默认会在字符串结尾添加换行符( ),这样每次调用print函数输出字符串,都会另起一行。不过有时我们希望调用多次print函数都在同一行输出,这时我们可以在print函数最后加上“end=" "”,让最后一个输出字符串结尾符变成空格,而不是原来的“ ”,当然,也可以将结尾符设成长度为0的字符串,这样多次使用print函数输出的结果就会首尾相接了,中间没有任何分隔符。

    print("a",end="");
    print("b",end="");
    print("c");
    

    输出结果:abc

    下面的例子演示了print函数输出多参数值,修改默认多参数值分隔符,以及修改输出字符串结尾字符的方法。

    #  输出用空格分隔的多参数值
    print("name =", "Bill")
    #  输出用空格分隔的多参数值
    print("age =", 30)
    #  使用加号(+)连接字符串
    print("Apple" + "," + "Orange" + "," + "Banana")
    #  修改多参数值分隔符为逗号(,),然后输出多参数值
    print("Apple", "Orange","Banana", sep=",")
    #  修改多参数值分隔符为“&”,然后输出多参数值
    print("Can","you","tell","me", "how", "to", "get", "to","the","nearest", "tube", "station", sep="&")
    #  修改输出字符串结尾符为空格,这样下一次调用print函数,就会中同一行输出内容了
    #  运行结果:Hello world
    print("Hello", end=" ")
    print("world")
    # 修改输出字符串结尾符为长度为0的字符串,这样下一次调用print函数,输出的内容不仅会在同一行,
    # 而且会首尾相接,运行结果:abc
    print("a",end="");
    print("b",end="");
    print("c");
    

    程序运行结果如下图所示。

    enter image description here

    2.有趣的赋值操作

    在很多读者看来,赋值操作是再简单不过了,我们在前面的章节也多次使用了赋值操作。不过Python语言中的赋值操作要有趣的多。例如,可以同时将多个值赋给多个变量。

    >>> x,y,z = 1,2,3
    >>> print(x,y,z)
    1 2 3
    

    在上面的代码中,将1,2,3分别赋给了x,y,z三个变量,并输出这3个变量的值。使用Python语言中的这个特性可以很容易实现两个变量中值的交换。

    >>> x,y = 20,30
    >>> x,y = y,x
    >>> print(x,y)
    30 20
    

    这种同时将多个值赋给多个变量的操作,等号(=)右侧的值与左侧的变量个数必须相等,否则会抛出异常。

    >>> x,y,z = 1,2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: not enough values to unpack (expected 3, got 2)
    >>> x,y = 1,2,3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: too many values to unpack (expected 2)
    

    Python语言的这种特性称为序列解包(Sequence Unpacking),其实任何一个可迭代(Iterable)的对象都支持这一特性,关于迭代对象(列表、集合等)的详细信息会在后面的章节介绍。

    Python语言还支持链式赋值(Chained Assignments)和增量赋值(Augmented Assignments),链式赋值是指将同一个值连续赋给多个变量。

    x = y = 20
    

    增量赋值是指将变量自身增加或减小(负增量)指定值的表达式的简化形式。例如,x = x + 2,如果用增量赋值表达式,可以写成x += 2,也就是将等号(=)右侧的x省略,并将加号(+)放到等号左侧。
    其实前面介绍的二元运算符都支持增量赋值,例如,x = x * 20可以写成x *= 20,x = x % 3可以写成x %= 3。

    下面的例子演示了序列解包、链式赋值和增量赋值的使用方法。

    x,y,z = 1,2,3				# 使用序列解包方式进行赋值
    print(x,y,z)
    
    x,y = y,x					#  利用序列解包交换x和y的值
    print(x,y)
    
    # x,y,z = 1,2  			# 抛出异常
    # x,y = 1,2,3  			# 抛出异常
    
    x = y = 20					#  使用链式赋值设置x和y
    print(x,y)
    
    x *= 2					#  增量赋值
    x %= 3					#  增量赋值
    print(x)
    
    

    程序运行结果如下图所示。

    enter image description here

    3. 用缩进创建代码块

    代码块并非一种语句,而是在学习条件和循环语句之前必须要掌握的知识。

    代码块是在条件为真(true)时执行的一组语句,在代码前放置空格来缩进语句即可创建代码块。

    注意:使用tab字符也可以缩进语句形成代码块。Python将一个tab字符解释为到下一个tab字符位置的移动,而一个tab字符为8个空格,不过Python标准推荐使用空格缩进的方式创建代码块,建议使用4个空格缩进的方式创建代码块。

    代码块的每行语句应该缩进同样的量。下面的伪代码(并非真正的Python代码)展示了如何用缩进的方式创建代码块。

    This is a code line
    This is another code line:
        This is a block
        continuing the same block
        the last line of this block
    We escaped the inner block
    
    

    很多编程语言使用特殊单词或字符来表示一个代码块的开始,用另外的单词或字符表示代码块的结束,例如,Pascal语言使用begin表示代码块的开始,使用end表示代码块的结束,而C风格的编程语言(如Java、C#、C++等)使用一对大括号表示代码块的开始和结束。Python语言和这些语言都不一样,Python语言使用冒号(:)表示代码块的开始,代码块中的每一条语句都是缩进的(缩进量相同)。当回退到与快的开始语句同样的缩进量时,就表示当前块已经结束。很多集成开发环境(IDE)会帮助用户轻松把握缩进,因此读者不必担心缩进量不对导致Python程序无法编译通过。

    我们现在已经了解了如何使用Python语言中的缩进块,在下面几节就详细介绍各种缩进块的应用。

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第4章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第3章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第1,2章 读书笔记(待更新)
    Tkinter的Message组件
    Git 实操/配置/实践
    mysq5.7.32-win安装步骤
    行为型模式之模板方法
    结构型模式之组合模式
    结构型模式之享元模式
    结构型模式之外观模式
  • 原文地址:https://www.cnblogs.com/nokiaguy/p/9617676.html
Copyright © 2011-2022 走看看