- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我试图从 think python 解决这个练习:
第 12 章的练习 6:
What is the longest English word, that remains a valid English word, as you remove its letters one at a time?
Now, letters can be removed from either end, or the middle, but you can’t rearrange any of the letters. Every time you drop a letter, you wind up with another English word. If you do that, you’re eventually going to wind up with one letter and that too is going to be an English word—one that’s found in the dictionary. I want to know what’s the longest word and how many letters does it have?
I’m going to give you a little modest example: Sprite. Ok? You start off with sprite, you take a letter off, one from the interior of the word, take the r away, and we’re left with the word spite, then we take the e off the end, we’re left with spit, we take the s off, we’re left with pit, it, and I.
Write a program to find all words that can be reduced in this way, and then find the longest one.
我开始编写一些函数,但我卡在了 check_dict 函数上:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def word_list(textfile='words.txt'):
res = {}
for word in open(textfile):
word = word.strip()
res[word] = word
return res
def children(s, wl):
i = 0
children = []
while i < len(s):
temp = s[:i] + s[i+1:]
if temp in wl:
children.append(temp)
i += 1
return children
def check_dict(s, wl, res = [], called = 0):
if len(s) == 1 and s in wl:
res.append(s)
return res
else:
for child in children(s, wl):
#print(res,'call number ', str(called), 'with s = ', s, 'whose children are: ', children(s, wl))
res.append(child)
check_dict(child, wl, res, called+1)
wl = word_list()
print(check_dict('at', wl))
我遇到的问题是它返回 None 而不是返回 res 的内容,除非我使用 s = 'a' 或 s = 'i' 的基本情况运行该函数。我知道这个函数遍历每条可能的路径,因此它应该返回几个不同的 res,但我不太明白我怎么能让这个函数只打印一个 res,它从函数的参数一直到被称为满足基本情况条件的 1 个字母长的 s。
我知道这本书上有一个解决方案,但我想知道我做错了什么以及如何修复我的版本。
最佳答案
1 您需要更改 word_list 函数,您的 word_list 函数给出的字典只有一个键和值相同的项目,即文件内容。更改函数以从 input.txt 文件中获取单词列表
2 在 check_dict 函数中,将 return 函数写在 if-else 循环之外,因为 children(s, wl) 函数返回空列表。
def word_list(textfile='input.txt'):
return open(textfile).read().strip().split(" ")
def children(s, wl):
i = 0
children = []
s_len = len(s)
while i < len(s):
temp = s[:i] + s[i+1:]
if temp in wl:
children.append(temp)
i += 1
return children
def check_dict(s, wl, res = [], called = 0):
if len(s) == 1 and s in wl:
res.append(s)
else:
for child in children(s, wl):
#print(res,'call number ', str(called), 'with s = ', s, 'whose children are: ', children(s, wl))
res.append(child)
check_dict(child, wl, res, called+1)
return res
wl = word_list()
a = check_dict('sprite', wl)
关于python - 想想 Python : Chapter 12 Exercise 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641152/
我对视频世界很陌生,但注意到社交媒体服务.. 特别是 snapchat 和 instagram 在让视频快速加载方面做得很好,即使在连接较差的情况下也是如此。我知道其中一些是视频的转码方式。 我收集了
是否有任何服务可以解析网站并就该网站对搜索引擎的友好程度提供某种反馈?甚至可能建议更改标记以改进索引? 想想 W3C 验证服务。 最佳答案 尝试 Google Webmaster Tools .添加网
我对编码和编程的一切都是陌生的,我现在正在阅读 Think Python 这本书。现在我必须让 tkinter 工作,所以我可以导入模块 TurtleWorld。首先,我尝试导入 tkinter 只是
2013 年桌面应用程序指标收集有哪些选项? 我知道 Usermetrix 和 Deskmetrix,但它们肯定不是唯一的吗?如果你看看移动分析服务,市场似乎更加发达。 具体来说,我正在寻找使用情况分
例如,给定 https://developer.gnome.org/glib/stable/glib-Basic-Types.html 处的定义: gint8 typedef signed char
所以我试图从 think python 解决这个练习: 第 12 章的练习 6: What is the longest English word, that remains a valid Engl
我想知道 C 或 C++ 是否有更简单或更强大的语法。我已经遇到了SPECS .这是 C++ 的另一种语法。但是还有其他的吗?C 呢? 它也可以是一种代码生成器,以便可以不那么冗长地定义仿函数之类的东
所以我有一个由 API 和 Windows 服务(由 Topshelf 包装)组成的应用程序,它使用 RabbitMQ 持续监听事件并按需处理数据。 为了教育和娱乐,我试图将其重写为可在 .NET C
http://www.projectfitfamilies.org/recipes.php?page=treats 它只在 IE8 怪癖模式下工作,标准模式不做任何事情。我没有 IE6 或 7 可以直
许多站点都通过站点(而不是通过电子邮件)进行通信。示例: LinkedIn:点击屏幕顶部的“收件箱”。 Facebook:点击左侧边栏中的“消息”。 是否有提供此类功能的 gem?谷歌搜索并没有出现太
我有传入的消息,需要尝试在我自己的对象结构中进行解析。其中有些是格式良好的 JSON 对象,有些只是无稽之谈。 我使用 JsonConvert.DeserializeObject(incmoingSt
我是一名优秀的程序员,十分优秀!