2014-09-11 177 views
1

我正在尝试编写一个决定闰年的程序。我的问题是我不能将年份变量转换为整数。我试图解析try语句中的变量。我收到的错误是将字符串转换为整数

line 19, in divide_by_4 
if (year%4) == 0: 
TypeError: not all arguments converted during string formatting 

我的代码如下:我进口的文件,只有在它

def is_year(year): 
    '''determine if the input year can be converted into an integer''' 
    try: 
     int(year) 
     return year 
    except ValueError: 
     print("current year is not a year") 

def divide_by_4(year): 
    if (year%4) == 0: 
     return True 

def divide_by_100(year): 
    if (year % 100) == 0: 
     return True 

def divide_by_400(year): 
    if (year % 400) == 0: 
     return True 


def leap_year(year): 
    if is_year(year): 
     if divide_by_4(year): 
      if divide_by_100(year): 
       if divide_by_400(year): 
        return True 
      else: 
       if divide_by_400(year): 
        return True 


def main(): 

    input_file = input("Enter the file input file name: ") 
    output_file = input("Enter the output file name: ") 

    try: 
     file_in = open(input_file, 'r') 
    except IOError: 
     print("The input file could not be opened. The program is ending") 

    try: 
     file_out = open(output_file, 'w') 
    except IOError: 
     print("The output file could not be opened. The program is ending") 

    for years in file_in: 
     if leap_year(years): 
      file_out.write(years) 
    file_in.close() 
    file_out.close() 

main()  

回答

1

有1804怎么样:

​​

理由: 在is_year函数你实际上并没有将String转换为int。相反,您只需检查是否可以将其转换。这就是为什么在使用year作为整数之前,您需要进行实际转换(int(year))

在divide_by_100中会出现同样的问题。

0

当你从文件中读取数据,数据的类型为字符串,所以你不能用一年%4. 你可以做这样的:

def leap_year(year): 
    if is_year(year): 
     year = int(year) 
     ...... 

然后去做