现在的位置: 首页 > 综合 > 正文

python 3 快速入门

2018年04月02日 ⁄ 综合 ⁄ 共 6750字 ⁄ 字号 评论关闭

python笔记——python快速入门

通过本文可以快速简单了解面向过程的python的知识点。可以为以后的具体python的学习打下基础。

首先需要电脑里装好了python3.x。python的安装和配置可以网上查找资料。本文主要是从python的面向过程的几个要素切入。下面直接进入正题。

 

#1 数据类型


内置数据类型(只列举boolean, int, str)

boolean 表示布尔类型,True和false

int 表示整数类型:-9123, 2100302149190493818010104830202

   (整型的大小只受到机器内存大小限制)

str 表示字符型:”name”, “good job”, ‘positive αβγ’

(使用 >>> 表示在python shell中执行,并且,python不需要再句尾添加分号“;”)

>>>”HardTimes”[5]

‘T’

关于str双引号,单引号,其实是等价的,只是在这种情况:”You can call me ‘Amy’”,就不用使用转义字符\’了。

python 三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留,这样的好处是你可以替换一些多行的文本。

 

str类型和基本的数值类型(如int)都是固定的,一旦设置就不能被改变

类型转换:可以使用如下语法:

         datatype(item),

例如:

>>>int(“456”)

456

>>>str(456)

“456”

 

 

#2 对象引用

 

python 没有像C++ java样的变量,而是用对象引用,对固定对象而言,变量和对象引用没有什么区别。 另外,python为弱类型语言,类型检查很弱,在声明时不需要定义类型。

例如下面例子:( # 表示注释,相当于C++里头的 // )

x = “bule”

y = “green”

z = x          # z为”bule”

python中对于 = 符号作用就是将对象引用和内存绑定。而如果对象引用已经存在,那么就是重新绑定内存。

例如,上面例子:y = x 那么y将重新绑定了值”bule”

python中使用“动态类型”机制,即任何时候只要需要就可以进行重新绑定(可以使用不同的数据类型)。例如:(例子中用到print函数为打印到控制台的输出函数,type函数可以返回对象的类型)

route = 866

print(route, type(route))  #866 <class ‘int’>

route = “North”

print(route, type(route)) #866 <class ‘str’>

这里重新引用route的对象后,原来的int对象将进入垃圾收集流程

 

 

#3 组合数据类型

 

python提供了几种组合数据类型,包括关联数据类型集合数据类型。(这里只讨论两种,元组和列表)

元组是固定的,列表是可变的,在需要的时候可以把列表进行插入和移除数据项。

元组

元组使用逗号创建,元组输出时使用括号封装在一起,例如:

>>>“One”, “Two”, “Three”

('one', 'two', 'three')

>>> "one",

('one',)

>>> () # 空元组由()创建

()

 

列表list:

列表使用 [] 创建,如下例子:

[1,2,3,4,5,6]

["this","is","a","good","job"]

[1,2,"is","one","two"]

[]

 

和其他类型一样,组合数据类型也是对象,因此,可以将某种组合数据类型嵌套到其他组合数据类型里。看下面例子: (len()函数是求数据类型的长度)

>>>len((("c++","cocoa","java"),))

1

>>>len(("c++","cocoa","java"))

3

>>> len([3,4,"haha",(1,2)])

4

>>> len("Python")

6

所有Python数据项都是某种特定数据类型(也称类)的“对象”(也称实例)。不像c++ 或java的内置类型,python的这些数据类型可以有方法,比如list有个append()方法,用于添加元素。

>>> x = ["c++", "java"]

>>> x.append("python") # append会改变列表

>>> x

['c++', 'java', 'python']

可以使用 + 完成相同功能,不过+不会改变原列表

>>> x + ["c"]

['c++', 'java', 'python', 'c']

>>> x

['c++', 'java', 'python']

>>> x = x + ["c"]

>>> x

['c++', 'java', 'python', 'c']

list有很多其他方法,如:insert,remove……另外,python的索引也总是由0开始。

 

 

#4 逻辑操作符

 

身份操作符 is

is是一个二元操作符,即左边的对象引用和右边的对象引用指向的是否是同一个对象,返回false,true。看下面例子(None为内置空对象,表示未知。not表示反向)

>>> a = "yeah"

>>> b = "yeah"

>>> a is b

True

>>> a = ["haha",1]

>>> b = ["haha",1]

>>> a is b

False

         >>>a = "something"

>>> b = None

>>> a is not None, b is None

(True, True)

 

比较操作符

python提供二进制比较操作符的标准集合,<  <= ==  !=  >= > 都表示通常所期待的意思。这些操作对对象值进行比较,即对具体的内容进行比较。例如:

>>> a = 2

>>> b = 2

>>> a == b, a > b, a != b, a < b

(True, False, False, False)

python使用Unicode编码表示字符串,与简单的ASCII字符相比较,更复杂更微妙。

>>> a = "abc"

>>> b = "abd"

>>> a == b

False

>>> a < b

True

python比较操作符一个比较好的特性是,可以进行结连比较,例如:

>>> a = 9

>>> 0 < a < 10

True

 

成员操作符

对于序列或集合这类数据类型,比如:字符串,列表或元组,可以用操作符in(not in)来测试成员关系。即就是表示左边的元素是不是右边的成员。例如:

>>> 'a' in "abc"

True

>>> 2 in (5,"python",2,"@sina")

True

>>>"python" not in (5, "python", 2, "@sina")

False

 

逻辑运算符

python提供三个逻辑运算符,and  or  not

and 和or都使用short-circuit逻辑,返回决定结果的操作数(而不是返回布尔操作数)。

>>> 2 and 5

5

>>> 4 and 6

6

>>> 0 and 3

0

>>> 3 and 0

0

>>> 2 or 3

2

>>> 3 or 2

3

>>> 3 or 0

3

如果逻辑表达式本身出现在上下文中,那么结果也为布尔值,比如if语句中。

not 操作符在布尔上下文中评估参数,并返回布尔型的结果。

>>> not(0 == 0)

False

>>> not('a' in "abc")

False

 

 

#5 控制流语句


python中一块代码称为suite。由于python某些语法要求存在一个suite,python提供了关键词pass,pass实际上是一条空语句。不进行任何操作。

if语句

if Boolean_expression1:

    suite1

elif boolean_expression2:

    suite2

...

elif boolean_expressionN:

    suiteN

else:

    else_suite 

不像C++ 或java它没有圆括号,但是它需要冒号,以及缩进。

下面是例子:

if x:

    print("x isnonzero")

 

while语句

while语句即就是循环语句。(else分支为可选项)

while boolean_expression:

suite

else:

else_suite

类似C++或java,也可以支持break,continue。

while True:

    item = get_next_item()

    if not item:

        break

    process_item(item)

 

for…in语句

for循环语句重用了in 关键字,基本语法格式:

for variable in iterable:

suite

else:

else_suite

与while语句相似,支持break,continue语句。

countries = ['Denmark', 'Fenmark', 'Norway', 'Sweden']

for country in countries:

print(country)

 

基本异常处理

基本格式:(as variable部分为可选项)

try:

    try_suite

except exception1 as variable1:

    exception_suite1

except exception2 as variable2:

    exception_suite2

...

except exceptionN as variableN:

    exception_suiteN

将完成如下逻辑工作,如果在try块中的suite都正常,将不产生任何异常,则except模块将被跳过;如果try块产生了异常,将会立即转向第一个和该异常相比配的suite,之后的except语句将不执行。如果发生了异常,并且指定了as variable部分,则在异常处理suite内部,variable引用的是异常对象。如下例子:(input是输入函数,并打印字符串于控制台)

s = input("enter an integer:")

try:

    i = int(s)

    print("valid integerentered:", i)

except ValueError as err:

    print(err)

运行,如果输入是数字,如123,输出是:

enter an integer:123

valid integer entered: 123

如果是输入字符:abc,那么输出是:

enter an integer:abc

invalid literal for int() with base 10:'abc'

 

 

#6 算术操作符


python提供了完整的算术运算符集,包括基本的+ -* / %。此外还有很多增强赋值操作符,比如,+= *=。这些和c++ java相同。python重载了+ +=,可用字符串,元组,列表等。起链接作用。

>>> a = "abc" + "def"

>>> a

'abcdef'

>>> a = ['a', 1, 'afda'] + ["haha"]

>>> a

['a', 1, 'afda', 'haha']

>>> (1,3,4) + (12,34,5)

(1, 3, 4, 12, 34, 5)

python还定义了些其他的运算符,如://  ** (x//y表示x除以y,舍弃小数部分,x**y表示x的y次幂)。另外值得一提的是,python没有支持++ -- 操作符。

还有整数的位逻辑运算操作符 |  ^  &  << >>  ~ (分别表示或,异或,与,左移,右移,反转)

 

 

#7 输入输出

 

前面我们展示了print()和input()函数。这是用于控制台的输出输入函数。

我们可以这样文件输出,将print函数的输出内容从控制台重定向到文件,例如:

C:\>test.py > results.txt

这个在windows和unix系统控制台上都可以使用。如果windows系统里的默认python版本是python2 那么需要使用C:\python30\python.exe test.py > results.txt

类似的,也可以用C:\>test.py < inputs.txt来将输入数据从文件给程序。


对于文件流操作,类似C++里,看下面程序:

f = open("myfile.txt","w")
f.write("First line with something")
f.close()
f = open("myfile.txt","r")
line = f.readline()
print(line)

本程序将在源文件同层文件里产生myfile.txt的文件,并且写入一行字符串Firstline with something,并将此文件的内容的第一行,也就是这一句Firstline with something读取出来给line,并在控制台打印出来。“w","r"类似c语言的用法。标记文件的读取方式可写和可读。

 

#8 函数的创建和调用

 

函数的通常语法格式:

def functionName (arguments):

         suite

这里参数arguments是可选的。

注意到和c++ java不同的是没有函数返回值类型。但不是不能返回值。其实,python中函数也是对象,因此可以存储在组合数据类型中。

下面给出一个例子:

def get_int(msg):

    while True:

        try:

            i =int(input(msg))

            return i

        except ValueError aserr:

            print(err)

这个函数有个参数msg,作为输入的时候的提示信息。使用本函数如下:

age = get_int (“enteyour age:”)

本函数是必须要输入参数的,因为我们没有给函数参数给予默认参数。默认参数可以这样给:

def get_int(msg= "enter an integer:"):

         suite

 

虽然自己写函数感觉很不错,但有时候完全不用这么做,因为python有大量的内置函数,比如,abs(), pow()等等,其标准库的大量模块中也有大量的函数可以使用。python的模块实际上就是.py的文件。我们只需要进行导入到文件就可以了。例如:import sys这里不需要写出拓展名。导入一个模块后,我们就可以使用里面的所有函数,类,和变量了。

下面展示一个实例,random模块(在标准库random.py中)提供了很多有用的函数。

import random

x = random.randint(1,6)

y = random.choice(["apple", "banana","cherry", "durian"])

randint()就是产生1到6之间的随机整数;choice()就是在参数中随机选择一个,并返回。

 

 最后给个实例,结束本文。

题目要求,完成在命令行提供一个整数,将此数打印成大的数值,如下所示:


程序实现:

import sys

##七行七列的矩阵填充数字
Digits = [
        ["  ***  "," *   * ","*     *","*     *","*     *"," *   * ","  ***  "], #0
        ["   *   ","  **   ","   *   ","   *   ","   *   ","   *   ","  ***  "], #1
        ["  ***  "," *   * ","*   *  ","   *   ","  *    "," *     ","****** "], #2
        ["  ***  "," *   * ","    *  ","   *   ","    *  "," *   * ","  ***  "], #3
        ["    *  ","   **  ","  * *  "," *  *  "," ******","    *  ","    *  "], #4
        [" ***** "," *     "," *     "," ****  ","     * ","     * "," ****  "], #5
        ["  ***  "," *     "," *     "," ****  "," *   * "," *   * ","  ***  "], #6
        [" ***** ","     * ","    *  ","   *   ","  *    "," *     "," *     "], #7
        ["  ***  "," *   * "," *   * ","  ***  "," *   * "," *   * ","  ***  "], #8
        ["  ***  "," *   * "," *   * ","  ***  ","   *   ","  *    "," *     "]] #9
##接收命令行传值,只处理数字
try:
    num = sys.argv[1]
    row = 0
    while row < 7:      #逐行处理打印
        line = ""       #用于打印当前行的引用对象
        column = 0
        while column < len(num):
            number = int(num[column]) #每次获取一个数字,从第一个到最后一个
            a = Digits[number]      #将大写的数字读入
            line += a[row] + " "    #选取大写数字的当前行,连接
            column += 1
        print(line)     #打印当前行
        row += 1
except IndexError:      #异常处理下标异常
    print("usage:bigdigits.py <number>")
except ValueError as err:  #异常处理命令行读入数据类型
    print(err, "in", num)


以上简要介绍了python过程型程序设计。还有很多内容并没有提到,具体知识点需要具体去学习。通过本文的学习,对python也已经有了大体了解了,对以后进一步学习打下了基础。

抱歉!评论已关闭.