带有用户定义函数的 Python 打印

我正在尝试编写一个代码,该代码将从文件中获取数据并以不同的方式编写。我有大部分代码,但是当我运行它时,一切都在一行上。


import csv

#Step 4

def read_data(filename):

    try:

        data = open("dna.txt", "r")

    except IOError:

        print( "File not found")

    return data


#Step 5

def get_dna_stats(dna_string):

    a_letters = ""

    t_letters = ""

    if "A" in dna_string:

        a_letters.append("A")

    if "T" in dna_string:

        t_letters.append("T")

    nucleotide_content = ((len(a_letters) + len(t_letters))/len(dna_string))


#Step 6

def get_dna_complement(dna_string):

    dna_complement = ""

    for i in dna_string:

        if i == "A":

            dna_complement.append("T")

        elif i == "T":

            dna_complement.append("A")

        elif i == "G":

            dna_complement.append("C")

        elif i == "C":

            dna_complement.append("G")

        else:

            break

    return dna_complement


#Step 7

def print_dna(dna_strand):

    dna_complement = get_dna_complement(dna_strand)

    for i in dna_strand:

        for j in dna_complement:

            print( i + "=" + j)



#Step 8

def get_rna_sequence(dna_string):

    rna_complement = ""

    for i in dna_string:

        if i == "A":

            rna_complement.append("U")

        elif i == "T":

            rna_complement.append("A")

        elif i == "G":

            rna_complement.append("C")

        elif i == "C":

            rna_complement.append("G")

        else:

            break

    return rna_complement


#Step 9

def extract_exon(dna_strand, start, end):

    return (f"{dna_strand} between {start} and {end}")


#Step 10

def calculate_exon_pctg(dna_strand, exons):

    exons_length = 0

    for i in exons:

        exons_length += 1

    return exons_length/ len(dna_strand)


#Step 11

def format_data(dna_string):

    x = "dna_strand"[0:62].upper()

    y = "dna_strand"[63:90].lower()

    z = "dna_strand"[91:-1].upper()

    return x+y+z


当我运行它时,它应该输出一个看起来像这样的文件,但我的代码最终将每个单词都像这样放在第一行 我觉得它与write_results函数有关,但这就是我所知道的如何写入文件。


我犯的第二个错误是我没有在 append 语句中正确调用函数。我试过连接,我试过格式化字符串,但现在我在我需要做的事情上遇到了障碍。


拉风的咖菲猫
浏览 157回答 3
3回答

有只小跳蛙

当您写入文件'\n'时,每次您想在写入的文件的新行上添加某些内容时,都需要将 a 连接到字符串的末尾例如:output.append("The AT content is" + get_dna_stats() + "% of the DNA sequence." + '\n')为了解决您的第二个问题,我会将您的代码更改为如下所示:temp = "The AT content is" + get_dna_stats() + "% of the DNA sequence." + '\n'output.append(temp)当您附加到列表并调用函数时,它将采用函数的文字文本而不是调用它。使用临时字符串持有者执行此操作将在连接字符串之前调用该函数。然后您就可以将字符串附加到列表中

子衿沉夜

你从来没有告诉你的程序要换一条新线。您可以在"\n"每个字符串中附加或预先添加特殊字符,也可以通过以下方式以系统不可知的方式进行import os在文件的顶部并像这样编写 write_results 函数:def write_results(output, filename):    try:        with open("output.csv","w") as csvFile:            writer = csv.writer(csvFile)            for i in output:                csvFile.write(i)                os.write(csvFile, os.linesep)  # Add this line! It is a system agnostic newline    except IOError:        print("Error writing file")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python