先小小的嘴欠一句:周三晚上阶段考试2文件操作不比这个题目复杂多了,我看两百多个人满分180多个,怎么到了这个最简单的题目居然只有3.87%的通过率呢?
那么可以知道用可以用if判断的条件有三个:
①:n的范围在(0,1000000]之外
②:n是首位为0的多位数
③:n是一个浮点数
以及还可以知道用try...except...else结构判断的条件有一个:
①:n就是一堆胡乱的非纯数字字符串,如果直接int或float转类型会报错,所以需要try结构。
try结构:如果执行了except,那么就不会执行else,否则执行else。
代码如下:
def fib(i):
return 1 / i
n = input()
try:
#n如果是一串非数字字符也是不合法的,int化会直接报错,所以需要try...except...else结构
#为什么不直接int(n)呢?因为后面判断n是否是浮点数时,字符n比数字n更好用而且
#后面还要进行对n是否是首位为0的多位数进行判断,如果直接int化n,那么这判断将无法进行
t = int(n)
except:
print('输入不合法!')
else:
#n是首位是0的多位数、n是浮点数、n <= 0 或者 n > 1000000都是不合法,可以使用if
if n[0] == '0' or '.' in n or int(n) > 1000000 or int(n) <= 0:
print('输入不合法!')
else:
n = int(n)
sum = 0
if n % 2 == 0:
for i in range(2, n + 2, 2):
sum += fib(i)
# print(i)
print('%.2f' % sum)
else:
for i in range(1, n + 1, 2):
sum += fib(i)
# print(i)
print('%.2f' % sum)
#print(n)