2013-06-19 148 views
3

這裏嵌套元組的所有組合是在伯克利標誌一個簡短而完整的程序:生成蟒蛇

to choices :menu [:sofar []] 
if emptyp :menu [print :sofar stop] 
foreach first :menu [(choices butfirst :menu sentence :sofar ?)] 
end 

這裏是你如何使用它。您鍵入

choices [[small medium large] 
     [vanilla [ultra chocolate] lychee [rum raisin] ginger] 
     [cone cup]] 

和徽標回覆

small vanilla cone 
    small vanilla cup 
    small ultra chocolate cone 
    small ultra chocolate cup 
    small lychee cone 
    small lychee cup 
    small rum raisin cone 
    small rum raisin cup 
    small ginger cone 
    small ginger cup 
    medium vanilla cone 
    medium vanilla cup 
    medium ultra chocolate cone 
    medium ultra chocolate cup 
    medium lychee cone 
    medium lychee cup 
    medium rum raisin cone 
    medium rum raisin cup 
    medium ginger cone 
    medium ginger cup 
    large vanilla cone 
    large vanilla cup 
    large ultra chocolate cone 
    large ultra chocolate cup 
    large lychee cone 
    large lychee cup 
    large rum raisin cone 
    large rum raisin cup 
    large ginger cone 
    large ginger cup 

來源:http://www.eecs.berkeley.edu/~bh/logo-sample.html

你會怎麼做,在蟒蛇?

+2

@TimPietzcker括號用於「組詞」 - 這大約相當於一個字符串引號的標誌。 –

回答

7

像往常一樣,itertools module提供了一個解決方案:

>>> choices = [["small", "medium", "large"], 
...   ["vanilla", "ultra chocolate", "lychee", "rum raisin", "ginger"], 
...   ["cone", "cup"]] 
>>> from itertools import product 
>>> print("\n".join(" ".join(item) for item in product(*choices))) 
small vanilla cone 
small vanilla cup 
small ultra chocolate cone 
small ultra chocolate cup 
small lychee cone 
small lychee cup 
small rum raisin cone 
small rum raisin cup 
small ginger cone 
small ginger cup 
medium vanilla cone 
<etc...>