码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础入门 (一)

时间:2015-12-27 23:31:52      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:

一、关于版本的选择

  Should i use Python 2 or Python 3 for my development activity?转载自Python官网

  Short version: Python 2.x is legacy, Python 3.x is the present and future of the language

  Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is under active development and has already seen over five years of stable releases, including version 3.3 in 2012, 3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only available by default in Python 3.x.

  可以看出Python 2.X发布最后一个版本之后将不再继续更新。

  适用于Python 2.X的场景:  

  However, there are some key issues that may require you to use Python 2 rather than Python 3.

  • Firstly, if you‘re deploying to an environment you don‘t control, that may impose a specific version, rather than allowing you a free selection from the available versions.
  • Secondly, if you want to use a specific third party package or utility that doesn‘t yet have a released version that is compatible with Python 3, and porting that package is a non-trivial task, you may choose to use Python 2 in order to retain access to that package.

二、Python的基本常识

1、安装

  在Mac上安装Python

  由于Mac自带Python 2.7,因此最好使用homebrew安装Python3.X,这样就避免修改系统自带的Python。

  首先安装Homebre,然后brew install python3安装即可。

  但是使用的时候要注意版本!!!

      技术分享

  在Linux上安装Python

  一般的Linux发行版默认自带的也是Python2.X,同样需要下载最新的源码包,然后记得修改环境变量。为了让系统自带的其他软件可以正常使用,因此还需要修改一些配置文件等等,比如常用的yum等等。

  安装好以后记得使用python --version 命令验证版本是否正确。

2、如何编写和运行Python程序

  使用Python的交互式命令行写程序

  使用python命令打开,使用方便,但是不能保存,不过可以在日常测试的时候简单使用。不过记得如果要输入多行的时候要记得敲table键,注意缩进。

      技术分享

  使用文本编辑器

  比如Notepad++、Sublime Text、Pycham。

  运行时比如pycham可以直接选择“run”按钮,Sublime Text使用F5等等。

  保存文件时要使用“.py”结尾,声明这是一个Python程序文件。

 

  运行Python程序需要给该文件增加可执行权限

  chmod +x hello.py

      技术分享

  不过需要注意的是需要再程序文件里声明解释器,不然会报错。

  技术分享

  还有另一种执行方式,不需要加权限,直接 python hello.py

  技术分享

三、Python基础

1.1 数据类型

  整型,int,整数,如1、20、100等;

  浮点数,float,小数,如1.1、100.2等等;

  字符串,str,是以单引号或者双引号括起来的任意文本,如‘tom‘、"haha“、‘100’;

  布尔型,一个布尔值只有True、False两种值。布尔值可以用and/or/not 运算。

1.1 变量

  变量名必须是大小写字母、数字和_的组合,但是不能以数字开头;

  常用的命名方式,如 name_list 和 Name_List等。

2.1 输入和输出

  Python 2.X

  在Python2.X上又raw_input和input两种函数都有输入功能,但是又存在区别,如下图所示:

  技术分享

  可以看出input默认输入的是变量,因此直接输入tom的时候提示没有定义,必须加上单引号才可以。当输入为str的时候才能正常输出。

  Python 3.X

  在该版本中input默认输入的是字符,因此输入的时候无需加单引号;

  技术分享

  由于默认输入的为字符型,所以又时需要加int转为整型;

  技术分享

  Python 2.X中的input类似于Python 3.X中的eval函数。

  技术分享

2.2 实践

  要求输入名字,并打印

#!/usr/bin/env python3
name = input("Please input your name: ")
print(name)

   执行结果

Please input your name: tom
tom

 3.1 条件判断if...else

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

   根据Python的缩进规则,如果if语句判断是True,就会执行缩进两行的语句,否则什么也不做。如果if后面有else语句,意思是如果if判断为False,不再执行if的内容,而是去执行else后面的语句。注意不要少写了冒号。如果使用多次判断,可以使用elif。

  if语句执行顺序为从上往下判断,如果在某个判断上为True,把该判断对应的语句执行后,就忽略掉剩下的elif和else。

3.2 实践

  要求输入一个名字和job,如果输入名字为tom,job为cat,那么就输出”You are Tomcat!“

#!/usr/bin/env python3
#__author__ = ‘jack‘
name = input("Please input your name:   ")
job = input("Please input your job: ")
if job == ‘cat‘:
    print("You are Tomcat!")
elif job == ‘dog‘:
    print("Your are dog.")
else:
    print("I don‘t know ...")

 

#执行结果
Please input your name:   kitty
Please input your job: 
I don‘t know ...

Please input your name:   dog
Please input your job: dog
Your are dog.

4.1  while循环

  Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

while 判断条件:

   执行语句……

  执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束。

代码示例:

#!/usr/bin/env python3
i = 0
while i<3:
    print(i)
    i += 1
#执行结果
0
1
2

   while语句还有两个重要的命令continue、break来跳过循环;continue用于跳过该次循环,break则是用于退出循环。

代码示例:

# continue 和 break 用法

i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     # 非双数时跳过输出
        continue
    print i         # 输出双数2、4、6、8、10

i = 1
while 1:            # 循环条件为1必定成立
    print i         # 输出1~10
    i += 1
    if i > 10:     # 当i大于10时跳出循环
        break

  循环中使用else语句,else中的语句会再循环正常执行完的情况下执行。

代码示例:

#!/usr/bin/python

count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

#输出结果
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

 4.2 实践

  要求指定一个lucky number,然后猜,猜对输出bingo!

#!/usr/bin/env python3
luckey_num = 6

while True:
    choice = int(input("Please input you want :"))
    if choice == luckey_num:
        print("Bingo!!!")
        break
    elif choice > luckey_num:
        print("Too bigger!!!")
    else:
        print("Too smaller!!!")

 

#执行结果
Please input you want :10
Too bigger!!!
Please input you want :5
Too smaller!!!
Please input you want :6
Bingo!!!

5. for循环

  Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。代码示例:

for i in range(10):
    print(i)
#执行结果
0
1
2
3
4
5
6
7
8
9

   循环打印列表,代码示例:

#!/usr/bin/python

fruits = [‘banana‘, ‘apple‘,  ‘mango‘]
for index in range(len(fruits)):
   print(‘当前水果 :‘, fruits[index])

print("Good bye!")
#执行结果
当前水果 : banana
当前水果 : apple
当前水果 : mango
Good bye!

 6. list和tuple

  Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

  比如打印所有的动物,就可以用一个list表示,代码示例参考5for循环。

6.1 list的基本操作

  append  添加

  clear    清空

  copy    复制

  count   统计元素

  extend   扩展

  index   索引

  insert   指定索引插入

  pop    删除最后一个元素

  remove  删除指定元素

  reverse  翻转

  sort    排序,支持数字、字母,但不支持混排

  zoo.append()添加一个元素到zoo;

  技术分享

  zoo.copy()copy到另一个list;

  技术分享

  zoo.clear()清空该list;

  技术分享

  zoo.extend()扩展,可以把两个list合并;

  技术分享

  zoo.count()统计元素个数;

  技术分享

  zoo.index()输出某个元素的索引;

  技术分享

  zoo.insert()在指定索引插入一个元素;

  技术分享

  zoo.pop()删除最后一个元素;

  技术分享

  zoo.remove()删除指定元素;

  技术分享

  zoo.sort()排序,不过在Python 3.x里不能数字字母混排;

  技术分享

  zoo.resverse()翻转;

  技术分享

  切片,类似于字符的切片。

  技术分享

6.2 tuple

  另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改

list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。

四、文件I/O

1. 1 open函数

  如果要读写文件,必选先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。

file object = open(file_name [, access_mode][, buffering])

 

  各个参数的细节如下:

  • file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
  • access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
  • buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

1.2 不同模式打开文件的完全列表:

r	以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb	以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+	打开一个文件用于读写。文件指针将会放在文件的开头。
rb+	以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w	打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb	以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+	打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+	以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a	打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab	以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+	打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+	以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
 

1.3 File对象的属性

  一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。

  以下是和file对象相关的所有属性的列表:

属性	描述
file.closed	返回true如果文件已被关闭,否则返回false。
file.mode	返回被打开文件的访问模式。
file.name	返回文件的名称。
file.softspace	如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

  标示符‘r’表示读,这样就成功打开一个文件。

  如果文件不存在,open()函数就会跑出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:

f = open(‘passwd.txxt‘,‘r‘)
print(f.read())
f.close() #执行结果 Traceback (most recent call last): File "/Users/jack/Documents/git/change/Demo/s1/ts1.py", line 3, in <module> f = open(‘passwd.txxt‘,‘r‘) FileNotFoundError: [Errno 2] No such file or directory: ‘passwd.txxt‘

  如果文件打开成功,接下来调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:

  

f = open(‘passwd.txt‘,‘r‘)
print(f.read())
f.close() #运行结果 admin

   最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

f.close()

   由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会被调用。所以为了保证是否出错都能正确的关闭文件,因此可以使用try...finally来实现:

file = open(‘passwd.txt‘,‘r‘)
try:
    data = file.read()
    print(data)
finally:
    file.close()
    print(file.closed)
#执行结果
admin
True

  每次这么写有点实在太繁琐,所以可以使用with语句来自动调用close()方法:

with open(‘passwd.txt‘) as f:
    print(f.read())

  “with”语句对 “f” 文件对象调用在Python中称作“上下文管理器”的方法。也就是说,它指定 “f” 为指向 /etc/passwd 内容的新的文件实例。在 “with” 打开的代码块内,文件是打开的,而且可以自由读取。

  然而,一旦Python代码从 “with” 负责的代码段退出,文件会自动关闭。试图在我们退出 “with”代码块后从 f 中读取内容会导致和上文一样的 ValueError 异常。所以,通过使用 “with”,你避免了显式地关闭文件的操作。Python 会以一种不那么有 Python 风格的方式在幕后神奇而静静地替你关闭文件。

 

  如果文件很小,read()一次性读取最方便,如果文件有几十G,内存就会爆满。所以保险起见,可以反复调用read(size)方法,每次读取size个字节的内容。另外,调用readlines()一次读取所有内容并按行返回list。因此要根据需要决定怎么调用。

  如果是配置文件,调用readlines()最方便。

with open(‘passwd.txt‘) as f:
    for line in f:
        print(line)
#执行结果
admin

haha

tom

jack

 

with open(‘passwd.txt‘) as f:
    for line in f.readlines():
        print(line)
#运行结果
admin

haha

tom

jack

 2.1 写文件

  写文件和读文件时一样的,唯一的区别是调用open()函数时,传入的标示符‘w‘或者‘wb‘表示写文本或者二进制文件:

with open(‘passwd.txt‘,‘w‘) as f:
    f.write(‘zoo‘)
#运行结果,查看passwd.txt文件
zoo

   需要注意的时候,如果模式为‘w‘,那么就不能同时再读,而且会把该文件内容覆盖。

 

Python基础入门 (一)

标签:

原文地址:http://www.cnblogs.com/xiajie/p/5081122.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!