从C/C++或Java到Python

本文列出一些要点,帮助已经学会C/C++,Java(或其他面向对象语言)的同学快速入门Python。这些要点是关于语言的,没有涉及开发环境。

Python程序的构成

1. 第一个Python程序——Hello World程序

下面的一行代码构成打印Hello World的Python程序。

             print(“Hello World”)

上一行代码存为文件helloworld.py。在Windows终端上(注意,当前目录下须有helloworld.py),输入命令:

            python helloworld.py

就运行了程序(实质是运行python解释器程序解释执行了helloworld.py。须事先安装python。),在终端上打印出: Hello World

2. Python程序文件的后缀名必须是”.py“

Python程序文件后缀必须是.py。这样,python解释器才视该文件为python代码文件。

3. 第二个Python程序——求两个数的和

程序功能:输入两个数,输出它们的和。

代码如下:

#程序功能:输入两个加数,输出它们的和
firstNumStr= input("输入被加数:") #从键盘输入一串数字,存入firstNumStr变量中。“输入被加数:”这一段文字会打印到屏幕上,用作输入提示。

firstSum = float(firstNumStr) #float函数把文字类型的数字(firstNumStr变量存储)转换为浮点数(firstSum变量存储)
secondNumStr = input("输入加数:")
secondNum = float(secondNumStr)
sum = firstSum + secondNum #求和:firstNum变量的值和secondNum变量的值相加,和存入sum变量
print("两个数之和:" + str(sum)) #str(sum)是把sum变量的整数值转换为字符串类型的数字。

上述代码有6条语句。其中,#号之后到行末的文字都是注释

上述代码存为aplusb.py。在Windows终端上(注意,当前目录下须有helloworld.py),输入命令:

            python aplusb.py

就运行了程序(实质是运行python解释器程序解释执行了aplusb.py。须事先安装python。),在终端上将输出以下文字:
        输入被加数:
而后光标一闪一闪等待用户输入。用户输入完毕(敲回车表示完毕),输入的数字字符串赋给firstNumStr变量。接着,该数字被转换为浮点数。类似地,输入加数。最后,求得两个数的和,输出结果。

4.  概括起来讲

1)  Python程序由一条或多条语句组成。

2) 一条语句独立占一行或多行。一行中不能写两条语句。无须用分号来表示语句结尾。

3) 程序的执行从第一条语句开始往后执行,直至最后一条语句或者遇到退出语句。无须有main函数。

变量

1.  变量是什么

Python中,变量是值的名字,也即变量是值的引用。变量v可以先引用整数值(即变量v是某个整数值的名字),接着引用字符串值,再接着引用浮点数值。以下写法在Python中是允许的,在C/C++, Java中是不允许的。
         v = 1
         v = “hello”

         v = 6.8

变量的类型实际上是指值的类型。上面代码中,第一行代码使得变量v的类型是整型;第二行代码使得变量v的类型是字符串类型,第三行代码使得变量v的类型变成浮点数类型。

2.  变量的定义

Python中,第一次赋值就是定义变量。 如下面的写法定义了变量v:
         v = 1

变量必须先定义后使用。使用的例子有参与运算、用作实参、赋值给其他变量等等。

字符串

1. 字符串的写法

  • 用单引号或双引号括起来。如:"Hello world!",'hello'  。
  • 同样有转义字符。'\n'是换行符。'\\'是反斜杠。'\t'是制表符。等等。

2. 字符

Python中没有单独设字符这种数据类型,而是把字符视为长度为1的字符串。下面是字符的3个例子:'a',   '1',  "$" 。

3. 字符串与整数、浮点数之间的转换

  • 整数、浮点数转换为字符串,用str()函数。
  • 数字字符串转换为整数,用int()函数。
  • 数字字符串转换为浮点数,用float()函数。
  • 字符串不能和整数进行拼接操作。你应当用str()函数把整数转换为字符串后再进行拼接。

4. 字符串对象和方法

Python中,任何值,无论是整数值、浮点数值还是字符串值,都存储为一个对象。对象由多个属性组成。一个属性有两个组成部分:属性名和属性值。属性分数据属性和方法属性。

字符串对象有以下方法:

  • title()  把字符串内的各个单词首字母变成大写。
  • upper()  把字符串的所有字母变成大写。
  • lower()  把字符串的所有字母变成小写。
  • rstrip()  去除字符串尾部空白。
  • lstrip()  去除字符串头部空白。
  • strip()  去除字符串两端空白。
  • split()  分割字符串,得到单词列表。
  • 还有很多方法,无法逐一列出。参阅python手册,或用搜索引擎进行检索。

5. 字符与ASCII码的转换

要把字符转换为ASCII码,用ord( )函数;要把ASCII码转换为字符,用chr( )函数。

6.  如何查阅各个函数或方法的用法

  • 以ord函数为例,你可以在搜索引擎中输入“python ord”来查阅ord()函数的用法。
  • 你也可以利用安装在你电脑上的python手册来查阅ord()函数的用法。windows 7系统中启动python手册的做法图1所示。
    ord()函数的用法如图2所示。

image

                      图1  启动python手册

                 image

                   图2  python手册中查询ord()函数的用法

输入字符串、数字

1.  input()函数输入的是字符串

下面的写法,输入的是字符串,用num_str变量引用存储输入的文字的字符串对象。
           num_str = input("输入一句话:")   

这里,"输入一句话:"用作输入提示,就是打印到屏幕的文字,用来提示用户输入什么。

执行该语句时,终端上将输出以下文字:
        输入一句话:
而后光标一闪一闪等待用户输入。用户输入完毕(敲回车表示完毕),输入的文字(字符串类型)将赋值给num_str变量。

 

2.  要输入数字,应该进行类型转换

下面两行代码中,第一行是输入字符串,第二行代码是把字符串转换为整数数字。

     num_str = input( )         #这次没有输入提示

     num = int(num_str)

上面,用int( )函数把数字字符串转换为整数。要把数字字符串转换为浮点数,需要用float( )函数,如下所示。

     num_str = input( )         #这次没有输入提示

     num = float(num_str)

对象和方法

概念上,Python对象与Java对象是相同的。Python对象与C语言的结构体也有类似之处。对象由一组属性组成。属性分数据属性和方法属性两类。每一个属性都有属性名和属性值两部分。

方法(即方法属性的值)实质上是函数,不过是能够访问对象内部的属性的函数。普通的函数是不能够访问对象内部的属性的。

调用普通函数func的形式如: 
            result = func(10, 7.6)     
这里,10和7.6是实参,result变量接收函数的返回值。

调用方法method的形式如:

           result = object.method( 99)

这里,object是一个对象,点号.是成员操作符,99是实参。method方法能够访问object对象内部的属性。

 

if语句

if语句有三种。与C/C++,Java相比,除了书写格式有差异外,if语句的用法本质上是类似的。下面给出了每种语句的用法示例,你应当把它与你熟悉的语言进行对比。通过对比,你肯定能快速掌握Python语言的if语句的用法。

第一种if语句

第一种if语句的写法是:


       if  布尔表达式:
           语句块

布尔表达式跟C/C++, Java中的布尔表达式是等同的,都用于检查某个条件是否成立。语句块是由一条或多条语句组成。

注意:(1) 布尔表达式后面有一个冒号。(2) 语句块中的所有语句都要缩进4个空格。

第一种if语句的示例代码如下。代码的功能是输入整数,输出它的绝对值。

    numStr = input("输入一个整数:")
    num = int(numStr)
    if num < 0:         #if语句,当num<0成立时,执行其后的语句块 
         num = -num     #这里,语句块只有一条语句组成。 
    print("绝对值:" + str(num))  #这一条语句不属于if语句。

第二种if语句

第二种if语句的书写格式是:

       if  布尔表达式:
           语句块1

       else:

           语句块2

布尔表达式跟C/C++, Java中的布尔表达式是等同的,都用于检查某个条件是否成立。语句块是由一条或多条语句组成。

注意:(1) 布尔表达式后面和else后面都有一个冒号。(2) 语句块中的所有语句都要缩进4个空格。

第二种if语句的示例代码如下。代码的功能是输入分数,输出及格与否的结论。

 
 

第三种if语句

第三种if语句的书写格式是:

       if  布尔表达式1:
           语句块1

       elif 布尔表达式2:

           语句块2

       elif 布尔表达式3:

           语句块3

       else:

           语句块4

以上写法中, elif分支可多可少;else分支可以没有。你能猜到elif是什么单词的缩写吗?答案是else if。

第三种if语句的示例代码如下。代码的功能是输入年龄,得出门票价格。计价规则是:4岁以下,免费; 4~18岁,5元;18岁以上,10元。

 
 

逻辑运算符

在C/C++, Java语言中,实现“而且”、“或者”、”非“的逻辑运算符是&&, ||, !。

Python语言中,实现“而且”、“或者”、”非“的逻辑运算符是and, or, not 。

下面的代码是逻辑运算符的示例。代码的功能是输入年份,输出该年份是闰年还是平年的结论。

 
 

布尔类型

布尔类型就是值为真或假的类型。Python语言中,用关键字True代表真,False代表假。注意第一个字母是大写。

在C/C++, Java语言中,用true代表真,false代表假。注意第一个字母是小写。

while语句

Python的while语句与C/C++,Java的while语句相比,除了书写格式有差异外,用法本质上是类同的。

Python的while语句的书写格式是:

       while  布尔表达式:
           语句块

        

以上格式中,语句块由一条或多条语句组成。语句块的每一条语句都要缩进4个空。要记得写布尔表达式后面的冒号。

下面的代码给出了while语句的示例。代码的功能是求1+2+3+4+5的和。

 
 
 
 
 
 
 

函数

函数是由一组语句组成的。调用函数就是执行这一组语句。

函数的使用分定义函数和调用函数,用法与C/C++, Java差不多(以后会接触到调用函数时传入关键字参数,这是后两种语言没有的)。

定义函数和调用函数

Python中,定义函数的书写格式是:

        def 函数名(形式参数):
       语句块

上述格式中,def是define的缩写。上述写法构成一条Python语句。C/C++, Java中使用花括号括起函数体,Python中是用缩进的语句块代表函数体。要记得起始行末尾的冒号。强调一遍,语句块(函数体)要缩进。

要让函数返回值,需要使用return语句,这与C/C++, Java是一致的。

函数定义和调用举例1:

 
  
 
  
 
 
 
 
 
  
 
 

作用域

1.  全局作用域和局部作用域

  •      每一个Python文件拥有一个全局域。这一点与C/C++, Java类似。
  •      每一个函数定义都生成该函数的局部域。该函数内定义的变量,在函数外无法使用。这一点与C/C++, Java类似。
  •      与C/C++, Java不同,if语句,while语句,for语句的语句块不构成一个局部作用域。也就是说,它这些语句的语句块内定义的变量,在语句块外部也可以使用。

2. 示例:if语句,while语句,for语句的语句块不构成一个局部作用域

    下面代码中的price变量在if语句的语句块内定义,在语句块外依旧可以使用。

 
   
 
  
 
 

             Python语言对作用域有自己的若干约定。比如函数内部,修改全部变量的话,要事先用global语句声明该全局变量。

            在入门阶段,不宜纠缠过多枝节,故这里不予介绍。那同学们会问,啥是主干啥是枝节呢?解题要用到的知识内容,就是主干;用不到的,就是枝节。

列表和for语句

C/C++、Java中的数组,在Python中对应的是列表。数组和列表都是由多个元素组成的。数组能干的事,列表都能干,而且列表能干更多事。

列表的用法

1. 定义列表

    定义列表用的是方括号。下面定义了一份字符串为元素的列表,有courses变量引用它。

 
 
 
 
 
 

    下面定义了空列表。

 
 

2. 访问列表元素

    访问列表元素的做法与C/C++、Java的做法是一样的。下面的代码示范了这一点。

 
 

   Python可以用负数作为下标,比C/C++、Java的数组下标更灵活。

3. 修改、添加列表元素

    修改、添加列表元素的示例代码如下。你可以复制这段代码,建立一份python程序文件,运行该文件看看效果。

 
 

for循环遍历列表

1. for语句的写法

    Python语言的for语句和C/C++、Java的for语句有较大差别。Python的for语句的书写格式是:

        for 变量 in 列表:
       语句块

  示例程序如下。你可以复制这段代码,建立一份python程序文件,运行该文件看看效果。

 
 

2. for语句的执行流程

for语句的执行流程描述如下。

依次对列表中的每个元素e,执行下面两个步骤:

  1).  把当前元素e的值赋值给变量。

  2).  执行语句块。

3. 用range()函数实现C语言风格的for循环

     从1加到5,用循环来实现,在C/C++,Java中该怎么写,在Python中又该怎么写?

     C/C++、Java中的写法是:

         int sum = 0;

        for (int i = 1; i < 6; i++) {

              sum += i;

        }

    Python中的写法是:

       sum = 0

       for i in range(1, 6):

            sum += i

    上面代码中,range(1, 6)会生成[1, 2, ,3, 4, 5]这样一份列表。

4. range()函数

    下面的代码示范了range()函数的用法。更多的说明,请参阅Python手册,或者通过搜索引擎搜索。

 
  
 
 

  上面的代码中,range( )函数生成range对象,list( )函数获得range对象内的列表。

一行中输入一组数的做法

    下面的代码示范了如何让用户运行程序时,在一行中输入多个整数。

 
  
 
 

    关于上面的代码的说明:

       1. line.split( )是调用字符串对象的split方法。它的作用是,以空格为分隔符,分割整行文本(即line变量的值)得到数字字符串列表。

       2. 而后,遍历数字字符串列表,逐个地把数字字符串转换为整数,加入整数列表(或者说数组)中。

 

矩阵

    Python中,矩阵是以每一行为元素的列表。而每一行自身是一份列表,因此矩阵是列表的列表。

   下面的代码示范了定义矩阵和访问矩阵元素的做法。访问矩阵元素使用行下标和列下标。要记得,可以用负数作为下标,-1代表最后一个元素,-2代表倒数第二个,以此类推。

 
  
 
 

   下面的代码示范了如何用for循环遍历矩阵。代码的功能是累加各行的和,结果存入列表row_sum中。

 
 

  下面的代码示范了如何分两行输入2x3的矩阵。注意,三引号括起来的是注释,也就是下面的第2~6行是注释。

 
 

列表切片

  列表切片是指获得列表的一部分元素,组成子列表。在很多场合都会用到。

 
 

   注意:[1:4]是不含下标4的元素的。[-2:-1]是不含下标-1(也即最后一个)的元素的。

字典

在日常生活中,我们经常遇到“键-值对”类型的数据。比如,生词本用来记录英文单词及其中文释义。这里,英文单词是键,中文释义是值。又比如,电话簿记录了人名和电话号码。此中,人名是键,电话号码是值。使用这种类型的数据时,用‘键’查‘值’是最常发生的;用‘值’查‘键’的几率会少得多。

字典的查询

     Python语言提供了字典来存储和操作上述“键-值对”类型的数据。下面的代码示范了字典的用法,是用来存储电话簿。

 
 

    对于上面代码,说明如下:

         1.  contacts是一份字典。定义字典使用花括号{ }。字典的条目是一个键值对,比如字符串'马云'是键,字符串'13309283335'是值。

         2.  name in contancts,是用来判断name作为键,有没有出现在字典中。

         3.  contacts[name],是得到name键在字典中的值。加入name是'马云',那么contacts[name]将得到'13309283335'。

         4. 字典中键可以是整数类型、浮点数类型或字符串类型,还可以是其他类型。但列表不能用作键。

字典中插入键值对

    下面的代码片段示范了如何在字典中插入键值对,以及如何修改键值对中值的部分。代码的功能是统计数字在列表中的出现次数。

 
  
 
 

    关于字典的更多用法,在你需要用到某种操作时,再上网搜索。

模块

    Python模块与Java包有些类似,也有不同。

    每一个Python程序文件都构成一个模块。文件名就是模块名,比如newWordsFuncs.py程序文件的模块名是newWordsFuncs。

    下面举例说明模块的导入。

     假如你编写了newWordsFuncs.py程序文件,里头定义了read_command( )函数,append( )函数,delete( )函数和query( )函数。如何在另一个python程序文件main.py中使用newWordsFuncs.py内定义的函数呢?

     下面讲解3种导入的方法。这3种方法本质是一样的,细节上有差异。

1.  导入模块

下面是第一种用法的main.py文件的代码。底色为橙色的文字与模块有关。导入模块的写法是:

               import 模块名

调用模块内函数的写法是:

               模块名.函数(实参)

 
 

2. 导入模块并重命名

下面是第二种用法的main.py文件的代码。底色为橙色的文字与模块有关。导入模块并重命名的写法是:

                import 模块名 as 新模块名

调用模块内函数的写法是:

               新模块名.函数(实参)

 
 

3. 直接导入模块内的函数

采用前面两种导入方法的话,调用函数时必须带上模块名。

下面是第三种用法的main.py程序文件的代码,它里头调用函数时,无须带上模块名。直接导入模块内的函数的写法是:

          from 模块名  import 函数名1, 函数名2

如果要导入更多函数,在尾部追加函数名即可。下面的代码直接导入了4个函数。底色为橙色的文字与模块有关。

 
  
 
 

上面的代码的第一行换成:
        
from  newWordsFuncs import  *

将把newWordsFuncs模块内的全部函数直接导入进来(代价是消耗内存空间)。这里,星号*代表所有。接着,你可以向上述代码那样,不带模块名地调用函数。

 

文件操作

    Python的文件操作,在写法上与C/C++或Java类似,同样遵循打开文件 –> 读写文件 –> 关闭文件的流程。

1. 读取整个文件的内容

下面是读取整个文件内容的示例程序。你可以自己准备一份10-1-data.txt文件,文件内容随意。然后复制以下内容,存为程序文件,最后运行程序看看效果。

 
 
 
 
 
   
 

with ... as ...:
with语句块
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2. 逐行读取文件

下面的代码示范了逐行读取文件的用法。with语句的说明参照上一种用法。with语句结束时会自动关闭文件。

 
  


 
 
 
 
 

3. 读入到列表

下面的代码示范了读取文件的内容并存入列表的做法。

 
 
 
 
 

4. 读入有汉字的文件

 
 
 
 
 

5. 写入文件

下面的示例程序示范了写入文件的用法。

 
  

 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/yedouble/article/details/78551944