def main():
infile = open('numbers.txt','r')
evenTotal = 0
oddTotal = 0
line = infile.readline()
while line != '':
total += int(line)
line = infile.readline()
print('The total for the even numbers is',evenTotal)
print('The total for the odd numbers is',oddTotal)
infile.close()
print('All done!')
main()
我试图这样做,以便程序从其目录中的文件中读取数字,然后分离,计算并显示这两组数字的总和。我遇到的麻烦是识别赔率和偶数的中间部分。我确实知道我在中间编写的while循环可以计算总数,但是我不知道如何修改它以使其达到我想要的效果。
为了检查数字是奇数还是偶数,应该使用模运算符。
如果一个整数可以被2整除,那么它将是偶数,否则它是奇数。所以...
while line != '':
if int(line) % 2 == 0:
evenTotal += int(line)
else
oddTotal += int(line)
line = infile.readline()
从itertools中,您可以使用分区配方将其划分为偶数和奇数并返回它们的总和
from itertools import ifilterfalse,imap,ifilter,tee
def partition(pred, iterable):
'Use a predicate to partition entries into false entries and true entries'
# partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9
t1, t2 = tee(iterable)
return ifilterfalse(pred, t1), ifilter(pred, t2)
def is_odd(x):
return bool(x%2)
list_of_ints = imap(int,filter(lambda x:x.strip().isdigit(),infile))
odds, evens= partition(is_odd,list_of_ints)
print sum(evens),sum(odds)
它可能比朋友们的回答要慢一些...但这是一个很好的模式,可以知道
或作为聊天中的@JonClements pointed out
r = range(11)
d = dict.fromkeys([0, 1], 0)
for i in r: d[i % 2] += i
这是一种整洁的方法
将此数字用于偶数
def even_numbers(maximum):
return_string = ""
for x in range(2,maximum+1,2):
return_string += str(x) + " "
return return_string.strip()