Test_anagram 函数
Test_anagram function
我想定义一个名为 test_anagram 的函数,它不带任何参数。
它应该调用以前的函数 'anagram' 并测试它是否正常工作。
该函数需要在每对单词下面用 true/false 打印出它是否通过。 (到目前为止,我已经将其中一个变位词显示为 false 以进行测试。
我的代码:
# -*- coding: utf-8 -*-
def anagram(str1,str2):
# string to list
str1 = list(str1.lower())
str2 = list(str2.lower())
#sort list
str1.sort()
str2.sort()
#join list back to string
str1 = ''.join(str1)
str2 = ''.join(str2)
return str1 == str2
print(anagram('trainer', 'terrain')) #true
print(anagram('trainer', 'shoe')) #false
(这个下半部分是我遇到的问题)。
def test_anagram():
strings = [("plane","panel"),("traps","parts"),("state","man"), ("nails","snail"),("reset","trees"),("later","alert")] strings
for str1,str2 in strings:
print(str1,str2) # print each string
anagram(str1,str2)
test_anagram()
print(anagram('plane', 'panel'))
print(anagram('traps', 'parts'))
print(anagram('state', 'man'))
print(anagram('nails', 'snail'))
print(anagram('later', 'alert'))
目前它像这样打印到终端:
plane panel
traps parts
state man
nails snails
reset trees
later alert
True
True
False
True
True
我希望它像这样打印的地方:
plane panel
True
traps parts
True
state man
False
nails snails
True
reset trees
True
later alert
True
我不确定该怎么做,所以非常感谢您的帮助,
谢谢。
缩进是关键。
def test_anagram():
strings = [("plane","panel"),("traps","parts"),("state","man"), ("nails","snail"),("reset","trees"),("later","alert")] strings
for str1,str2 in strings:
print(str1,str2) # print each string
print(anagram(str1,str2))
以下答案假定缩进是正确的(我回答时不是)
好吧,您的 anagram
函数不打印任何内容。它只是 returns True
或 False
,对吗?所以你这样做:
test_anagram()
print(anagram('plane', 'panel'))
print(anagram('traps', 'parts'))
print(anagram('state', 'man'))
print(anagram('nails', 'snail'))
print(anagram('later', 'alert'))
您正在调用仅打印字符串的 test_anagram
函数,然后调用 anagram
,但 test_anagram
不会对该调用返回的值执行任何操作anagram
函数(它只是调用它)。之后,您手动执行 print(anagram('plane', 'panel'))
,这就是为什么您会看到 True
、False
...
如果您的函数 test_anagram
进行了打印,则您不需要手动打印所有对 anagram
的调用:
def test_anagram():
strings = [("plane","panel"),
("traps","parts"),
("state","man"),
("nails","snail"),
("reset","trees"),
("later","alert")]
for str1,str2 in strings:
print(str1,str2) # print each string (as you're alredy doing)
print(anagram(str1,str2)) # Print whether is an anagram or not
而不是
for str1,str2 in strings:
print(str1,str2) # print each string
anagram(str1,str2)
使用
for str1,str2 in strings: # OK - no change
print(str1,str2) # print each string # added indentation
print(anagram(str1,str2)) # added indentation + print()
(并删除行 test_anagram()
之后所有现在已经多余的行。)
正在格式化
经初步检查,您似乎忘记了关闭列表中的括号,但列表的其余部分实际上就在右边大约 60 个空格处。这有点不可取,但不是什么大问题。然而,问题在于您的变量 "strings" 位于行尾,在您的列表之后。如果代码是 运行,那应该被删除。此外,如果您的行超过 90 个字符左右,您应该使用“\”,如下所示。
缩进(毕竟这是 Python)
其次,Nf4r 没有错,你的缩进有点偏离,但即使那样也不能解决你的问题,因为你需要打印你的 anagram 函数的结果(Nf4r 可以,但不能' t say)在你打印每个字符串的下面。
打印
打印很棒,但是您在此处添加了太多打印语句,无法获得您想要的结果。函数调用后的 5 条 print 语句是多余的。以下将按照您希望的方式工作:
def test_anagram():
strings = [("plane","panel"),("traps","parts"),("state","man"), \
("nails","snail"),("reset","trees"),("later","alert")]
for str1,str2 in strings:
print(str1,str2) # print each string
print(anagram(str1,str2))
test_anagram()
我想定义一个名为 test_anagram 的函数,它不带任何参数。 它应该调用以前的函数 'anagram' 并测试它是否正常工作。 该函数需要在每对单词下面用 true/false 打印出它是否通过。 (到目前为止,我已经将其中一个变位词显示为 false 以进行测试。
我的代码:
# -*- coding: utf-8 -*-
def anagram(str1,str2):
# string to list
str1 = list(str1.lower())
str2 = list(str2.lower())
#sort list
str1.sort()
str2.sort()
#join list back to string
str1 = ''.join(str1)
str2 = ''.join(str2)
return str1 == str2
print(anagram('trainer', 'terrain')) #true
print(anagram('trainer', 'shoe')) #false
(这个下半部分是我遇到的问题)。
def test_anagram():
strings = [("plane","panel"),("traps","parts"),("state","man"), ("nails","snail"),("reset","trees"),("later","alert")] strings
for str1,str2 in strings:
print(str1,str2) # print each string
anagram(str1,str2)
test_anagram()
print(anagram('plane', 'panel'))
print(anagram('traps', 'parts'))
print(anagram('state', 'man'))
print(anagram('nails', 'snail'))
print(anagram('later', 'alert'))
目前它像这样打印到终端:
plane panel
traps parts
state man
nails snails
reset trees
later alert
True
True
False
True
True
我希望它像这样打印的地方:
plane panel
True
traps parts
True
state man
False
nails snails
True
reset trees
True
later alert
True
我不确定该怎么做,所以非常感谢您的帮助, 谢谢。
缩进是关键。
def test_anagram():
strings = [("plane","panel"),("traps","parts"),("state","man"), ("nails","snail"),("reset","trees"),("later","alert")] strings
for str1,str2 in strings:
print(str1,str2) # print each string
print(anagram(str1,str2))
以下答案假定缩进是正确的(我回答时不是)
好吧,您的 anagram
函数不打印任何内容。它只是 returns True
或 False
,对吗?所以你这样做:
test_anagram()
print(anagram('plane', 'panel'))
print(anagram('traps', 'parts'))
print(anagram('state', 'man'))
print(anagram('nails', 'snail'))
print(anagram('later', 'alert'))
您正在调用仅打印字符串的 test_anagram
函数,然后调用 anagram
,但 test_anagram
不会对该调用返回的值执行任何操作anagram
函数(它只是调用它)。之后,您手动执行 print(anagram('plane', 'panel'))
,这就是为什么您会看到 True
、False
...
如果您的函数 test_anagram
进行了打印,则您不需要手动打印所有对 anagram
的调用:
def test_anagram():
strings = [("plane","panel"),
("traps","parts"),
("state","man"),
("nails","snail"),
("reset","trees"),
("later","alert")]
for str1,str2 in strings:
print(str1,str2) # print each string (as you're alredy doing)
print(anagram(str1,str2)) # Print whether is an anagram or not
而不是
for str1,str2 in strings:
print(str1,str2) # print each string
anagram(str1,str2)
使用
for str1,str2 in strings: # OK - no change
print(str1,str2) # print each string # added indentation
print(anagram(str1,str2)) # added indentation + print()
(并删除行 test_anagram()
之后所有现在已经多余的行。)
正在格式化
经初步检查,您似乎忘记了关闭列表中的括号,但列表的其余部分实际上就在右边大约 60 个空格处。这有点不可取,但不是什么大问题。然而,问题在于您的变量 "strings" 位于行尾,在您的列表之后。如果代码是 运行,那应该被删除。此外,如果您的行超过 90 个字符左右,您应该使用“\”,如下所示。
缩进(毕竟这是 Python)
其次,Nf4r 没有错,你的缩进有点偏离,但即使那样也不能解决你的问题,因为你需要打印你的 anagram 函数的结果(Nf4r 可以,但不能' t say)在你打印每个字符串的下面。
打印
打印很棒,但是您在此处添加了太多打印语句,无法获得您想要的结果。函数调用后的 5 条 print 语句是多余的。以下将按照您希望的方式工作:
def test_anagram():
strings = [("plane","panel"),("traps","parts"),("state","man"), \
("nails","snail"),("reset","trees"),("later","alert")]
for str1,str2 in strings:
print(str1,str2) # print each string
print(anagram(str1,str2))
test_anagram()