python初学--day1

第一个PYTHON代码

交互式编程它不需要创建脚本文件,是直接通过 Python 的解释器的交互模式进来编写代码。如下图所示(win7操作)

下图为一个Python代码内部执行图,可以有助于理解python整个过程

 1 C:Usersmiao>python -V
 2 Python 2.7.10
 3 
 4 C:Usersmiao>python
 5 Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on wi
 6 n32
 7 Type "help", "copyright", "credits" or "license" for more information.
 8 >>> print 'Hello,World!'
 9 Hello,World!
10 >>>exit()

通过创建脚本文件,先编译一个文本文件,文件后缀名为.py (注:txt结尾的文件也是可以运行的,但是它在运行后不会生成pyc格式的文件,这样的话如果用户想调用这个程序就不能了)

.pyc速度快,如果.py内容修改,则先执行.py.然后生成.pyc执行

编写内容如下:

1 #!/usr/bin python
2 #-*- coding:utf-8 -*-
3 
4 print 'hello,world'
5 print '你好,世界!'

执行结果如下:

1 E:软件pythonclass_testdays1>python hello.py
2 hello,world
3 你好,世界!

python引导注释

Python 中字符串可以使用单引号( ' ) ,双引号( " ),三引号('''  ''') 来表示,引号的开始与结束必须使用相同的类型。
其中三引号也可以做为注释使用。

1 #!/usr/bin python
2 #-*- coding:utf-8 -*-
3 
4 print 'hello,world'
5 print "hello,world"
6 
7 '''
8 print '你好,世界!' 
9 '''

执行结果如下:

1 E:软件pythonclass_testdays1>python hello.py
2 hello,world
3 hello,world

从上面可以看出因为我们注释掉了"你好,世界!",所以程序在执行时,没有把它打印出来

三个引号也可以做为换行使用,如下:

 1 >>> print '''
 2 ... a
 3 ... b
 4 ... c
 5 ... d
 6 ... '''
 7 
 8 a
 9 b
10 c
11 d
12 
13 >>>

字节码

三种编码类型:ASCII,UNICODE,UTF-8

PYTHON3.0以前默认使用ASCII,如果里面含有汉字,我们在写代码时,可以在上面顶行写一个编码声明:

# -*- coding:utf-8 -*-

PYTHON3.0以后,默认使用UTF-8

变量声明与赋值

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3  
4 name = "alex"

如下面这个例子:

 1 >>> name1='wupeiqi'
 2 >>> name2=name1
 3 >>> name1
 4 'wupeiqi'
 5 >>> name2
 6 'wupeiqi'
 7 >>> name1='123'
 8 >>> name1
 9 '123'
10 >>> name2
11 'wupeiqi'
12 >>>

变量name1,我们赋予它值'alex'后,它会在内存中开辟一块区域用来存储这个字符串,如果我把变量name2的值赋予name1,虽然它们的结果是一样的,其实它们应该在内存是两块区域,只是PYTHON对它们进行了一个优化,设了一个共享池,它会把同样的值,用的频率高的值放到一个小池子里,方便用户对它的调用.而不用每次读取磁盘.同时还可以加快响应速度

如果是集合的话,name是会跟着变的
C语言里面是没有字符串的,有字符
hello --五个字符组成
C语言中是由字符数组['h','e',...'o']
字符串特性:一旦修改,重新创建
 
'hello'+'sb'+'alex'
'hello'+
'hello'+'sb'+
'hello'+'sb'+'alex'
 
python有一个垃圾回收机制,python虚拟机,它会自动清理,我们不用关心

用户交互

这里用到一个参数:raw_input,我们来看下面的例子

1 #!/usr/bin env python
2 #-*- coding:utf-8 -*-
3 
4 name = raw_input("请输入用户名: ") 

我们执行这个文件,看一下结果

1 E:软件pythonclass_testdays1>python flow_control_1.py
2 请输入你的名字: 你好

模块调用

import 

看如下两个例子:

例一:

#!/usr/bin env python
#-*- coding:utf-8 -*-

import sys
#捕获参数
print sys.argv

执行
E:软件pythonclass_testdays1>python capture_parameter.py localhost:8001
['capture_parameter.py', 'localhost:8001']

例二:
#!/usr/bin python
#-*- coding:utf-8 -*-

import getpass
pwd = getpass.getpass(">>>")
print pwd

执行
E:软件pythonclass_testdays1>python capture_parameter.py
>>>
123

E:软件pythonclass_testdays1>python capture_parameter.py
>>>
wo de mi ma

流程控制

用的两个判断语句:if ... else

                          if ... elif ....elif...else

可以参考如下两个例子:

例一:
#!/usr/bin env python
#-*- coding:utf-8 -*-

if name == 'alex':  
    print '你猜对了'
else:
    print '你输入的是啥啊?' 

例二:
#!/usr/bin env python
#-*- coding:utf-8 -*-


#if  else

name = raw_input("请输入你的名字: ")
if name == 'eric':
    print '普通'
elif name == 'tony':
    print '超级'
elif name == 'alex':
    print '超神'
else:
    print '你输入错误'
数据类型
两部分:
    1.单值
                数字 
                    整型: 如3714
                    长整型:特别大的一个整数
                python自动来判断整型,长整型
                    浮点型:如3.14
                    复数:z = a + bj
             布尔值:True,False
            字符串
 1 >>> name = 1314
 2 >>> print type(name)
 3 <type 'int'>   ===>整型
 4 >>> name = 1.314
 5 >>> print type(name)
 6 <type 'float'>  ===>浮点型
 7 >>> 1=2
 8   File "<stdin>", line 1
 9 SyntaxError: can't assign to literal
10 >>> name1 =5
11 >>> name2 = 6
12 >>> name1 < name2
13 True           ===>布尔值
14 >>> name1 > name2
15 False

    2.集合

             -----列表
name_list = ['alex','seven','eric']
或
name = list( ['alex','seven','eric'] )
例如:
>>> name_list[0]
'alex'
>>> name_list[-1]
'eric'
1 >>> name = ['wo','ai','ni']
2 >>> print type(name)
3 <type 'list'>    ===>列表

             -----元组           

4 >>> ages = (11,22,33)
5 >>> print type(ages)
6 <type 'tuple'>  ===>元祖

          -----字典、  哈希表

每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。

键必须独一无二,但值则不必。

值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。

 1 #!/usr/bin/env python
 2 #-*- utf-8 -*-
 3 
 4 person = {'name':'alex','age': 18,'gender': 'erci'}  ---->字典里面一个元素  .每一个元素都是由一个键值对组成
 5 
 6 person['age'] = 20    ---》修改字典
 7 person['love'] = 'women'  ---》添加字典键值对
 8 del person['name']   ---》删除字典键值对
 9 
10 print 'age is:',person['age']
11 print 'love is:',person['love']
12 print person  

 结果如下:

1 E:软件pythonclass_testdays1>python dict.py
2 age is: 20
3 love is: women
4 {'gender': 'erci', 'age': 20, 'love': 'women'}
注:列表与元祖的区别
1.元祖不可修改,列表可修改
2.对于切片来说,元祖也是可以执行的
3.元祖不可以增加,修改
4.元祖是括号()表示,列表用中括号[]表示

字符串格式化

%s:字符串  %d:数字

例子如下:

 1 name = 'i am %s' % 'alex'
 2 方式一:
 3 >>> name = 'i am %s,age %d' %('alex',63)
 4 >>> name
 5 'i am alex,age 63'
 6 方式二:
 7 >>> name = 'i am %s,age %d'
 8 >>> name %('alex',76)
 9 'i am alex,age 76'
10 方式三:
11 >>> name = 'i am {0},age{1}'
12 >>> name.format('alex',73)
13 'i am alex,age73'

方式一与方式二是一样的,方式一执行时实际调用的是方式三.

字符串是一个字符数组

索引(也叫下标)

我们先看一下这个例子:

 1 >>> name = 'alex'
 2 >>> name[0]
 3 'a'
 4 >>> name[1]
 5 'l'
 6 >>> name[2]
 7 'e'
 8 >>> name[3]
 9 'x'
10 >>> name[1:3] -->  这个3是不包含3的,是小于3的,<3
11 'le'
12 >>> name[0:] --> 表示到结尾
13 'alex'
14 >>> name[1:]
15 'lex'
16 >>> name[-1:] -->负1表示最后一个
17 'x'

查看一个字符串的长度:print len(name)

注意:下标是从0开始

去除空格 

我们这里用到这个strip参数,直接看下面的例子:

 1 print name.strip() -->去掉两头空格 
 2 print name.lstrip() -->去掉左边空格 
 3 print name.rstrip() -->去掉右边空格 
 4 例如:
 5 >>> print name.strip()
 6 alex
 7 >>> print name.lstrip()
 8 alex
 9 >>> print name.rstrip()
10    alex

列表增加元素的方法

定义:列表1     name_list1= ['alex','seven','eric']

定义:列表2     name_list2 =name_list1

1 >>> name_list1= ['alex','seven','eric']
2 >>> name_list2 = name_list1
3 >>> name_list1
4 ['alex', 'seven', 'eric']
5 >>> name_list1.append('miao')
6 >>> name_list1
7 ['alex', 'seven', 'eric', 'miao']
8 >>> name_list2
9 ['alex', 'seven', 'eric', 'miao']

通过上面我们可以看到:列表是可以增加的,并且列表2会随着列表1的变化而变化.而字符串是和这个不同的

分割与合成

我们这里用一个参数split和join,例子如下:

 1 >>> name = 'zhongsguo'
 2 #把字符串分割成列表
 3 >>> name.split('s')
 4 ['zhong', 'guo']
 5 >>> name1 = name.split('s')
 6 >>> name1
 7 ['zhong', 'guo']
 8 #把列表合并成字符串
 9 >>> name2 = '_'.join(name1)
10 >>> name2
11 'zhong_guo'
几个小的注意点:
str字符串:新加后重新开辟空间
list列表:  修改后,引用地址不变
tuple元祖: 不允许修改
循环
一、for ...in....
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name_list = ['alex', 'xiaoyueyue', 'wenqiang']
5 for ele in name_list:
6     print ele

二、加if条件的循环

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name_list = ['alex', 'xiaoyueyue', 'wenqiang']
5 for ele in name_list:
6     if ele == "xiaoyueyue":
7         print "find"

三、如果我们要中断跳出整个循环,可以用break

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 
4 name_list = ['alex', 'xiaoyueyue', 'wenqiang']
5 for ele in name_list:
6     if ele == "xiaoyueyue":
7         print "find"
8         break

四、如果我们要跳出当前条件的for循环,可以用continue

1 name_list = ['alex','yue','xiang']
2 for ele in name_list:
3     if ele == 'qyue':
4         print '找到你了'
5         continue       --->如果第一个没有找到,重新开始执行找第二个
6     if ele == 'alex':
7         print 'sp'
8         break

五、if...elif...else...嵌套循环

 1 #!/usr/bin env python
 2 #-*- coding:utf-8 -*-
 3 
 4 name1 = 'alex'
 5 name2 = 'eric'
 6 test = raw_input("请输入你的名字: ") 
 7 
 8 if test == name1:  
 9     print '你输入的名字是:',name1
10 elif test == name2:
11     print '你输入的名字是:',name2
12 else:
13     print '你输入的是啥啊?' 

结果如下:

 1 E:软件pythonclass_testdays1>python flow_control_1.py
 2 请输入你的名字: eric
 3 你输入的名字是: eric
 4 
 5 E:软件pythonclass_testdays1>python flow_control_1.py
 6 请输入你的名字: miao
 7 你输入的是啥啊?
 8 
 9 E:软件pythonclass_testdays1>python flow_control_1.py
10 请输入你的名字: alex
11 你输入的名字是: alex 

 基本的文件操作

文件里的写,读
步骤:找到文件:文件路径E:
        打开文件:file_obj =  (文件路径,'w+'什么形式打开?)
                        open:   open内部会调用file打开文件
        文件操作,读写(会传回一个文件句柄)
        file_obj.read()  #会将所有的内容读入内存
        file_obj.readlines() #会将所有的内容读入内存,并且一行一行给你列出.以行为元素的列表
        for line in  file_obj.xreadlines() #迭代器, 一行一行代入,这个是已经废掉的
        for line in file_obj: #每次循环,只读一行,避免全部读入内存
        file_obj.write() #会将内容全部写入文件
        file_obj.writeline() #会逐行写入文件
        file_obj.close()     文件关闭
例如下面这个例子:我们新建一个log.txt文件,要求里面的值全加1后,然后再更新写入文件
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 
 5 file_obj = open('E:软件pythonclass_testdays1log.txt', 'r+')
 6 line_list = file_obj.readlines()  
 7 my_list =[]
 8 for ele in line_list:
 9     line = ele.strip()
10     value_list = line.split(',')
11     last_value = int(value_list[-1])
12     last_value += 1
13     value_list[-1] = str(last_value)
14     value_str = ','.join(value_list)
15     my_list.append(value_str)
16 my_str = '
'.join(my_list)
17 file_obj.seek(0)
18 file_obj.write(my_str)
19 #file_obj.flush()
20 file_obj.close()
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 
 5 file_obj = file('E:软件pythonclass_testdays1log.txt', 'r')
 6 
 7 #print file_obj.readlines(),#将文件内容赋值给变量line_list
 8 line_list = file_obj.readlines()  
 9 #新建一个列表,用来存放转换后结果
10 my_list =[]
11 
12 for ele in line_list:
13     # 把line_list中的值去掉空格,然后赋给变量line
14     line = ele.strip()
15     #对line里面的内容,通过,分割成列表    
16     value_list = line.split(',')
17     #对列表value_list切片取最后值,为了确保无误,我们对取值后的结果转换成整型    
18     last_value = int(value_list[-1])
19     #按照要求加1    
20     last_value += 1
21     #把加1后的列表last_value内容重新软件成字符串    
22     value_list[-1] = str(last_value)
23     #我们通过合并参数join,用,把字符串转换成列表,并赋给变量value_str    
24     value_str = ','.join(value_list)
25     #因为我们有好多行内容,所以把每次转换后的结果追加存入列表my_list中,方便直接调用    
26     my_list.append(value_str)
27 #因为我们原来文件中的内容一行一条信息,所以我们新加入的信息加入换行符,并赋给变量my_str
28 my_str = '
'.join(my_list)
29 #把最后更新的结果写入文件中
30 file_obj.write(my_str)
31 #清空缓存
32 file_obj.flush()
33 #关闭文件
34 file_obj.close()
35 
36 
37 
38     
View Code
 
      
原文地址:https://www.cnblogs.com/miaoxg/p/4912105.html