python - 如何替换 print 以避免在输出中打印 NONE ?

标签 python

def sortString(string):
    if type(string)==str:
        for i in string:
            if (i>="A" and i<="Z"):
                print(i, end="")
    else:
        return("Not a string!")
print(sortString("ZOMG Hello, CS1301!!"))

输出:

ZOMGHCSNone

我知道我得到 None 因为 print 语句不必在上次迭代中返回任何内容,但我如何跳过它?如果我使用 return 而不是 print,则循环将在第一次迭代时停止。

最佳答案

如果删除返回值的打印输出,则可以将 return("Not a string!") 替换为 print("Not a string!")。另外,要检查类型,请使用 isinstance

def sort_string(string):
    if isinstance(string, str):
        for i in string:
            if "A" <= i <= "Z":  # simplified i>="A" and i<="Z"
                print(i, end="")
    else:
        print("Not a string!")

sort_string("ZOMG Hello, CS1301!!")

输出ZOMGHCS

您还可以从 sortString() 内部删除打印并将值作为字符串返回

def sort_string(string):
    if isinstance(string, str):
        s = ''
        for i in string:
            if "A" <= i <= "Z":
                s += i
        return s
    else:
        return "Not a string!"

print(sort_string("ZOMG Hello, CS1301!!"))

或者使用列表推导式

def sort_string(string):
    if isinstance(string, str):
        return ''.join(i for i in string if "A" <= i <= "Z")

    return "Not a string!"

关于python - 如何替换 print 以避免在输出中打印 NONE ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60092234/

相关文章:

python - 更改编码python时数据从文件中消失

python - Heroku 的 Procfile 无法正常工作 - 使用 Waitress 的 Django

python - 试图理解掩蔽

python - 循环似乎不遵循顺序

python - 将具有匹配索引的数组元素清零

python - pandas 多索引根据第二列选择/删除行

python - 如何将逗号分隔的日期属性列表转换为 MySQL 日期值?

python - 根据 pandas DataFrame 中的列值有条件地替换多列

python - tensorflow 2.0 中的 x.shape 和 tf.shape() 有什么区别?

python - numpy 中的快速标量三重积