2016-06-28 158 views
0

我從頭開始學習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 ?,否則它是一串零件? –

回答

1

我覺得你的縮進是錯誤的,你應該檢查總數的類型,而不是總== 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 –