Python象形图代码输出含None问题及格式优化咨询
Python象形图输出出现
None的原因及修复方案 你写的这段生成象形图的Python代码,运行后不仅输出顺序混乱,还出现了莫名其妙的None,咱们来一步步拆解问题和解决办法。
为啥会出现None?
- 你的
J()、C()、Z()三个函数里只有print语句,没有明确写return语句。在Python里,任何没有指定返回值的函数,默认都会返回None。 - 当你执行
print("John = ", J(x))时,Python会先执行J(x)(它会直接打印出星号),然后再打印"John = "加上J(x)的返回值None,所以就出现了* * * * * John = None这种奇怪的输出。
两种简单的修复方案
方案一:让函数返回星号字符串,统一拼接输出
其实三个函数的逻辑完全一样,没必要重复写三次,咱们合并成一个可复用的函数,让它返回由星号组成的字符串,然后在主程序里拼接成你想要的格式:
print("Pictograph") def get_stars(count): # 返回指定数量的星号,用空格分隔 return "* " * count x = int(input("Enter John's Number: ")) y = int(input("Enter Chas's Number: ")) z = int(input("Enter Zed's Number: ")) # 用f-string拼接成目标格式,rstrip()去掉末尾多余的空格 print(f"John = {get_stars(x).rstrip()}") print(f"Chas = {get_stars(y).rstrip()}") print(f"Zed = {get_stars(z).rstrip()}")
方案二:直接在函数里打印完整行
如果不想调整函数的职责,也可以让函数直接负责打印完整的一行内容,主程序只需要传入名字和数字就行:
print("Pictograph") def print_pictograph(name, count): stars = "* " * count print(f"{name} = {stars.rstrip()}") x = int(input("Enter John's Number: ")) y = int(input("Enter Chas's Number: ")) z = int(input("Enter Zed's Number: ")) print_pictograph("John", x) print_pictograph("Chas", y) print_pictograph("Zed", z)
修复后的预期输出
输入5、4、3的话,输出会变成你想要的样子:
Pictograph
Enter John's Number: 5
Enter Chas's Number: 4
Enter Zed's Number: 3
John = * * * * *
Chas = * * * *
Zed = * * *
内容的提问来源于stack exchange,提问作者Qwerty
相关产品推荐
相关产品推荐

