将字符串转换为整数

时间:2014-09-11 06:32:19

标签: python-3.x type-conversion

我正在尝试编写一个确定闰年的程序。我的问题是我无法将年变量转换为整数。我尝试在try语句中解析变量。我收到的错误是

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

我的代码如下:我导入的文件中只有1804

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()    

2 个答案:

答案 0 :(得分:1)

怎么样:

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

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

divide_by_100也会出现同样的问题。

答案 1 :(得分:0)

当您从文件中读取数据时,数据类型为字符串,因此您无法使用年份%4。 你可以这样做:

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

然后去做