2017-07-17 41 views
2

我正在處理一個文本文件,其中填充了由空格分隔的數字字符串。我試圖找到文件中數值在1到1,000,000之間的數值。我目前有這隻打印數字。有關如何查找數量的任何建議?查找一定範圍內的數字量

for line in file: 
    for number in line: 
     if "0" < number < "1000000": 
      print(number) 
+0

提示:在循環前初始化一個計數變量,然後在找到符合條件的數字時繼續向該變量添加一個。 –

+0

有一個變量,你每次比賽時增加 – litelite

+0

這是*不正確的方法。 –

回答

0
file_object = open("numbers", "r") 
count = 0 
for line in file_object:  
    for number in line.split(): 
     if int(number) > 10 and int(number) < 100: 
      count = count + 1 
print(count) 
+1

謝謝你的幫助! –

+0

我討厭再次遇到問題,但是您是否知道是否有辦法在不重新進入的情況下循環多個範圍。即0-100,101-200等 –

+0

當然,只需複製if塊,將「if」改爲「elif」(表示:else if)並更改範圍。 (請參閱:https://www.tutorialspoint.com/python/python_if_else.htm) –

1

首先,投你number變量這樣一個int:int(number)和使用整數,而不是字符串比較。像這樣:if 0 < int(number) < 10000

此外,添加一個像建議的一些意見的計數器。下面是完整的代碼:

counter = 0 
for line in file: 
    for number in line: 
     if 0 < number < 1000000: 
      counter += 1 
+0

謝謝你的幫助! –

4

你的做法是不正確

  • number是一條線的每一個字符。所以這些只能是數字,字母等。不是多位數字;和
  • 與字符串的比較是按字典順序

但是,您可以輕鬆地計算這個像:

sum(0 < int(n) < 1000000 for line in file for n in line.split() if n.strip())

int(..)蒙上了字符串等價物(積分)號。因此'100'轉換爲100。如果我們想要執行數字比較,這是必需的。

split()用於獲取文件中的數字。它會查找空白等,並分割這些部分。

如果數字格式良好,if n.strip()可以是可選的。但是,這可能是有問題的:例如,如果你有拖尾新線等

+0

謝謝你的幫助! –

2

如果文件只有數字,你可以使用類似:

with open(path, 'r') as f: 
    print sum(1 for x in f.read().split() if 10000 > int(x) > 0) 

這將在整個文件中的數數無需單獨計算每條線。

+0

謝謝你的幫助! –