坚持分离 python 中的几个循环
Stuck with separating of the several loops in python
所以,我坚持分离多个循环。
第一个周期工作正常。第二个也是。但不是最后两个。当我尝试键入 DNA 或蛋白质时,它只给出一个答案:重新启动? Y\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或序列长度计算的过程都不是大问题。一行代码全部搞定
我已经稍微清理并重组了您的代码。这是你想要的吗?
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/protein 条件后的 continue 语句。
我只测试了 RNA,但我在打印后删除了 continue 语句,它似乎有效
你继续那里的目的是什么?
此外,使用如此多的 while true 循环并依赖 break 和 continue 并不是真正的最佳实践 idt。我会在最上面做一些像使用 A 作为输入的事情,你的条件可能是 `while A not in ["RNA", "DNA", PROTEIN"] 或类似的东西'将继续循环并要求输入,直到通过正确的输入
最后,我会将每个输入都转换为大写或小写(以及您的条件检查),这样您就可以避免基于大小写问题的输入错误
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
所以,我坚持分离多个循环。 第一个周期工作正常。第二个也是。但不是最后两个。当我尝试键入 DNA 或蛋白质时,它只给出一个答案:重新启动? Y\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或序列长度计算的过程都不是大问题。一行代码全部搞定
我已经稍微清理并重组了您的代码。这是你想要的吗?
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/protein 条件后的 continue 语句。
我只测试了 RNA,但我在打印后删除了 continue 语句,它似乎有效
你继续那里的目的是什么?
此外,使用如此多的 while true 循环并依赖 break 和 continue 并不是真正的最佳实践 idt。我会在最上面做一些像使用 A 作为输入的事情,你的条件可能是 `while A not in ["RNA", "DNA", PROTEIN"] 或类似的东西'将继续循环并要求输入,直到通过正确的输入
最后,我会将每个输入都转换为大写或小写(以及您的条件检查),这样您就可以避免基于大小写问题的输入错误
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