Python入门小菜笔记

来源:互联网 发布:关于朱成分分析的数据 编辑:程序博客网 时间:2024/05/17 07:23

标签: Python


安装与运行

在Ubuntu下跑的,貌似装了一些软件以后已经有装好的Python了,直接在控制台上输入python2或者python3进入相应的版本,第一行即给出了具体的版本号,最新的是Python 2.7.12Python 3.5.2,目前2具有更好的兼容性。

python写的程序为*.py,终端进入对应文件夹下python2 *.py即可运行。

另外又装了一款多平台IDE, Pycharm,在Windows里跑很方便。


标识符

以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用”from xxx import *”而导入;以双下划线开头的__foo代表类的私有成员;以双下划线开头和结尾的__foo__代表python里特殊方法专用的标识,如__init__()代表类的构造函数。


基本语法

和C相比而言,有几处不同:

  • 冒号表示段落的开始。用缩进代替花括号,但必须严格缩进一样数量的空格。建议你在每个缩进层次使用 单个制表符两个空格四个空格 , 切记不能混用。错误提示
IndentationError: unindent does not match any outer indentation level
  • 使用斜杠( \)将一行的语句分为多行显示,而[], {}() 括号就不需要。

  • 注释符 # 或者 三引号

  • 在同一行中使用多条语句,语句之间使用分号(;)分割,行末可以不加。


输入输出

x=input()x=input("Please input a digit")print xprint 'abc'print 3

在IDE中要支持中文,必须在设置中改变编码类型为UTF-8,并在行首加

# coding=utf-8

如果还是报错,注意这句话等号两边都不要加空格!

input:会根据用户的输入来做类型的转换
raw_input:则会把用户的输入都作为一个字符串来处理(所见即所得)

def input(prompt):    return eval(raw_input(prompt))# eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象                    # 两次都输入3+5x = input("x:")     print x             # 输出8y = raw_input("y:")print y             # 输出3+5

输出类似于C中sprintf的写法

print "My name is %s and weight is %d kg!" % ('Zara', 21) 

解决py2会自动输出回车的方法

from __future__ import print_function  # 用py3的print的写法print(x, end="")                       # 表示结束符不用回车

也可以对整个文件做处理,新建文件、写入内容、删除文件。系统指令很多,要用时查表。

fo = open("a.cpp", "wb")        # 打开/新建文件fo.write("a=10\nprint a")       # 写入内容fo.write(r'''                   #include <bits/stdc++.h>int main(){    int x, y;    while(~scanf("%d%d", &x, &y))        printf("%d + %d = %d\n", x, y, x+y);    return 0;}''')                            # r可以避免转义字符生效fo.close()                      # 关闭文件import os                       # 载入os库os.remove("a.cpp")              # 移除文件

内置对象

简单类型:int long float complex bool
容器类型:string list tuple

变量赋值不需要类型声明。

可以为多个对象指定多个变量。例如下面两句话等价,前面的赋值更加简洁。

a, b, c = 1, 2, "john"a = 1; b = 2; c = "John"

要调用一些数学变量和常用函数,先载入头文件再调用

import mathmath.pimath.sin(x)help(math)help(math.acos)

可以进行复数运算

x=2+3jcomplex(2, 3)y=4+7jx/y

string使用方便
Python 接收单引号( ' )、双引号( " )、三引号( '''""") 来表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以引用多行。
+表示连接,*表示重复。

a = "python"print a[2:5]*2+a[0]+a[2:]

列表[]等价于C语言里的数组
+表示连接,*表示重复。

list = [4,5,'pp']len(list)      # 读取容量大小list.append(x)  # 塞入x

元组()类似于列表,但只读,不能二次赋值,系统会报错

tuple = (4,5,'pp')ct = list(tuple)     # 元组转换到列表,可进行二次赋值tt = tuple(ct)       # 反之,将列表转换到元组

元字典{}等价于C++里的map

dict = {}dict['one'] = "This is one"  # dict[key] = valuedict[2] = "This is two"tinydict = {'name': 'john','code':6734, 'dept': 'sales'}                           # dict = {key : value}print dict['one']          # 输出键为'one' 的值print dict[2]              # 输出键为 2 的值print tinydict             # 输出完整的字典print tinydict.keys()      # 输出所有键print tinydict.values()    # 输出所有值

删除对象

del a

运算符

和C差不多的就不赘述了,记一些不一样的
// 等价于对除法结果取floor()
** 等价于pow()
~ 求补运算
<>!=

逻辑运算符用单词直接给
and or not

一些测试运算符,非常接近正常语言
in not in 成员是否属于某一类
is is not 对象实体一致性


循环语句

设置了while...else...以及for...else...
正常循环时,执行while或者for后会执行else,但如果中途跳出,则不能执行else

for循环迭代体有多种设置方式

x = [**, **, **]for y in x: ****        # y作为迭代对象  for index in range(len(x)): ****  # index为数组下标,range返回一个序列数组

时间函数

import timetime.time()         # 自从1970年1月1日0点经过了多少秒time.localtime()    # 化到struct_time元组time.asctime()      # 能友好显示当地时间print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  # 2017-02-15 15:09:42

函数

定义函数后调用,其中参数都是直接引用的,和C不同。

def 函数名(参数x, y, z, *var):    “一些说明”    函数体    return ***

调用函数时可以选择一一对应传入参数;也可以打乱顺序指定变量名,此时也可省略一些参数。其中*表示参数数量不确定,传入多个以后会保存在元组var里。

函数名(xx, yy, zz)函数名(y=yy, x=xx, z=zz)

lambda函数
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

sum = lambda arg1, arg2: arg1 + arg2;

模块

在同一目录下生成新文件xxx.py,在其他python文件下调用函数只需

import xxxxxx.function()dir(xxx)        # 查看xxx.py里的函数

想在模块里使用全局变量,则先声明后再使用

global var

异常

异常类型系统已有定义。也可以用户自定义。为了保证代码出错时不会立刻停止,

try:      # 一段试着被执行的代码    fh = open("testfile", "w")    fh.write("这是一个测试文件,用于测试异常!!")except IOError:# 当try里的内容出现错误,则在下面的except里找对应错误    print "Error: 没有找到文件或读取文件失败"else:# 不出现错误则执行    print "内容写入文件成功"    fh.close()

其他功能

可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

1 0