2011-04-29 50 views
2

所以我不得不写一个程序,要求用户输入(应该是3个字母的字符串),并输出字符串内字母位置变化的六个排列组合。然而,我的教授希望输出被大括号包围,而我的名单是一个列表(所以它是方括号)。我该如何解决?另外,如何检查输入中的字母是否重复,以便主程序不断询问用户输入输入并检查错误?关于python程序的建议

谢谢

回答

1

OK,一两件事,因为大家在这里说,打印“{”。除此之外,你可以使用下面的代码在你的脚本来检查重复的单词,

letterlist = [] 

def takeInput(string): 
    for x in string: 
     if x not in letterlist: 
      letterlist.append(x) 
     else: 
      return 0 
    return 1 

然后为您的要求输入和检查错误,你可以做到这一点,

while(True): #or any other condition 
    string = input("Enter 3 letter string") 
    if len(string)!=3: 
     print("String size inadequate") 
     continue 
    if takeInput(string): 
     arraylist = permutation(string) #--call permutation method here 
     #then iterate the permutations and print them in {} 
     for x in arraylist: print("{" + x + "}") 
    else: 
     print("At least one of the letters already used") 
0

大括号是指dict

我觉得

list(set(the_input)) 

应该给你一个独特的字母列表。要检查,如果他们发生不止一次 和

theinput.count(one_letter) > 1 

应该告诉你,如果有比铁道部一个。

1

这两个问题的答案都是使用循环。

打印“{”,然后遍历所有打印它们的元素。

但循环内的输入并保持循环,直到你得到你想要的。

2

im知道'本机'输出与{ }唯一的数据类型是一个字典,这似乎并不适用于此。我只想写一个小功能,输出你列出了所希望的方式

>>> def curlyBracketOutput(l): 
     x = '' 
     for i in l: x += i 
     return '{' + x + '}' 

>>> curlyBracketOutput(['a','b','c']) 
'{abc}' 
0
>>> chars = ['a','b','c'] 
>>> def Output(chars): 
...  return "{%s}" % ''.join(chars) 
... 
>>> print Output(chars) 
{abc} 
>>> 
0

或者只是做一件非常棒的事:

print repr(YourExistingOutput).replace("[", "{").replace("]", "}")