【问题标题】:Showing None while printing the output打印输出时显示无
【发布时间】:2018-02-16 12:05:57
【问题描述】:

我编写了以下程序来演示类对象列表。它将名称和分数作为三个对象的输入,然后将其存储到一个列表中,最后程序显示所有信息,即与对象关联的名称和分数。

class Info:

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def display(self):
        print(f"Name :- {self.name}, Score :- {self.score}")


game_info = []
for i in range(3):
    n = input("Enter Your Name :- ")
    s = int(input("Enter Your Score :- "))
    game_info.append(Info(n, s))
    print()

for i in range(3):
    print(game_info[i].display())
    print()

输出:-

Enter Your Name :- a 
Enter Your Score :- 1

Enter Your Name :- b 
Enter Your Score :- 2

Enter Your Name :- c 
Enter Your Score :- 3

Name :- a, Score :- 1 
None

Name :- b, Score :- 2 
None

Name :- c, Score :- 3 
None

每次我尝试打印值时,输出都会显示None。那么我应该怎么做才能从程序输出中删除它呢?

【问题讨论】:

  • print(game_info[i].display()) 更改为 game_info[i].display()display() 方法打印您想要的结果,但没有 return 值,因此返回 None。这意味着print(game_info[i].display()) 然后变成print(None)

标签: python


【解决方案1】:

display 函数不返回任何内容。所以它默认None。 所以,

print(f"Name :- {self.name}, Score :- {self.score}")

打印您的预期输出。但这表明None

print(game_info[i].display())

你可以改变display函数,

return f"Name :- {self.name}, Score :- {self.score}".

【讨论】:

    【解决方案2】:

    在函数中使用返回

    return("Name :- {}, Score :- {}".format(self.name,self.score))
    

    因为game_info[i].display() 打印返回值

    【讨论】:

      【解决方案3】:

      编辑:正如 roganjosh 指出的那样,我的描述不够清楚。在最后一个 for 循环中从 game_info[i].display() 中取出 print() 函数将解决问题。

      class Info:
      
          def __init__(self, name, score):
              self.name = name
              self.score = score
      
          def display(self):
              print(f"Name :- {self.name}, Score :- {self.score}")
      
      
      game_info = []
      for i in range(3):
          n = input("Enter Your Name :- ")
          s = int(input("Enter Your Score :- "))
          game_info.append(Info(n, s))
          print()
      
      for i in range(3):
          game_info[i].display()
          print()
      

      输出:

      Enter Your Name :- Bob
      Enter Your Score :- 1
      
      Enter Your Name :- Jane
      Enter Your Score :- 2
      
      Enter Your Name :- Sally
      Enter Your Score :- 3
      
      Name :- Bob, Score :- 1
      
      Name :- Jane, Score :- 2
      
      Name :- Sally, Score :- 3
      

      【讨论】:

      • 添加了我的输出。可以看到,只需要去掉game_info[i].display()函数周围的print语句就可以得到想要的输出
      • 还有:缩进好像关闭了,请格式化你的答案代码块
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多