初识python

python之路第一篇

python入门

1.第一个python代码:

在Linux /home/py 目录下新建hello.py

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

print "Hello,World"

执行代码:

 python hello.py

2.捕获参数:

捕获参数,并存入到 集合

print sys.argv

3.模块导入:

import hello

4.python编译:

经过编译 成字节码文件 .pyc文件,反编译成 .py
如果.pyc 和 .py 内容相同,则.pyc 优先级高,否则,先查找.py,再重新编译生成 .pyc 文件

5.变量:

声明变量:

name = "Hello,World"

变量命名规则:

1)变量名只能以 数字、字母、下划线组成

2)第一个字符只能为字母、下划线;不能为数字

3)不要使用内置变量名

name1 = "test1"
name1 = name2

修改 name1 = "123"

name2 的值会跟着变吗?

答案是:不变

原因很简单:变量赋值时,会在内存中申请一块内存指针空间,将test1 赋值给 name1,相当于开辟了一块内存指针空间来存放 字符串test1,同时将 name2 = name1,相当于将 name2也同样指向这块内存指针空间,如果这个时候将字符串 “123”赋值给 name1,就相当于重新在内存中开辟一块内存指针来存储字符串 “123”,而name2 指针还是第原来的内存指针空间,所以name2的值并不会随着name1的改变而变化。

字符串特性:一旦修改,重新创建

以下是分配两块地址池的:

id1 = 7
id2 = 7

id(id1),id(id2) 指针地址一样,同一块内存指针池(看起来一样,是内部进行优化的,相当于在内部循环了一遍,当循环了一遍之后,发现有一个id1也是这个地址,于是也将id2指向这个地址,实际上是开辟两块指针空间的)

如果缓冲池过大,就会新开辟一块空间,缓冲池就会将多的扔掉

id1 = 700
id2 = 700 

id(id1),id(id2) 指针地址不一样

6.流程控制:

user_name = raw_input("please enter Your name:")
if user_name == "Allen":
    print "one!"
elif user_name == "yyh":
    print "Two!"
elif user_name == "ali":
    print "Three!"
else:
    print "Invalid User!"

7.数据类型,分为两部分:

1)、单值

   a.数字 :
    整型、长整型、浮点、复数
  -  
  
  b.布尔值:
    真或假 、1 或 0
  -  
  
  c.字符串:
       “hello wolrd”
    

2)、集合:
列表、元组、字典、哈希表

3)、字符串:

万恶的字符串拼接:

python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的
空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

a).字符串传值:
字符串格式化:

   name = "I'm %s" % 'allen'
   name = "I'm %s, age: %d" % ('allen',25)

   其中%s,%d 是占位符,%s代表字符串,%d 代表数字 ,% 后面的值是实际传入的参数,用来替换%s,和%d的值
   
   name = "I'm {0},age:{1}"
   new_name = name.format('allen',25)
   print new_name

b) 打印字符串:

   print 'name'   #使用单引号
   print "name"   #使用双引号
   print """      #使用三引号,打印多行
   I'm is allen,
   age is 25
   """

c) 字符串切片:

   name = "allen"
   name[0]   #打印索引为0的值,输出值:a
   name[0:2] #打印索引从0 到 2 的值,不包括2(即<),输出值为:al
   name[-1]  #打印最后一个,输出值:n
   name[:-1] #打印索引从0开始至倒数第二个字符,不包括自己,输出值:alle

d) 统计长度

   len(name) #统计字符串长度 

e) 去除两边的字符

   name.strip()  #去除两边的空格
   name.lstrip()  #去除左边的空格
   name.rstrip()  #去除右边的空格

f) 分割

   name = "allen,25,wonderful"
   name.split(',')

8.列表:

a) 创建列表:

name_list = ['allen','yyh','ali','25']

name_list = list(['allen','yyh','ali',25])

b)  追加

name_list.append('hello')

c) 删除

 del name_list[0]

d) john (列表变成字符串)

 "".join(name_list) 

e) in (包含,判断元素是否在列表中)

 "allen" in name_list

9.元组 (没有增删改),其他和列表一样

("allen","ali","yyh")

总结:

列表(list),字符串(str),元组(tuple)

共同点:
切片、索引、len() 、in

不同点:
str:重新开辟空间
list:修改后,不变

元组(tuple):
不允许修改

10.for 循环:

name_list =  ['allen','yyh','ali','25']

for item in name_list:

    if item == "yyh":

        print "diu diu ..."

        continue

    if item == "ali":

        print "welcome to here!"

        break   # 跳出循环

11.while 循环:

while 条件:
    print "ok ok ok"
while True:  # 死循环
    print 'true'

flag = True   #标记位
while flag:

    print "ok ok ok"
    flag = False

12.字典,键值对 (字典无序,特殊的for循环)

person = {
    "name":"allen",
    "age":"25",
    "gender":"man",
}

#person['name']
for k,v in person.items():  #字典无序
    print k,v 

person.keys()  #所有key
person.values() #所有value
person.items()  #所有元素  

13.运算符

a) 算数运算:+ - * / % ** //
b) 比较运算:==  !=  < >   >=  <=
c) 赋值运算:=  +=  -=  *=  /=  %=  **/  //=
d) 逻辑运算:and  or  not
e) 成员运算:in  not in
f) 身份运算:is  is not    
g) 位运算:& | ^ ~  >> <<

14.文件操作:

file_list = open('filename.txt','r')

or

file_list = file('filename.txt','r')

for line in file_list.read():
   print line  # 全量读

for line in file_list.readlines():
    print line  # 读取所有行,(列表)

for line in file_list.xreadlines():
    print line # 一行一行读(每次只读一行)

需求:将用户每登陆一次,记录一次登陆次数(通过操作文件实现)

log.txt文件内容格式如下:

allen;123;1\n
yyh;456;2

 file_obj = file('log.txt','r+')
 line_list = file_obj.readlines

 my_list = []
 #my_list = ['allen;123;1','yyh';123;2]
 for ele in line_list:
    #"allen;123;1\n"
    line = line.strip()
    #"allen;123;1"
    value_list = lines.split(';')
    #["allen","123","1"]
    last_value = int(values_list[-1])
    #最后一个数,转换成整型
    last_value += 1
    #1 += 1 --> last_value +1
    value_list[-1] = str(last_value)
    #更新后的列表
    #["allen","123","2"]
    value_str = ';'.join(value_list)
    #"allen;123;2
    #"yyh;123;3"
    my_list.append(value_str) 
    #my_list = ["allen;123;2","yyh;123;3"]
 file_obj.seek(0)
 my_str = '\n'.join(my_list)
 file_obj.write(my_str)
 file_dbj.close()

你可能感兴趣的:(初识python)