Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数不';与测试结果不符_Python_Unit Testing - Fatal编程技术网

Python 函数不';与测试结果不符

Python 函数不';与测试结果不符,python,unit-testing,Python,Unit Testing,我应该运行文件assign2\u partI\u test\u文件,并得到下面的结果。我就是不能得到正确的结果 我的代码: def to_string(my_list, sep=', '): result = ' ' msg = 'List is: ' for char in my_list: str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g'] if my_list == str_list1:

我应该运行文件
assign2\u partI\u test\u文件
,并得到下面的结果。我就是不能得到正确的结果

我的代码:

def to_string(my_list, sep=', '):

  result = ' '
  msg = 'List is: '
  for char in my_list:

      str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g']

      if my_list == str_list1:

          result = msg + sep.join(my_list)

      return result
我的输出:

Start testing!

length Test

Start Testing!

length Test
List length: 7
List length: 0

to_string Test
List is: r, i, n, g, i, n, g
List is: r-i-n-g-i-n-g
None # (THIS IS SUPPOSED TO DISPLAY: List is: )
测试代码:

import list_function

print("\nStart Testing!")

str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g']
str_list2 = ['r', 'e', 'd']
empty = []

print("\nlength Test")
print("List length:", list_function.length(str_list1))
print("List length:", list_function.length(empty))

print("\nto_string Test")
string = list_function.to_string(str_list1)
print(string)
string = list_function.to_string(str_list1, sep='-')
print(string)
print(list_function.to_string(empty))

print("\nEnd Testing!\n")

我将以评论的形式回答这个问题:

def to_string(my_list, sep=', '):

  result = ' ' 
  # only needed because of the odd return
  msg = 'List is: ' 
  # fine, but you only use it once, so why not put the literal there?
  for char in my_list: 
  # why loop?

      str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g'] 
      # hard-coded the test...

      if my_list == str_list1: 
      # ...so you guarantee it only works for one input - why?!

          result = msg + sep.join(my_list) 
          # this line is useful

      return result 
      # but only inside the for loop?!
您可以将函数缩短为一行(您几乎已经编写了!),这样做的好处是,它将变得毫无意义,并且可以正常工作


下面是一个与函数输出匹配的简化函数:

def to_string(my_list, sep=', '):
    if my_list == ['r', 'i', 'n', 'g', 'i', 'n', 'g']: # test case
        return 'List is: ' + sep.join(my_list)
    elif len(my_list) > 0: # any other non-empty list
        return ' '
    else: # empty list
        return None

这能让事情更清楚吗?这三种情况之间真的应该有这么大(或任何)区别吗?

为什么不在
elif
else
部分编写其他条件?您为一个条件编写了代码,即仅当
my_list==str_list1
时。但在其他情况下会发生什么呢?例如
empty
列表?你可能也想检查一下

def to_string(my_list, sep=', '):
    result = ' '
    msg = 'List is: '
    str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g']
    if my_list == str_list1:
        result = msg + sep.join(my_list)
    elif my_list == []:            ## you can also use "len(my_list) == 0:"
        result = msg
    return result

现在,出现问题的原因是
None#(应该显示:List IS:)
for
循环。
for char in my_List:
仅在
my_List
为非空时运行。但是,当您传递空列表时,
for
循环将不会执行,因为它没有可迭代的内容

您已经得到了有用的测试代码,它清楚地向您显示了问题;如果输入为空列表,则代码不会执行正确的操作。那么你试着做些什么来修复它呢?请注意,您当前的代码只返回
for
循环中
中的任何内容;也许你应该仔细想想。好吧,我试了一天超过一半的时间。这是最接近的,我能达到预期的输出。@Macrick认真地看我的回答,如果你没有意图,就不要回答。真的不谢谢你。@Macrick你在期待什么?这不是一个代码编写服务,我试图强调你的错误。实际上,您已经编写了正确的代码,然后莫名其妙地用一堆毫无逻辑意义的东西将其包围起来。谢谢,我将进一步探索。Cheers@Macrick欢迎如果你认为我的回答对你有帮助,那么别忘了在离开时投票并接受它!:)