作为一个尝试理解生成器函数的练习,我试图编写一个模拟长除法并一次返回一个数字的函数。我已经编写了这个函数,但它似乎不起作用。但是,如果我在shell中一行一行地遍历它,它确实会做我想它做的事情,所以我不确定下一步该做什么。我在网上通读了关于生成器函数的帖子:
据我所知,我只是将return语句替换为yield语句。不是这样吗?有谁能告诉我我做错了什么?感谢任何帮助。在def decimals(number):
"""
Takes a numnber and generates the digits of 1/n.
"""
divisor = number
dividend = 1
while dividend % divisor != 0:
#Floor division is the // operator
quotient = divisor // dividend
remainder = dividend % divisor
temp = quotient * divisor
if remainder != 0 :
temp = quotient * divisor
if temp > dividend:
dividend = dividend * 10
dividend = dividend - temp
else:
dividend = dividend - temp
yield quotient
def main():
gen = decimals(4)
print(next(gen))
if __name__ == "__main__":
main()