首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超级变形词解决方案AOK?

超级变形词解决方案AOK?
EN

Stack Overflow用户
提问于 2014-10-25 05:37:48
回答 2查看 3.2K关注 0票数 0

因此,我是Python的新手,我正在尝试创建一个程序来识别“超级变形词”,即具有相同首字母和末尾字母的变形词。我想出了这个方法,它很有效,但我有一种感觉,那就是有一种更干净的方法。有什么想法吗?干杯。

代码语言:javascript
复制
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?')
EN

回答 2

Stack Overflow用户

发布于 2014-10-25 05:47:40

1)不需要临时变量listed。使用元组解包来获得值

2)不需要使用liststr也是一个可迭代的对象。

3)没有必要使用_alpha。只需在表达式中使用sorted(foo)即可。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-10-25 05:52:29

我的一个建议是检查输入是否恰好包含两个单词。如果用户只输入一个单词,您的代码将抛出异常。您可以通过以下方式完成此操作:

代码语言:javascript
复制
words = [] # empty list
while len(words) != 2:
    words = input('Enter two words: ').split()

之后,您可以减少创建的不同变量的数量。如果您创建了一个变量,然后只使用了一次,那么您可能会内联对该变量所做的任何操作:

代码语言:javascript
复制
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?')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26556667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档