我還沒有找到答案。很抱歉,如果它很常見。我有點新手。用於動態指針的遞歸
我創造了這樣的循環(創建一個字典腳本):
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等放在我的。 歡迎任何幫助/指示! 在此先感謝!
編輯: 對不起,試圖瞭解它的麻煩。 好吧,我不知道我是否應該這樣做(我應該抹去上述?)。我設法創建了我想要的迭代版本:輸入一個字符串並打印一個列表,列出所有可能與這些字符組合的列表。
使用以下函數我得到了我想要的輸出,但它被限制爲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
非常感謝您的反饋!
如果你只需要簡單地生成所有可能的字符串時,Python的方式來實現,這將是[這](http://stackoverflow.com/questions/ 7074051 /是否有任何最佳方式生成所有可能的三字母關鍵字)解決方案。 – malloc47 2012-02-17 16:39:19
很難理解你想要做什麼。你能給出一個你想解決的問題的更好的定義嗎? – 2012-02-17 16:40:35
我知道你想要一個遞歸版本,但我會使用'itertools.combinations_wit_replacement'來代替。標準和更容易/更快:) – 2012-02-17 16:42:58