我写了一段代码来查找阶乘,我使用了日志记录模块。 在搜索该网站之后,我没有发现相关问题。 这是我的代码
def factorial(n):
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s-%(levelname)s-%(message)s')
logging.debug('Start of program')
logging.debug('start of action (%s)'%(n))
total=1
for i in range(1,n+1):
#print(i)
total *=i
print(total)
logging.debug('i is '+str(i)+' total='+str(total))
logging.debug('End of factorial(%s) '%(n))
return total
def main():
print(factorial(5))
logging.debug('End of program')
if __name__=='__main__':
import logging
main()
总计的输出不是
中的“应该是什么”logging.debug('i is '+str(i)+' total='+str(total))
这是我运行代码后得到的
2018-11-21 09:34:56,213-DEBUG-Start of program
2018-11-21 09:34:56,213-DEBUG-start of action (5)
1
2018-11-21 09:34:56,213-DEBUG-i is 1 total=12
2018-11-21 09:34:56,213-DEBUG-i is 2 total=2
6
2018-11-21 09:34:56,213-DEBUG-i is 3 total=6
24
2018-11-21 09:34:56,213-DEBUG-i is 4 total=24
120
2018-11-21 09:34:56,213-DEBUG-i is 5 total=120
2018-11-21 09:34:56,213-DEBUG-End of factorial(5)
120
2018-11-21 09:34:56,213-DEBUG-End of program
这个问题似乎很长,但是它应该是非常简单的操作。
答案 0 :(得分:0)
这是一个猜测,但看起来您的印刷品中存在种族状况。我实际上以为日志记录需要这种情况,但要检查您可以尝试以下操作: 删除打印语句并运行程序。如果程序正确,请删除调试并返回打印以再次检查。
可能的(显然)竞争条件是,尽管logging.debug尚未完成打印整行,但您的代码现在执行了print语句。那就是为什么你有空行。