坚持在python中分离几个循环

2024-05-19 19:29:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我一直坚持分离多个循环。 第一个循环运行良好。还有第二个。但不是最后两个。当我尝试键入DNA或蛋白质时,它只给出一个答案:重启?是\N

我的代码:

while True:
 A = (input())
 if A == ("Start"):
  print ("What type of the data you want to process?")
  print ("DNA", "RNA", "Protein", sep="\n")
  break
 else:
  print ("Incorrect input")
  continue
  break

while True:
 X = (input())
 if X == ("RNA"):
  print ("What you want to do with RNA?", "RNA to DNA?  RNA to Protein? seqRNA length?", sep="\n?")
  continue
  break
 else:
  print("Restart?", "Y \ N", sep="\n")
  continue
  break

while True:
 Y = (input())
 if Y == ("DNA"):
  print ("What you want to do with DNA?", "DNA to RNA? seqDNA length?", sep="\n")
  continue
  break
 else:
  print("Anything else?", "Yes No", sep="\n")
  continue
  break

while True:
 Z = (input())
 if Z == ("Protein"):
  print ("What you want to do with Protein?", "Protein to RNA? protein Name?", sep="\n")
  continue
  break
 else:
  print("Anything else?", "Yes No", sep="\n")
  continue
  break

我已经尝试删除其中一个周期并尝试运行它,但结果是一样的。我搜索了使用break、while和if的示例,但只找到了一个循环的答案,而不是多个循环的答案。我觉得这很令人失望,因为我想这样做是为了更好地理解python。不仅仅是使用BioPython图书馆。但具有讽刺意味的是,仅仅是转录、反转录、翻译、翻译成RNA或序列长度计算的过程并不是一个大问题。这一切只需要一行代码


Tags: toyoutrueinputifwhatelsesep
3条回答
while True:

    print("What type of the data you want to process?", "RNA? DNA?", sep = "\n")
    A = input("")
    if A == "RNA":
          print("What you want to do with RNA?", "(a1)RNA to Protein? (a2)RNA to DNA? (a3)RNA Length? (a4)RNA Splicing? (a5)RNA nucleotides (a6)ratio? RNAi? ", sep = "\n")
          break

    if A == "DNA":
          print("What you want to do with DNA", "(b1)DNA to RNA? (b2)DNA length? (b3)DNA nucleotides ratio? (b4)Complimentary DNA chain?", sep = "\n")
          break



    else:
         print("Nope") #TF2 references
         continue


while A == "RNA":
    X = input("")
    if X == "a1":
     print("Input RNA")
     import ptranslation #Written by myself module for RNA translation
     RNA_translation = input("")
     print (RNA_translation)
     break
    if X == "a2":
     print("Input RNA")
     RNA_seq = input("")
     DNA_seq  = RNA_seq.replace("U", "T")
     print (DNA_seq)
     break
    if X == "a3":
     print ("Input RNA")
     RNA = input("")
     RNAo = int (len(RNA)//2)
     print(RNAo)
     break
    if X == "a4":
     print ("Input RNA")
     import re
     RNA = input("")
     regex = r"GU(?:\w{0,}?)AG" #regex black magic Uga-Buga, still need to undestand it better
     exons = re.sub(regex, '', RNA)
     print(exons)
     break
    if X == ("a5"):
     print("Input RNA")
     RNAn = input ("")
     X = (RNAn.count("A")) + (RNAn.count("U")) + (RNAn.count("C")) + (RNAn.count ("G"))
     A = (RNAn.count("A")/X)
     U = (RNAn.count("U")/X)
     G = (RNAn.count("G")/X)
     C = (RNAn.count("C")/X)
     print ("A =", A, "U =", U, "G =", G, "C =", C)
     break
    if X == ("a6"):
        print("Input RNA")
        N = input("")
        print(N.translate(str.maketrans({"A": "U", "G": "C", "U": "A", "C": "G"})))
        break
    else:
      print("NOPE! Input correct option!")
      continue
      break

while A == "DNA":
    Y = input("")
    if Y == "b1":
     print ("Input DNA ")
     DNA_seq = input("")
     RNA_seq  = DNA_seq.replace("T", "U")
     print (RNA_seq)
     break
    if Y == ("b2"):
        print("Input DNA")
        DNA = input("")
        DNAo = int (len(DNA)//2)
        print(DNAo)
        break
    if Y == ("b3"):
        print("Input DNA")
        DNAn = input ("")
        X = (DNAn.count("A")) + (DNAn.count("T")) + (DNAn.count("C")) + (DNAn.count ("G"))
        A = (DNAn.count("A")/X)
        T = (DNAn.count("T")/X)
        G = (DNAn.count("G")/X)
        C = (DNAn.count("C")/X)
        print ("A =", A, "T =", T, "G =", G, "C =", C)
        break
    if Y == ("b4"):
        print("Input DNA")
        Nd = input("")
        print(Nd.translate(str.maketrans({"A": "T", "G": "C", "T": "A", "C": "G"})))
        break
    else:
      print("NOPE! Input correct option!")
      continue
      break
#psyhological support in process of  the coding - M.Kashtanov

我已经清理并重新构造了您的代码。这是你想要的吗

while True:

    print("What type of the data you want to process?")
    A = input("DNA, RNA, Protein > ")
    if A == "DNA":
        print("What you want to do with DNA?")
        Y = input("DNA to RNA? seqDNA length? > ")
        # Test and do something with Y

    elif A == "RNA":
        print("What you want to do with RNA?")
        X = input("RNA to DNA?  RNA to Protein? seqRNA length? > ")
        # Test and do something with X

    elif A == "Protein":
        print("What you want to do with Protein?")
        Z = input("Protein to RNA? protein Name? > ")
        # Test and do something with Z

    else:
        print("Incorrect input")
        continue

    # If user wants to restart, stay in the loop, else break.
    if input("Restart? Y \ N > ") == "N":
        break

问题在于,一旦通过了开始条件和rna/dna/蛋白质条件,continue语句就会出现问题

我只测试了RNA,但我在打印后删除了continue语句,它似乎起作用了

你们打算继续在那里工作吗

此外,使用这么多while-true循环并依靠break-and-continue并不是真正的最佳实践idt。我会在最上面使用A作为输入,你的条件可能是“A不在[“RNA”,“DNA”,“蛋白质”]或类似的东西,这样它会不断循环并请求输入,直到通过正确的输入

最后,我会将每个输入转换为大写或小写(以及您的条件检查),这样您就可以避免基于大小写问题的输入错误

相关问题 更多 >