初学Python做的的几道练习题

1. 自定义词库,编写敏感词屏蔽函数

key = ('我是','你')
text = '哈喽!我是你的优乐美!'
# 1.使用Python正则表达式的re的sub()函数;
# 2.在正则表达式语法中,竖线“|”表示二选一或多选一。
import re
def check(key,text):
    return re.sub('|'.join(key), '*',text)
print(check(key,text))

# 使用replace方法
# 遍历敏感词key
for word in key:
    # 判断是否有敏感词
    if word in text :
        # 记录敏感词长度
        length = len(word)
        text = text.replace(word,'*'*length)
print(text)

2. 运用正则表达式,判断邮箱地址是否合法,并提取用户名及域名

"""
    ^表示行的开头       $表示行的结束
    +表示至少一个字符   *表示任意个字符(包括0个)
    [0-9a-zA-Z\_]{n, }匹配至少n个及以上 ,至少一个由一个数字或者一个字母或者下划线组成的字符串
"""
import re
string = input()
if re.match(r'^[0-9a-zA-Z\_\-]+(\.[0-9a-zA-Z\_\-]+)*@[0-9a-zA-Z]+(\.[0-9a-zA-Z]+){1,}$', string):
    print('合法')
    # [\w\.-]+ 匹配一个或多个字符串,点或破折号,后面跟着 @ 符号,接着是另一个类似的单词,然后是一个点和另一个单词。
    tiqu = r'([\w\.-]+)@([\w\.-]+)(\.[\w\.]+)'
    match = re.search(tiqu, string)
    print('用户名:',match.group(1))
    print('域名:', match.group(3))
else:
    print('非法')

3. 运用递归函数的方法打印汉诺塔的移动过程

# n表示3个柱子A、B、C中第1个柱子A的盘子数量
def move(n,a,b,c):
	if n==1:
		return print(a, "->", c)
	else:
		move(n-1,a,c,b)
		print(a,'-->',c)
		move(n-1,b,a,c)
print(move(5,'x','y','z'))

4.打印指定范围内所有质数

low = int(input("输入区间最小值: "))
high = int(input("输入区间最大值: "))
for num in range(low, high + 1):
    # 素数大于 1
    if num > 1:
        for i in range(2, num):
            if (num % i) == 0:
                break
        else:
            print(num)

5.使用递归函数的方法打印斐波那契数列

def fin(n):
  if n==0 or n==1:
    return 1
  else:
    return fin(n-1) + fin(n-2)
print (fin(int(input("输入计算项:"))))

6. 批量修改文件名

读取示例数据configure.txt文件,修改file1 file2两列对应的文件名。(首先按照文件格式创建configure.txt文件,生成示例文件file1、file2, 最后重命名)

如 ./FQ_data/sample1_XXXX_R1.fastq 重命名为./FQ_data/sample1_R1.fastq

  ./FQ_data/sample1_XXXX_R2.fastq 重命名为./FQ_data/sample1_R2.fastq

# 1、创建文件并写入数据
def text_create(name, msg):
    path = 'F:/'
    full_path = path + name + '.txt'
    file = open(full_path,'w')
    file.write(msg)
text_create('configure','[sample]\n#group       sample                 file1                                 file2\ngroup_1      sample1     ./FQ_data/sample1_XXXX_R1.fastq     ./FQ_data/sample1_XXXX_R2.fastq\ngroup_1      sample1     ./FQ_data/sample2_XXXX_R1.fastq     ./FQ_data/sample2_XXXX_R2.fastq\ngroup_2      sample2     ./FQ_data/sample3_XXXX_R1.fastq     ./FQ_data/sample3_XXXX_R2.fastq\ngroup_2      sample2     ./FQ_data/sample4_XXXX_R1.fastq     ./FQ_data/sample4_XXXX_R2.fastq\n[compare]\ngroup_1 group_2')
fh  = open('/configure.txt','r+')
str = fh.read()
print(str)

"""
 2、修改文件内容函数
 :param fh:文件名
 :param old_str:就字符串
 :param new_str:新字符串
 """
def xiugai(fh,old_str,new_str):
    file_data = ""
    with open(fh, "r") as f:
        for line in f:
            if old_str in line:
                line = line.replace(old_str,new_str)
            file_data += line
    with open(fh,"w") as f:
        f.write(file_data)
xiugai('/configure.txt','XXXX_','')

7.操作文件名输出指定格式的字符串

创建文件夹,批量生成任意子文件夹,在文件夹中创建.genes.results结尾的文件,将文件路径加到任意字符串最后,并以空格分割。

import os
os.mkdir('file')
filePath='abundance_estimates_to_matrix.pl --est_method --est_method  RSEM  --out_prefix '
for i in range(0,6):
    path='file/'+str(i)
    os.mkdir(path)
    f=open(path+'/RSEM.genes.results','w')
    f.close()
    filePath=filePath+'    '+path+'/RSEM.genes.results'
print(filePath)

你可能感兴趣的:(python)