2017-03-07 63 views
-1

如果我想寫出大量數據集而不在屏幕上顯示,那麼我必須使用一些內置函數以及使用所有類型的分隔符和標籤,以便我可以直接將它們寫出到文件中。Python中用於人類讀取的數據(大數據集)

但是,我很難理解教程代碼中的所有小細節,因此我想知道是否可以使用簡單的語言和逐行的代碼向我解釋這一小段代碼,然後會很好。我想用這個代碼作爲例子,並在將來根據需要引用它。所有這些字母和符號,如「N」,「t」,「n」,「d」和「---」以及「----」和「pow」在代碼中是什麼意思?

下面是代碼:

#print_write.py 
my_file = open('power.txt', 'w') 
print ("N\t\t2**N\t\t3**N") 
print ("---\t\t----\t\t----") 
my_file.write("N\t\t2**N\t\t3**N\n") 
my_file.write("---\t\t----\t\t----\n") 
for N in range(11): 
    print("{:d}\t\t{:d}\t\t{:d}".format(N, pow(2, N), pow(3, N))) 
    my_file.write("{:d}\t\t{:d}\t\t{:d}\n".format(N, pow(2, N), pow(3, N))) 
my_file.close() 
+1

'\ t \ t'在項目之間增加了兩個空格標籤,所以對於'print(「N \ t \ t2 ** N \ t \ t3 ** N」)'你可以看到標題是在打印輸出的第一行分開。 '\ n'用於換行符,以便將數據堆疊到列中。 'print(「{:d} \ t \ t {:d} \ t \ t {:d}」。format(N,pow(2,N),pow(3,N)))'與'format(1,2,3)'中的項目一樣多的'{:d}' - 將值按照提供給'format'的順序放置到字符串中,並放置在由{ :d}'。最好的方法是逐行打印每個打印語句並與打印輸出相關聯。 – roganjosh

+0

@roganjosh:我認爲這個評論應該是一個答案。因此,OP可以接受並將問題存檔? – Prune

+0

@Prune我沒有走完整個路,並且讓它開放,足以嘗試理解輸出。將其餘的作爲練習可以接受嗎? – roganjosh

回答

1

接近最好的方法可能是通過print語句去行由行和代碼與你所看到的實際打印出相關。在這種情況下,打印輸出是:

N    2**N   3**N 
---    ----   ---- 
0    1    1 
1    2    3 
2    4    9 
3    8    27 
4    16    81 
5    32    243 
6    64    729 
7    128    2187 
8    256    6561 
9    512    19683 
10    1024   59049 

這個我認爲你應該研究自己,例如, formatpow,因爲你需要熟悉谷歌搜索你的方式通過這個東西。然而,其他一些部分混亂,所以我同意它不是那麼簡單。我會刪除其中的一些,希望能夠使它更清晰一些:

  • \t\t給出兩個項目之間的空格標籤。您可以通過將print ("N\t\t2**N\t\t3**N")與打印輸出的第一行相關聯,在標題中看到此內容。
  • 瞭解該行也立即澄清下一行---的含義爲代碼(...它沒有,它是一個字符串)。
  • \n是一個換行字符,它有助於打印輸出列而不是單行。
  • print("{:d}\t\t{:d}\t\t{:d}".format(N, pow(2, N), pow(3, N)))的情況下,請注意.format(x, y, z)中的值有多少{:d}。提供給format的值用於填充字符串,順序位於{:d}佔位符的位置。
  • 請注意,print語句會在每行末尾自動添加換行符,但write不會。因此,在這種情況下,如果您希望將每個打印語句作爲一個單行寫入文件中,則必須將\n添加到任何打印字符串的末尾。
    print("{:d}\t\t{:d}\t\t{:d}".format(N, pow(2, N), pow(3, N)))
    不得不成爲
    my_file.write("{:d}\t\t{:d}\t\t{:d}\n".format(N, pow(2, N), pow(3, N)))
    與在.format部分之前的額外\n