我正在尝试编写一个确定闰年的程序。我的问题是我无法将年变量转换为整数。我尝试在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()
答案 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)
......
然后去做