所以我对Python很陌生,并试图创建一个程序来识别'超级字谜',即具有相同的第一个和最后一个字母的字谜。我想出了这个,它有效,但我有这种感觉,有一个更清洁的方法来做到这一点。有任何想法吗?干杯。
words = input('Enter words: ')
listed = words.split()
first = listed[0]
second = listed[1]
first_split = (list(first))
second_split = (list(second))
if first_split[0]==second_split[0] and first_split[-1]==second_split[-1]:
first_split_alpha = sorted(first_split)
second_split_alpha = sorted(second_split)
if first_split_alpha == second_split_alpha:
print('Super Anagram!')
else: print('Huh?')
else: print('Huh?')
答案 0 :(得分:1)
1)临时变量listed
是不必要的。使用元组解包来获取值
2)不需要使用list
。 str
也是一个可迭代的对象。
3)使用_alpha
是不必要的。只需在表达式中使用sorted(foo)
。
a,b = input('Enter words: ').split()
if sorted(a) == sorted(b) and a[0] == b[0] and a[-1] == b[-1]:
print('Super Anagram!')
else:
print('Huh?')
答案 1 :(得分:0)
我要做的一个建议是检查输入中是否包含两个单词。如果用户只输入一个单词,您的代码将抛出异常。你可以这样做:
words = [] # empty list
while len(words) != 2:
words = input('Enter two words: ').split()
然后,您可以减少您创建的不同变量的数量。如果您创建一个变量然后只使用一次,那么您可能会使用该变量内联您所做的任何事情:
first = words[0]
second = words[1]
if (first[0] == second[0] and
first[-1] == second[-1] and
sorted(first) == sorted(second)):
print('Super Anagram!')
else:
print('Huh?')