搜索
查看: 2832|回复: 0

[Python] pyhton基础

[复制链接]

64

主题

138

帖子

681

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
681
发表于 2017-7-2 22:19:06 | 显示全部楼层 |阅读模式
#进入解释器
python

#变量赋值
a = 1
a = 'string'
a = [1,3, 'string']
a = {'a':1,'b':2}

x=y=z=1            #多重赋值
x+=1               #增量赋值,等价于x = x+1
(x,y,z)=(1,2,'no') #多元赋值

#数字格式转换和查看

type(2)
type(2.0)
type('2')
type(5-3j)
float(2)
int(2.3333)
str(2)

cmp(1,2)       #比较,前者大返回1,小返回-1,一样大返回0
pow(4,3)       #4的3次幂,64
round(2.3333,2)  #浮点四舍五入,后为保留位数


a = '*novo'+'gene*'
a*3                         #a重复3次
a.split('o')                #去除o并将a分割为列表,返回 ['*n','v','gene*']
a.strip('*')                #去除a两端任意次数的 '*',返回'novogene'
b = 'ATATCGAGCTA'      
b.strip('AT')               #会将开头的两个AT全部去除

a.lstrip()
a.rstrip()
a.replace('o','A',1)  #将最先的一个'o'替换为'A'
a[2]                        #获得下标为2的字符
a[2:6]          #获得下标从ind1到ind2之间的元素集合
a[2:8:2]        #获得下标从ind1到ind2之间,每隔2个元素取一个

a='novogene'
a.upper()           #返回一个全部字符大写的字符串
a.lower()           #返回一个全部字母小写的字符串
a.capitalize()      #把字符串的第一个字符大写
a.center(20,'*')    #返回一个字符串居中,并使用'*'填充至全长度20的新字符串
a.count('o')        #返回'o'在字符串a中出现的次数
a.find('g')         #返回第一次出现'g'的下标,否则返回-1
a.index('g')        #返回第一次出现'g'的下标,否则返回异常
a.isalpha()         #如果a至少有一个字符,并且所有字符都是字母则返回Ture,否则返回False

布尔值
bool(1)   #=> True
bool(0)   #=> False
bool('a') #=> True
bool(' ') #=> True
bool('')  #=> False

列表
l = [2,1,'a']     #定义
len(l)            #获取长度                        
l.sort()          #排序                                 
l.reverse()       #反转                                 
l.append('b')     #从末尾添加新元素         
l.remove('b')     #删除特定元素                 
','.join(l)       #以','连接为字符串,列表内元素的数据类型都为string,否则报错

l = ['novo','gene']
''.join(l)
'-'.join(l)     #用'-'将列表连接成字符串

元组
a = (1,2,3)    #定义                                 
len(a)         #获取长度                           
a[1]           #能通过下标获取值           
a[1:]          #切片操作截取,返回的仍是元组 =>(2,3)

compare="TreatvsCK"
DEGs_num = 100
print compare+' has '+DEGs_num+' DEGs'
print compare+' has '+str(DEGs_num)+' DEGs'
print '%s has %s DEGs' %(compare,DEGs_num)


字典
d = {'a':1,'b':2}        #定义
len(d)                   #获取字典d的长度                     
d['a']                   #获取字典d中'a'对应的值
d['c'] = 3               #新加入键值对到字典d                 
del d['c']               #删除字典d中'c'为键的键值对
'a' in d                 #判断键'a'是否存在于字典d中   
d.keys()                 #获取字典d的键的列表                  
d.values()               #获取字典d的值得列表
for key,value in d.items():   #items()
        print '%s\'s value is %s' %(key,value)
d2 = {'d':4}
d.update(d2)             #将d2键值对添加到d中
d.clear()                #删除字典d中所有元素

集合
a=set([1,2,3,4,5])
a.add(6)       #在集合a中添加对象6
t=[6,7,8]
a.update(t)    #添加可迭代对象t到集合a中
a.remove(1)    #从集合a中删除对象1,如果1不是集合a中的元素,将引发keyError错误
a.pop()        #删除集合a中的最后一个对象,并返回这个对象

#列表去重复
a=[1,2,3,4,5,1,2]
a=list(set(a))

#集合的无序相等
a=['a','b','c']
b=['b','c','a']
a==b              #False
set(a)==set(b)    #True


#控制流
#if语句

a = 2
if a<5:
        a +=1
else:
        print a
       
#布尔值和多重判断
a = False
b = True
if not a and b:
        print 'not a and b is ok'
if a or b:
        print 'a or b is ok'
if not a:
        print 'not a is ok'
if not b:
        print 'not b is ok'
       
#while语句

number = 23
running = True
while running:
        guess = int(raw_input('Enter sth: '))   #获取输入信息
        if guess ==number:
                print 'Congratulation, you guessed it.'
                running = False          #打断循环
        elif guess < number:         #elif  上一判断为非时进行此判断,相当于else:if
                print 'it is a little higher than that'
        else:
                print 'it is a little lower than that'
else:
        print 'The while loop is over'
       
#for 语句

for i in range(1,5):
        print i
else:
        print 'The for loop is over.'
       
#枚举函数 enumerate()
a = [1,2,3,4,5,'a','b']
for i,each in enumerate(a):
        print i

#range()
for i in range(0,4):
        print i
for i in range(0,11,2):
        print i

#zip()函数
a = ['a','b','c']
b = [1,2,3,4,5]
for l,j in zip(a,b):
        print l,j

#break 语句

while True:
        s = raw_input('Enter sth: ')
        if s == 'quit':
                break
        print 'Length of the string is ,',len(s)
#在这个程序中,我们反复地取得用户地输入,然后打印每次输入地长度。我们提供了一个特别的条件来停止程序,即检验用户的输入是否是'quit'。通过 终止 循环到达程序结尾来停止

#continue 语句

while True:
        s = raw_input('Enter sth: ')
        if s == 'quit':
                break
        if len(s) < 3:
                continue
        print 'Input is of sufficient length.'
#在这个程序中,我们从用户处取得输入,但是我们仅仅当它们有至少3个字符长的时候才处理它们。所以,我们使用内建的len函数来取得长度。如果长度小于3,我们将使用continue语句忽略块中的剩余的语句。否则,这个循环中的剩余语句将被执行,我们可以在这里做我们希望的任何处理。

#文件处理

f = open('newfile.txt','w')  #创建file类对象,写入模式
txt = '''Welcome to novogene
Leading Edge Genomic Services & Solutions
mail: service@novogene.com
Tel: 400-966-0802
'''
f.write(txt)
f.close()            #关闭file对象

f = open('newfile.txt','r')  #创建file类对象,只读模式
f.read(size)         #读取到指定位置,size超出文件字符报错,没有或负值时读取全部
f.readline()         #读取一行内容
f.readlines()        #返回每行文字为元素的列表

for eachline in f:
        print eachline   #用for循环迭代读取每行内容

#read后读取的file对象内容会在file对象内删除,即file对象相同位置的内容只能读取一次
f.close()            #关闭file对象

#函数

def hello():
        print 'hello'
       
hello()

def sum(x,y):
        z = x+y
        return z

a = 1
b = 2
c = sum(a,b)
print c

#模块
import math
math.sqrt(4)    #4 的平方根
math.pi         #圆周率

import os
os.getcwd()     #获取当前路径
os.system('mv file newfile')     #执行系统操作命令
os.chdir(path)  #将路径设为path

import sys
sys.path        #python 各文件路径

#传递参数  test.py
import sys
print sys.argv[0]
print sys.argv[1]
print sys.argv[2]

#执行test.py
python test.py 11 novogene

#另一种传递参数模块
# -*- coding:utf-8 -*-
#chuancanmokuai.py
import argparse

parser = argparse.ArgumentParser(description="Annotation")
parser.add_argument('-indir',help='file path',required=True)  #required=True  定义这个参数必须存在否则报错
parser.add_argument('-padj',help=' padj threshold value',default='0.005') #default  这次参数的默认值,没有传入参数则读取这个值

argv = vars(parser.parse_args())
indir = argv['indir'].strip()
padj = float(argv['padj'].strip())

print indir
print padj

#执行
python -indir *** -padj 0.003

#获取文件模块
import glob   
glob.glob(r'./*.py')   #获得当前目录下所有.py文件,r的作用是告诉python后边接的字符串是一个路径
glob.glob(path+'/*')   #获得path目录下所有文件

#自建模块,rc.py  写入文件内
#!/sur/bin/python
def reverse_complement(seq):
    rule={'A':'T','T':'A','G':'C','C':'G','N':'N'}
    return ''.join(rule[each] for each in seq[::-1])
       
#使用rc.py
import rc
a='AGTGTGTAGAGANCGCA'
a_rc=rc.reverse_complement(a)
print a_rc

#自建模块要和调用它的脚本在同一目录下,或放在sys.path结果的任意目录下


##每个数据类型更详细的方法可以在解释器中如下操作
a = ''
dir(a)
#或者直接输入
dir('')
#会返回所有能对这个类型的变量进行的操作,感兴趣的可以一一尝试


感谢鱼




上一篇:hoptop的博客
下一篇:perl第12题,代码全注释(抛砖引玉)--(json文件格式化)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-9-22 08:35 , Processed in 0.035854 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.