自己在练习的时候,写了一段代码如下,请问运行结果中的None是怎么回事?
from random import randint
class Die:
def init(self, sides=6):
self.sides = sides
def roll_die(self):
print(f"面数为{self.sides}的骰子,这次掷的朝上的一面的数字是{randint(1, self.sides)}")
die_10 = Die(10)
for i in range(1, 11):
print(die_10.roll_die())
面数为10的骰子,这次掷的朝上的一面的数字是10
None
面数为10的骰子,这次掷的朝上的一面的数字是9
None
面数为10的骰子,这次掷的朝上的一面的数字是10
None
面数为10的骰子,这次掷的朝上的一面的数字是9
None
面数为10的骰子,这次掷的朝上的一面的数字是9
None
面数为10的骰子,这次掷的朝上的一面的数字是7
None
面数为10的骰子,这次掷的朝上的一面的数字是1
None
面数为10的骰子,这次掷的朝上的一面的数字是10
None
面数为10的骰子,这次掷的朝上的一面的数字是2
None
面数为10的骰子,这次掷的朝上的一面的数字是3
None
用for循环和while循环都有None,只有一个一个打印的时候才没有
用上for循环或者while循环,不要有None。
你的代码两个错误:
from random import randint
class Die(object):
def __init__(self, sides=6):
self.sides = sides
def roll_die(self):
print(f"面数为{self.sides}的骰子,这次掷的朝上的一面的数字是{randint(1, self.sides)}")
die_10 = Die(10)
for i in range(1, 11):
die_10.roll_die()
在最后打印骰子的点数时,直接使用die_10.roll_die()就能打印出骰子的点数了, 如果再用print打印前面那个函数,因为函数没有返回值,所以会打印一个None, 所以去掉这个print即可。修改如下:
from random import randint
class Die:
def __init__(self, sides=6):
self.sides = sides
def roll_die(self):
print(f"面数为{self.sides}的骰子,这次掷的朝上的一面的数字是",randint(1, self.sides))
die_10 = Die(10)
for i in range(1, 11):
die_10.roll_die()
roll_die函数没有返回值,它里面本身就写了打印
你不要再套个print在外面
要么函数里别打印,把值return回来,在外面套print打印也行
总之要么里面打印,要么外面打印,不要两头写打印
for i in range(1, 11):
print(die_10.roll_die())
你这里是输出调用roll_die函数的返回值。
但你roll_die函数下面只有print语句,没有return,所有返回的是None
所有现在。要么删除for语句下面的print
for i in range(1, 11):
die_10.roll_die()
要么,将roll_die函数中的输出改为返回
def roll_die(self):
return f"面数为{self.sides}的骰子,这次掷的朝上的一面的数字是{randint(1, self.sides)}"
因为你def里面没有return,没有这个就有none,加上就没了,用return代替print