社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

来一份Python学习题

生信宝典 • 8 年前 • 1246 次点击  



  1. 3*2**2的输出是多少?(1分)

  2. 8 % 4的输出是多少?(1分)

  3. 32 + '32'的输出是什么?(1分)

  4. 32 > '32'的输出是什么?(1分)

  5. 'Sheng Xin Bao Dian'.find('x')'Sheng Xin Bao Dian'.find('X')的输出分别是?(2分)

  6. 一句话计算'Sheng Xin Bao Dian'字符串中n的数目?(1分)

  7. 写出下面10段程序的输出?(1分/段)

    aList = [1, 2, 3]
    bList = aList
    bList.append(4)
    aList

    aList = [1, 2, 3]
    cList = aList[:]
    cList.append(4)
    aList

    aList = [1,1,2,2,3,5,4,3]
    aSet = set(aList)
    aSet

    [1, 2, 3] * 2

    [i**2 for i in [1,2,3]]

    dict([(i, i**2) for i in range(5)])

    import re
    re.findall("[Ii]mageGP", "www.ehbio.com/ImageGP")

    ' '.join(["Sheng", "Xin", "Bao", "Dian"])

    def sumNumber(a, b):
        return a + b
    sumNumber(2,3)

    def sumNumber(a, b):
        return a + b
    print(sumNumber(2,3))
  8. 写程序以下面列表中每个元素为key,元素出现的次数为value,构建一个字典,并遍历字典按元素的ASCII码顺序输出?(5分)

    aList = ['a', 'b', 'c', 'a', 'd','e', 'A']
  9. 对教案中脑筋急转弯问题的解法进行优化; 问题是:现有100元钱,需要买100个物品,其中铅笔盒单价5元,笔单价3元,橡皮单价0.5元,怎么组合可以把100元花完,同时三种物品的个数和为100,请用编程解决。 (3分)

  10. 写程序用高斯的计算方式计算1+2+3+...+100的加和。(3分)

  11. 指出下面每个程序运行时可能会出现的错误。(1分/段)

    aList = [1,2,3]
    aDict = {}
    aDict[aList] = 1
    b = aDict['a']

    if 1:
    print("Sheng xin bao dian great!")

    32 + '32'

    aList = [1, 2, 3]
    aList.add(4)

    aList = [1, 2, 3]
    ''.join(aList)

    int('a')

    3 / 0
    
    
    
        
    
    for i in range(10)
    print(L)

    'Sheng Xin * 3

    type = 1
  12. Python文件读写函数openmode参数中r, w, a, t, b, x分别是什么意思?(3分)

  13. Python中如何获取当前所在的工作目录? 如何修改工作目录?(3分)

  14. Python中连接多个字符串的方法有哪些?优缺点是什么?(3分)

  15. print("%.2f%%" % (1/3))的输出是什么?(2分)

  16. 描述下语句import pandas as pd做了什么操作?(2分)

  17. 教案中基因ENSEMBLE ID转Gene Symbol程序用pandas实现 (GRCh38.idmap,ensm.id)。(5分)

  18. Jupyter中%%writefile, %%run 宏命令的用途是什么?(2分)

  19. 找出TP53 mRNA序列中的ORF (human_TP53_mRNA.fa)。(5分)

  20. 列出大肠杆菌基因组中限制性内切酶SecI的切割位置 (Ecoli.fa)。(5分)

  21. 计算data/test1.fa中每条序列的GC含量。(5分)

  22. 不使用pandas,写Python脚本处理Pandas教案中的TPM表达矩阵的提取和合并?(ENCFF060LPA.tsv, ENCFF262OBL.tsv, ENCFF289HGQ.tsv,  ENCFF673KYR.tsv) (8分)

  23. 给定FASTA格式的文件(test1.fa 和 test2.fa),写一个程序 cat.py 读入文件,并输出到屏幕 (2分)

  • open(file)

  • for .. in loop

  • print()

  • strip() function

  • 用到的知识点

  • 给定FASTQ格式的文件(test1.fq), 写一个程序 cat.py 读入文件,并输出到屏幕 (2分)

    • 同上

    • 用到的知识点

  • 写程序 splitName.py, 读入test2.fa, 并取原始序列名字第一个空格前的名字为处理后的序列名字,输出到屏幕 (2分)

    • split

    • 字符串的索引

    • 用到的知识点

    • 输出格式为:

      
      
      
          
      >NM_001011874
      gcggcggcgggcgagcgggcgctggagtaggagctg.......
  • 写程序 formatFasta.py, 读入test2.fa,把每条FASTA序列连成一行然后输出 (2分)

    • join

    • strip

    • 用到的知识点

    • 输出格式为:

      >NM_001011874
      gcggcggcgggc......TCCGCTG......GCGTTCACC......CGGGGTCCGGAG
  • 写程序 formatFasta-2.py, 读入test2.fa,把每条FASTA序列分割成80个字母一行的序列 (2分)

    • 字符串切片操作

    • range

    • 用到的知识点

    • 输出格式为

      >NM_001011874
      gcggcggcgc.(60个字母).TCCGCTGACG #(每行80个字母)
      acgtgctacg.(60个字母).GCGTTCACCC
      ACGTACGATG(最后一行可不足80个字母)
  • 写程序 sortFasta.py, 读入test2.fa, 并取原始序列名字第一个空格前的名字为处理后的序列名字,排序后输出 (2分)

    • sort

    • dict

    • aDict[key] = []

    • aDict[key].append(value)

    • 用到的知识点

  • 提取给定名字的序列 (2分)

    • 用到的知识点

    • print >>fh, or fh.write()

    • 取模运算,4 % 2 == 0

    • 写程序 grepFasta.py, 提取fasta.name中名字对应的test2.fa的序列,并输出到屏幕。

    • 写程序 grepFastq.py, 提取fastq.name中名字对应的test1.fq的序列,并输出到文件。

  • 写程序 screenResult.py, 筛选test.expr中foldChange大于2的基因并且padj小于0.05的基,可以输出整行或只输出基因名字。(4分)

    • 逻辑与操作符 and

    • 文件中读取的内容都为字符串,需要用int转换为整数,float转换为浮点数

    • 用到的知识点

  • 写程序 transferMultipleColumToMatrix.py 将文件(multipleColExpr.txt)中基因在多个组织中的表达数据转换为矩阵形式,并绘制热图。(6分)

    • aDict[‘key’] = {}

    • aDict[‘key’][‘key2’] = value

    • if key not in aDict

    • aDict = {‘ENSG00000000003’: {“A-431”: 21.3, “A-549”, 32.5,…},”ENSG00000000003”:{},}

    • 用到的知识点

    • 输入格式(只需要前3列就可以)

      Gene    Sample  Value   Unit    Abundance
      ENSG00000000003 A-431   21.3    FPKM    Medium
      ENSG00000000003 A-549   32.5    FPKM    Medium
      ENSG00000000003 AN3-CA  38.2    FPKM    Medium
      ENSG00000000003 BEWO    31.4    FPKM    Medium
      ENSG00000000003 CACO-2  63.9    FPKM    High
      ENSG00000000005 A-431   0.0     FPKM    Not detected
      ENSG00000000005 A-549   0.0     FPKM    Not detected
      ENSG00000000005 AN3-CA  0.0     FPKM    Not detected
      ENSG00000000005 BEWO    0.0     FPKM    Not detected
      ENSG00000000005 CACO-2  0.0     FPKM    Not detected
    • 输出格式

      Name    A-431    A-549    AN3-CA    BEWO    CACO-2
      ENSG00000000460    25.2    14.2    10.6    24.4    14.2
      ENSG00000000938    0.0    0.0    0.0    0.0    0.0
      ENSG00000001084    19.1    155.1    24.4    12.6    23.5
      ENSG00000000457    2.8    3.4    3.8    5.8    2.9
  • 写程序 reverseComplementary.py计算序列 ACGTACGTACGTCACGTCAGCTAGAC的反向互补序列。(2分)

    • reverse

    • list(seq)

    • 用到的知识点

  • 写程序 collapsemiRNAreads.py转换smRNA-Seq的测序数据。(5分)

    • 输入文件格式(mir.collapse, tab-分割的两列文件,第一列为序列,第二列为序列被测到的次数)

        ID_REF        VALUE
        ACTGCCCTAAGTGCTCCTTCTGGC        2
        ATAAGGTGCATCTAGTGCAGATA        25
        TGAGGTAGTAGTTTGTGCTGTTT        100
        TCCTACGAGTTGCATGGATTC        4
    • 输出文件格式 (mir.collapse.fa, 名字的前3个字母为样品的特异标示,中间的数字表示第几条序列,是序列名字的唯一标示,第三部分是x加每个reads被测到的次数。三部分用下划线连起来作为fasta序列的名字。)

        >ESB_1_x2
        ACTGCCCTAAGTGCTCCTTCTGGC
        >ESB_2_x25
        ATAAGGTGCATCTAGTGCAGATA
        >ESB_3_x100
        TGAGGTAGTAGTTTGTGCTGTTT
        >ESB_4_x4
        TCCTACGAGTTGCATGGATTC
  • 简化的短序列匹配程序 (map.py) 把short.fa中的序列比对到ref.fa, 输出短序列匹配到ref.fa文件中哪些序列的哪些位置。(10分)

    • find

    • 用到的知识点

    • 输出格式 (输出格式为bed格式,第一列为匹配到的染色体,第二列和第三列为匹配到染色体序列的起始终止位置(位置标记以0为起始,代表第一个位置;终止位置不包含在内,第一个例子中所示序列的位置是(199,208](前闭后开,实际是chr1染色体第199-206的序列,0起始). 第4列为短序列自身的序列.)。

    • 附加要求:可以只匹配到给定的模板链,也可以考虑匹配到模板链的互补链。这时第5列可以为短序列的名字,第六列为链的信息,匹配到模板链为’+’,匹配到互补链为’-‘。注意匹配到互补链时起始位置也是从模板链的5’端算起的。

      chr1    199    208    TGGCGTTCA
      chr1    207    216    ACCCCGCTG
      chr2    63    70    AAATTGC
      chr3    0    7    AATAAAT
  • 备注:

    • 每个提到提到的“用到的知识点”为相对于前面的题目新增的知识点,请综合考虑。此外,对于不同的思路并不是所有提到的知识点都会用着,而且也可能会用到未提到的知识点。但是所有知识点都在前面的讲义部分有介绍。

    • 每个程序对于你身边会写的人来说都很简单,因此你一定要克制住,独立去把答案做出,多看错误提示,多比对程序输出结果和预期结果的差异。

    • 学习锻炼“读程序”,即对着文件模拟整个的读入、处理过程来发现可能的逻辑问题。

    • 程序运行没有错误不代表你写的程序完成了你的需求,你要去查验输出结果是不是你想要的。

  • 关于程序调试

    • 在初写程序时,可能会出现各种各样的错误,常见的有缩进不一致,变量名字拼写错误,丢失冒号,文件名未加引号等,这时要根据错误提示查看错误类型是什么,出错的是哪一行来定位错误。当然,有的时候报错的行自身不一定有错,可能是其前面或后面的行出现了错误。

    • 用脑袋运行程序:当程序写作完成后,自己尝试对着数据文件,一行一行的执行程序,来看程序的运行是否与自己想干的活一致,有没有纰漏。

    • 当结果不符合预期时,要学会使用print来查看每步的操作是否正确,比如我读入了字典,我就打印下字典,看看读入的是不是我想要的,是否含有不该存在的字符;或者在每个判断句、函数调入的情况下打印个字符,来跟踪程序的运行轨迹

  • 如果视频https://bioinfo.ke.qq.com或文档中没有答案的或者有错误的,请提交题目和自己的答案到 http://www.ehbio.com/Esx 提问寻求解答。文档中其它的题目也请都自己写几遍。

  • 后台回复python,获取测试数据。

    精品回顾

    画图三字经 生信视频 生信系列教程 心得体会 癌症数据库 

    高通量分析 Linux Python 在线画图

    (错误矫正基金:如果您在阅读过程中发现文字或命令错误,请留言或加小编微信指出,获取红包或累积奖励。希望大家多监督,反馈。适用于所有原创文章。)


    今天看啥 - 高品质阅读平台
    本文地址:http://www.jintiankansha.me/t/VcYYHhYeVB
    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/6896