Python 如何通过用户输入控制循环的数量?
我的问题是:如何定义用户可以输入的输入代码,例如3、5、6或任何数字,以获得3个字母、5个字母等的输出(根据用户输入) 此代码的输出为:Python 如何通过用户输入控制循环的数量?,python,for-loop,input,Python,For Loop,Input,我的问题是:如何定义用户可以输入的输入代码,例如3、5、6或任何数字,以获得3个字母、5个字母等的输出(根据用户输入) 此代码的输出为: TC:2, CG:2, 时间:3,, GC:1, CA:1, GA:1, 代码: 如果用户输入3,该代码将更改如下: 编号3的输出为: ATC : 2, CAT : 1, CGA : 1, CGC : 1, GAT : 1, GCA : 1, TCG : 2, 所以,我的问题是: 如何通过用户输入控制或向代码中添加新循环? 例如,如果用户输入4,程序将
TC:2,
CG:2,
时间:3,,
GC:1,
CA:1,
GA:1,
代码:
如果用户输入3,该代码将更改如下:编号3的输出为:
ATC : 2,
CAT : 1,
CGA : 1,
CGC : 1,
GAT : 1,
GCA : 1,
TCG : 2,
所以,我的问题是:如何通过用户输入控制或向代码中添加新循环?
例如,如果用户输入4,程序将自动添加一个新循环,方法是使用以下输出将字母拆分为4:
ATCG : 2,
CATC : 1,
CGAT : 1,
CGCA : 1,
GCAT : 1,
TCGA : 1,
TCGC : 1,
我认为您可以将最内部循环的逻辑放入一个函数中,然后根据输入调用该函数。或者,您可以尝试用递归解决相同的问题,其中用户输入将定义递归深度。初始化全局变量depth并将其设置为0。在函数的第一行,用1增加深度,每次调用函数时,它的值都会增加。在基本情况下,为深度变量和输入变量设置一个相等的条件,一旦深度变量==输入变量,递归将停止。因为您试图在用户输入n的时候获得给定列表n的所有排列,而不是使用for循环try permutation函数。置换函数给出了一个元组列表,其中包含每次n个置换
from itertools import permutations
n=int(input(“enter the value of n”))
dna = "ATCGCATCGAT"
bases = ['A', 'C', 'G', 'T']
perm = permutations(bases, n)
all_counts = {}
for i in list(perm):
dinucleotide= ''.join(i)
count = dna.count(dinucleotide)
if count > 0:
all_counts[dinucleotide] =count
for key, value in all_counts.items():
print(key, ':', value)
像这样的
dna = "ATCGCATCGAT"
#print(dna)
sub_len = int(input('enter len: '))
combis = set()
for pos in range(len(dna) - sub_len + 1):
sub_str = dna[pos:pos + sub_len]
combis.add(sub_str)
for combi in combis:
print(combi, dna.count(combi))
print(combis)
输出:
enter len: 4
TCGC 1
CATC 1
TCGA 1
ATCG 2
GCAT 1
CGCA 1
CGAT 1
{'TCGC', 'CATC', 'TCGA', 'ATCG', 'GCAT', 'CGCA', 'CGAT'}
您好,您是否尝试了
if
语句?在我写答案之前,我想如果是你想要的。是吗?嗨,事实上,我需要为这段代码定义一个输入,我需要与用户交互。你想计算(ny)子字符串与len n的出现次数吗,其中n是由用户输入的?是的,事实上,根据输入数字,形成了多少个字母组合。输出应该与示例类似。
dna = "ATCGCATCGAT"
#print(dna)
sub_len = int(input('enter len: '))
combis = set()
for pos in range(len(dna) - sub_len + 1):
sub_str = dna[pos:pos + sub_len]
combis.add(sub_str)
for combi in combis:
print(combi, dna.count(combi))
print(combis)
enter len: 4
TCGC 1
CATC 1
TCGA 1
ATCG 2
GCAT 1
CGCA 1
CGAT 1
{'TCGC', 'CATC', 'TCGA', 'ATCG', 'GCAT', 'CGCA', 'CGAT'}