python - 返回超过最小长度的单词数,并用单词 + 空格替换不是的单词

标签 python list testing replace counter

对于长度小于 min_length 的任何名称,将列表中的该项替换为包含原始名称的新字符串,并在右侧添加空格以达到最小长度
example: min_length = 5///'dog' after the change = 'dog'
并返回列表中最初超过 min_length 的名称数量

def pad_names(list_of_names, min_length):  
    '''(list of str, int) -> int  
    Return the number of names that are longer than the minimum length.  
    >>> pad_names(list_of_names, 5)  
        2  
    '''  
    new_list = []  
    counter = 0  
    for word in list_of_names:      
        if len(word) > min_length:  
            counter = counter + 1  

    for word in list_of_names:  
        if len(word) < min_length:  
            new_list.append(word.ljust(min_length))  
        else:  
            new_list.append(word)  
     return(counter)  

我目前在这个函数上遇到 5 个错误:

所有的错误都是#incorrect return value

test_02:pad_names_one_name_much_padding_changes_list
原因:对于 1 个名称需要填充的情况,列表未正确更改

test_04:pad_names_one_name_needs_one_pad_changes_list
原因:一个名字需要一个pad更改列表

test_10:pad_names_all_padded_by_3_changes_list
原因:全部由 3 个更改列表填充

test_12:pad_names_all_padded_different_amounts_changes_list
Cause: all padded different amounts changes 列表

test_20:pad_names_one_empty_name_list_changed
原因:一个空的名单被改变了

这个功能不需要高效,只需要通过那些测试而不产生更多问题

最佳答案

根据您的编写方式,我猜您想修改名称列表以便检查结果(以及返回计数)...

def test(names, minlen):
    counter = 0
    for idx, name in enumerate(names):
        newname = name.ljust(minlen)
        if newname != name:
            names[idx] = newname 
        else:
            counter += 1
    return counter

关于python - 返回超过最小长度的单词数,并用单词 + 空格替换不是的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266493/

相关文章:

python - 如何用 Pandas 读取json文件?

python - 如何简化通过索引搜索列表项的过程?

javascript - 如何在 Jest 中模拟/监视 useState 钩子(Hook)?

python - Pytest 断言错误问题

python - 导入 cx_Oracle 模块时出错 [Python]

python - 将合成的文本转语音记录到 Python 文件中

java - 按特定值对对象列表进行排序

c++ - 在 TDD 中,我应该为一个方法编写多少测试?

html - HTML 标记中测试自动化的测试 ID?

python - SQLAlchemy 多对多 Postgresql 双重删除