Я не нашел ответа на это. Извините, если это распространено. Я вроде новичок.
Я создаю для таких циклов (чтобы создать скрипт словаря):
for i1 in range(len(n)):
for i2 in range(len(n)):
for i3 in range(len(n)):
for i4 in range(len(n)):
for i5 in range(len(n)):
for i6 in range(len(n)):
word = n[i1] + n[i2] + n[i3] + n[i4] + n[i5] + n[i6]
И я хотел бы создать рекурсивную версию, в которой я мог бы выбрать количество циклов. Так что, если я скажу больше, это будет достаточно.
И мне понадобятся переменные-указатели позже (для создания этого слова), поэтому я подумал об использовании динамических переменных [хотя я не знаю, возможно ли это]
n = len(string)
def loop(n): #'n' is a string and the length would be the number of recursions
if n > 0:
var1 [defining my dynam. var]
for var1 in range(len(string)):
loop(n-1)
else:
return word() #I guess I know how to code this one
Итак ... Я хочу, чтобы переменные типа var1, var2, var3 и т. Д. Были добавлены в мой файл for.
Любая помощь / направления приветствуются!
Заранее спасибо!
Edit:
Извините за беспокойство, пытаясь понять это.
Хорошо, я не уверен, должен ли я сделать это (я должен стереть вышеупомянутое?). Мне удалось создать итеративную версию того, что я хочу: ввести строку и напечатать список всех возможных комбинаций с этими символами.
С помощью следующей функции я получил желаемый вывод, но он ограничен 6 символами. Я предполагаю, что с рекурсивной версией он сможет получить любой ввод и создать столько циклов, сколько потребуется. [Лучше объяснишь сейчас?]
Мой настоящий сценарий выглядит следующим образом (я знаю, что есть более эффективные способы выполнения фильтра / проверок):
def rec():
word = ""
txtfile = open(arq,'w') #arq is the string input + .txt
s=0 #Counts the number of words writen
t=0 #tests if the word exists
for i1 in range(len(n)):
for i2 in range(len(n)):
for i3 in range(len(n)):
for i4 in range(len(n)):
for i5 in range(len(n)):
for i6 in range(len(n)):
#This is a filter for not repeating the same character in a word
if not (i1 == i2 or i1 == i3 or i1 == i4 or i1 == i5 or i1 == i6 \
or i2 == i3 or i2 ==i4 or i2 == i5 or i2 ==i6 \
or i3 == i4 or i3 == i5 or i3 == i6 \
or i4 == i5 or i4 == i6 \
or i5 == i6 ):
word = n[i1] + n[i2] + n[i3] + n[i4] + n[i5] + n[i6]
txtfile.close()
data_file = open(arq)
#This one search for the word in the file, for not having duplicates
for line in data_file:
if line == word + "\n" :
t = 1
else:
pass
data_file.close()
if not t == 1:
s+=1
txtfile = open(arq,'a')
txtfile.writelines(word + "\n")
t=0
print ("Number of words writen:",s)
Мой вывод для "eeeeee" - это просто одна строка, просто в качестве примера.
И первые для значков это:
бейджи
badgse
badegs
badesg
badsge
badseg
bagdes
bagdse
bageds
bagesd
bagsde
bagsed
baedgs
Большое спасибо за отзывы!