我的程序如下,为了取巧,我直接忽略了判断是否为三角数的过程,而只是通过查表法决定
#-*- coding:utf-8 -*-
import math
check_data=[1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120,
136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406,
435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861,
903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 1326, 1378, 1431,
1485, 1540, 1596, 1653, 1711, 1770, 1830, 1891, 1953, 2016, 2080,
2145, 2211, 2278, 2346, 2415, 2485, 2556, 2628, 2701, 2775, 2850,
2926, 3003, 3081, 3160, 3240, 3321, 3403, 3486, 3570, 3655, 3741,
3828, 3916, 4005, 4095, 4186, 4278, 4371, 4465, 4560, 4656, 4753,
4851, 4950]
def open_file(): #打开文件
file = open('p042_words.txt','r')
for item in file.readlines():
line = item.split(',')
file.close()
return line
def process_data(): #数据处理
data = open_file()
for item in range(len(data)): #将字符串转化为列表
print data[item]
word = data[item] #经过转换之后的字符串
if check(word):
print word+'is a trial'
else:
continue
def check(word):
sum = 0
for charator in word:
sum +=ord(charator)+1-ord('A') #将字符转化为整数,并计算在字符表中的位置
sum +=60 #计算时将“”也计算了,将其去除
if sum in check_data:
return True
else:
return False
process_data() |