If If语句的问题

问题描述:

我从头开始学习Python,因为我没有太多编码背景。在这个特别的练习中,我被赋予了一个文本文件的任务,删除空格和逗号,然后将它打印成七行(我已经完成)。现在,我完成了任务,我需要显示真实,在每行之前增加单个int之前的时间,同时在读取'空白空白'的行上添加一天。If If语句的问题

我试过几种方法,似乎无法同时出现两种标准。这是我写的代码:

from datetime import datetime 
from datetime import timedelta 

with open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\RandomFile.txt", "r") as inp: 
    with open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\RandomFileOutput.txt", "w") as outp: 

    clock = datetime.now() 

    for line in inp.readlines(): 
     total = 0 
     line = line.strip() 
     parts = line.split(",") 
     for part in parts: 

      try: 
       num = int(part) 
       total += num 

      except ValueError: 
       total = (" ".join(parts)) 
       break 

    #for line in inp: 

    if total == int: 
     total_time = clock + timedelta(seconds = 1) 
     print (clock + timedelta (seconds = 1)) 
    else: 
     total_time = clock + timedelta(days = 1) 
     print (clock + timedelta (days = 1)) 

    outp.write("%s: " % total_time) 

    outp.write('{}\n'.format(total)) 

这里是 'RandomFile:'

1,2 
2,3 
3,4 
4,5 
blank,blank 
5,6 
6,7 

随着我所提供的代码,这里是 'RandomFileOutput' 我收到:

2016-06-28 13:47:56.106000:13

直到我添加了最后一个if,else语句我收到的输出是:

2016-06-28 13:51:19.709000: 3 
2016-06-28 13:51:19.709000: 5 
2016-06-28 13:51:19.709000: 7 
2016-06-28 13:51:19.709000: 9 
2016-06-28 13:51:19.709000: blank blank 
2016-06-28 13:51:19.709000: 11 
2016-06-28 13:51:19.709000: 13 

任何人都可以阐明我做错了什么?

+0

'总数是什么== int'应该这样做?我没有看到你在哪里分配(隐藏)内置的'int'函数,我不明白为什么你的'总数'会与它相等吗? –

+0

'if total == int'?你是否试图测试总数是否大于0? – danidee

+0

它应该是如果类型(总)是int ?,否则它是一串零件? –

我觉得你的缩进是错误的,你应该检查总数的类型,而不是总== INT:

from datetime import datetime 
from datetime import timedelta 

with open("RandomFile.txt", "r") as inp: 
    with open("RandomFileOutput.txt", "w") as outp: 

     clock = datetime.now() 

     for i, line in enumerate(inp.readlines()): 
      total = 0 
      line = line.strip() 
#    print(line) 
      parts = line.split(",") 
      for part in parts: 

       try: 
        num = int(part) 
        total += num 

       except ValueError: 
        total = (" ".join(parts)) 
        break 

      #for line in inp: 
      print(type(total)) 
      if type(total) == int: 
       total_time = clock + timedelta(seconds = 1) 
       print (clock + timedelta(seconds = 1)) 
      else: 
       total_time = clock + timedelta(days = 1) 
       print (clock + timedelta(days = 1)) 
      outp.write("%s: " % total_time) 

      outp.write('{}\n'.format(total)) 

打印:

<class 'int'> 
2016-06-28 16:12:11.967791 
<class 'int'> 
2016-06-28 16:12:11.967791 
<class 'int'> 
2016-06-28 16:12:11.967791 
<class 'int'> 
2016-06-28 16:12:11.967791 
<class 'str'> 
2016-06-29 16:12:10.967791 
<class 'int'> 
2016-06-28 16:12:11.967791 
<class 'int'> 
2016-06-28 16:12:11.967791 
+0

非常感谢你,Vince !在没有指导的情况下学习这种语言被证明是棘手的 – JohnCurnutte

+0

出于好奇:如果我想继续改变日期(即从28更改为29之后,请保留29),我该怎么做? – JohnCurnutte

+0

使用变量来跟踪在for循环范围之外的时间Delta –