【发布时间】:2016-08-18 06:18:44
【问题描述】:
我正在尝试编写将两个字符串作为输入的 python 代码,并检查第二个字符串的所有字符是否都存在于第一个字符串中。如果是这样,那么输出是第二个字符串。如果不是,则输出为字符串“This doesn't work”。我已经针对各种输入测试了此过程,它通常有效,但并非总是如此。例如,如果我的两个输入分别是“helo”和“olhe”,则输出是“This doesn't work”,而它应该是“olhe”,因为“olhe”中的所有字符都出现在“helo”中。
这是我的代码
def fix_machine(debris,product):
n = 1
while True:
first_element = product[0:n]
find_first_element = debris.find(first_element)
if first_element == product:
return product
break
n = n + 1
if find_first_element == -1:
return "This does not work"
break
那么为什么这不起作用呢?
【问题讨论】:
-
在调试器中单步调试并找出答案。
-
您的缩进包含制表符和空格的组合。这在 Python 中是一个非常糟糕的主意。将您的文本编辑器配置为仅使用空格并更正您的代码。
-
product[0:n]依次生成更大的product;它不会产生单个字符。 -
附注:您描述了一个通用函数,然后使用一个非常具体的函数(至少按名称)显示您的代码,称为
fix_machine。我们是否应该得出结论debris和product是两个输入字符串?因为product[0:n]肯定对这个结论没有帮助(我希望first_element是单个字符)。您应该显示一段与您的描述一致的代码,例如,def check_chars(str1,str2)。其次,整个函数看起来像一个非常糟糕的方法来做你描述的事情,可以在一行中实现。 -
第三,如前所述,一步一步调试你的代码。这就是编程背后的全部想法(与“为什么这不起作用?”相反)。
标签: python