2012-11-02 84 views
0
for line in file: 
    line = int(line) 
    if line <= maximumValue: 
     counter = counter + 1 
    if line >= minimumValue: 
     counter = counter + 1 
    print (int(line)) 
file.close() 

我正在拍一個數字列表的文件,比如說從1到10.我想列出最大和最小值,以及最小值和最大值之間的值。當我有我的程序打開文件時,它只打印總數量,並沒有消除那些高於最大值或低於最小值的值。我在這裏錯過了什麼,我能做些什麼來糾正它?如何確定在用戶輸入python的最大值和最小值之間有多少數字lie

+1

你是比較字符串,數字...'INT(線)'應該是在循環 – JBernardo

+0

線的第一件事= INT(線路)如這個?我已經在代碼中有這個。 – Subtlyinyourmind

+0

然後你應該發佈你的真實代碼。順便說一句,你正在計數每個值兩次。 – JBernardo

回答

2

Python支持正常(可讀)不等式:

numbers = [] 
counter = 0 

with open('filename.txt', 'r') as handle: 
    for line in handle: 
     number = int(line) 

     if minimumValue <= number <= maximumValue: 
      numbers.append(number) 
      counter += 1 

print(counter) 
print(numbers) 

此外,使用with打開文件。你不必擔心之後關閉它們。

0

使用xrange一個方便的特性的一個例子:

MIN = 3 
MAX = 7 

valid_range = xrange(MIN, MAX+1) 
with open('file') as fin: 
    nums = (int(line) for line in fin) 
    valid_vals = [num for num in nums if num in valid_range] 
    # or if you just want count of valid values 
    count = sum(1 for num in nums if num in valid_range) 

print valid_vals, len(valid_vals) 
相關問題