我正在尝试比较numbers.txt文件中的数字。困扰我的是Python中的负索引属性,其中负数实际上意味着从右向左读取。
有没有一种方法可以忽略第一个比较?我在哪里输出没有先前的数字(请参阅所需的输出)
重要的是我无法更改我的numbers.txt文件。这些是我从另一个函数自动生成的。
$ cat numbers.txt
1
2
3
4
5
代码:
with open('numbers.txt') as file:
lines = file.read().splitlines()
print lines
for i in range(len(lines)):
previous_number = lines[i-1]
current_number = lines[i]
print "current Nr: ", current_number
print "previous Nr: ", previous_number
if current_number > previous_number:
print " current Nr is larger"
else:
print "current Nr is smaller"
输出:
['1', '2', '3', '4', '5']
current Nr: 1
previous Nr: 5
current Nr is smaller
current Nr: 2
previous Nr: 1
current Nr is larger
current Nr: 3
previous Nr: 2
current Nr is larger
current Nr: 4
previous Nr: 3
current Nr is larger
current Nr: 5
previous Nr: 4
current Nr is larger
所需的输出
['1', '2', '3', '4', '5']
current Nr: 1
previous Nr: There is no previous!
current Nr is none
current Nr: 2
previous Nr: 1
current Nr is larger
current Nr: 3
previous Nr: 2
current Nr is larger
current Nr: 4
previous Nr: 3
current Nr is larger
current Nr: 5
previous Nr: 4
current Nr is larger
答案 0 :(得分:2)
您可以使用enumerate
来检查索引
for i, value in enumerate(lines):
previous_number = "None"
CurrentNrText = "None"
if i != 0:
previous_number = lines[i-1]
if current_number > previous_number:
CurrentNrText = " current Nr is larger"
else:
CurrentNrText = "current Nr is smaller"
current_number = lines[i]
print("current Nr: ", current_number)
print("previous Nr: ", previous_number)
print(CurrentNrText)
答案 1 :(得分:1)
如果要从第二个数字开始,则显式从第二个数字开始:
for i in range(1, len(lines)):
或更妙的是,使用更惯用的enumerate
:
for i, number in enumerate(lines[1:], 1):
答案 2 :(得分:1)
您可以尝试以下方法:
with open('numbers.txt') as file:
numbers=[None,]
for line in file:
numbers.append(line)
for idx,no in enumerate(numbers,1):
try:
if numbers[idx]>numbers[idx-1]:
print('Current no is {}'.format(numbers[idx]))
print('Previous no is {}'.format(numbers[idx-1]))
print ("current Nr is larger")
else:
print ("current Nr is smaller")
except TypeError:
print('Current no is {}'.format(numbers[idx]))
print('There is no previous!')
except IndexError:
pass
输出:
Current no is 1
There is no previous!
Current no is 2
Previous no is 1
current Nr is larger
Current no is 3
Previous no is 2
current Nr is larger
Current no is 4
Previous no is 3
current Nr is larger
Current no is 5
Previous no is 4
current Nr is larger