题目:请修改编辑器中的代码,让用户输入一个自然数 n,如果 n 为奇数,输出表达式 1+1/3+1/5+...+1/n 的值;如果 n 为偶数,输出表达式 1/2+1/4+1/6+...+1/n 的值。输出结果保留2位小数。

输入示例: 4

输出示例: 0.75

# 在____________上补充代码
#

def f(n):
    ___________(1)___________
    if ___________(2)___________:
        for i in range(1, n+1, 2):
            s += 1/i
    else:
        for i in range(2, n+1, 2):
            s += 1/i
    return s
n = int(input())
print(___________(3)___________)

代码补全与解析

我们需要补全代码中的三个空缺部分,实现题目要求的功能:

def f(n):
    s = 0  # (1) 初始化累加和为0
    if n % 2 == 1:  # (2) 判断n是否为奇数(取模运算)
        for i in range(1, n+1, 2):
            s += 1/i
    else:
        for i in range(2, n+1, 2):
            s += 1/i
    return s

n = int(input())
print("{0:.2f}".format(f(n)))  # (3) 调用函数并格式化输出保留2位小数
#print(round(f(n),2)) #调用函数并通过四舍五入函数round取两位小数的精度。

关键补全说明

  1.  s = 0:用于初始化累加和变量,避免后续循环中s未定义报错。
  2.  n % 2 == 1:通过取模运算判断n是否为奇数,若结果为 1 则是奇数,否则为偶数。
  3.  "{0:.2f}".format(f(n)):调用函数f(n)计算结果,并使用字符串格式化保留 2 位小数,符合题目输出要求。

代码详解:

1. n = int(input()) 

这行代码的核心作用是从控制台获取用户输入的数字,并转换成整数类型,我们拆成3个部分来看:

代码部分

作用解释

举例说明

input()

Python内置函数,功能是暂停程序运行,等待用户在控制台(终端/命令行)输入任意内容,按下回车后,会把用户输入的内容以字符串类型返回。

如果你在控制台输入5并回车,input()返回的是字符串"5"(注意带引号,不是数字);输入10则返回"10"。

int(...)

Python内置的类型转换函数,功能是把括号里的内容转换成整数类型。

int("5")会把字符串"5"转换成整数5;int("10")转换成整数10。如果输入的不是数字(比如"abc"),会报错,因为无法转成整数。

n = ...

赋值语句,把等号右边计算的结果,存储到名为n的变量里,后续代码可以直接用n来使用这个整数。

执行后,变量n就保存了用户输入的整数,比如输入4,n的值就是4;输入3,n的值就是3。

完整执行流程:

程序运行到这行 → 控制台出现光标等待输入 → 你输入4并回车 → input()得到字符串"4" → int("4")转成整数4 → 把4赋值给变量n → 后续代码里的n就是整数4。

2. "{0:.2f}".format(f(n)) 详细解析

这行代码的核心作用是调用函数f(n)得到计算结果,再把结果格式化成保留2位小数的字符串,我们拆成3个核心部分:

第一步:先理解f(n)

f(n)是调用我们之前定义的函数f,并把变量n作为参数传递进去,函数会根据n是奇数/偶数计算对应的累加和,返回一个浮点数结果。

  • 比如n=3时,f(3)计算1 + 1/3 ≈ 1.333333...,返回这个浮点数;

  • 比如n=4时,f(4)计算1/2 + 1/4 = 0.75,返回浮点数0.75。

第二步:理解字符串格式化"{0:.2f}".format(...)

这是Python的字符串格式化语法(也叫str.format()方法),用来把变量/计算结果按照指定格式拼接到字符串里,拆成两部分:

格式字符串部分

作用解释

" {0:.2f} "

格式模板,大括号{}是“占位符”,用来指定后续值的显示格式:

- 0:表示取format()括号里第0个参数(只有1个参数时,0可以省略,写成{:.2f}也可以);

- ::分隔符,后面跟格式规则;

- .2f:格式规则,.2表示保留2位小数,f表示按浮点数格式显示(即使是整数,也会显示成带两位小数的形式,比如5会变成5.00)。

.format(f(n))

把f(n)的计算结果,代入到前面的格式模板中,按照{0:.2f}的规则格式化。

具体示例:

  • 当f(n)=1.333333...时:

"{0:.2f}".format(1.333333...) → 按照四舍五入保留2位小数,结果是字符串"1.33";

  • 当f(n)=0.75时:

"{0:.2f}".format(0.75) → 刚好两位小数,结果是字符串"0.75";

  • 当f(n)=5时:

"{0:.2f}".format(5) → 会显示成"5.00"(补两位小数)。

第三步:print(...)(补充说明)

你之前的代码里这行应该是print("{0:.2f}".format(f(n))),print()的作用是把格式化后的字符串输出到控制台,让你能看到结果。

比如格式化后得到"1.33",print就会在控制台显示1.33。

额外补充(新手友好)

  1. 格式简写:"{0:.2f}"可以简化成"{:.2f}",因为只有一个参数,0可以省略,效果完全一样,比如:

  2. print("{:.2f}".format(f(n))) # 和原代码效果相同,更常用
    1. 四舍五入规则:如果第三位小数≥5,会进一位,比如1.335保留两位小数是1.34,1.334是1.33。

    2. 常见格式扩展:

      1. {:.1f}:保留1位小数(比如1.333→1.3);

      2. {:.0f}:保留0位小数(只取整数,1.333→1,1.666→2)。

    总结

    1. n = int(input()):核心是获取用户输入的字符串并转成整数,存储到变量n中,为后续函数计算提供参数。

    2. "{0:.2f}".format(f(n)):核心是将函数计算的浮点数结果,按“保留2位小数”的规则格式化,print则把格式化后的结果显示出来。

    3. 关键要点:input()返回字符串,必须用int()转成整数才能参与数值计算;.2f是控制小数位数的核心格式符,会自动四舍五入。

    Logo

    Agent 垂直技术社区,欢迎活跃、内容共建。

    更多推荐