You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

多边形面积计算代码故障求助:含矩形、正方形、圆形计算逻辑

代码问题排查与修复方案

我帮你梳理下代码里的问题,一步步修正后就能正常计算图形面积了:

原代码的核心问题

  • 语法错误:Python 的条件分支必须遵循 if → elif → elif → else 的顺序,你在 else 后面写了 elif,这会直接导致语法报错——因为 else 是最后一个兜底分支,不能在它之后再添加条件判断。
  • 计算逻辑错误
    • 正方形模块:你要计算的是面积,但代码里写的是 Q = q*2,这既不是面积(正方形面积是边长×边长)也不是正确的周长(周长是4×边长),而且输出文本写的是“Umfang”(周长),和你计算面积的需求不符。
    • 圆形模块:你把输入的半径转成了字符串 str,执行 z*z 会变成字符串重复(比如输入"5"会得到"55"),根本无法和数字相乘;另外输入提示里写错了,应该是“radius des Kreises”(圆的半径)而不是“radius des quadraten”(正方形的半径)。
  • 冗余提示与匹配不灵活:多个分支重复提示大小写问题,而且严格区分输入的大小写,用户输入小写(比如quadrat)就会匹配失败。

修正后的完整代码

print("Quadrat, Rechteck, Kreis")
# 处理输入:去除首尾空格并统一首字母大写,让输入更灵活
auswahl = input("Bitte wählen sie eine Polygon: ").strip().capitalize()

if auswahl == "Quadrat":
    seitenlaenge = int(input("Geben Sie die Seitenlänge des Quadrats an: "))
    flaeche = seitenlaenge ** 2
    print(f"Der Flächeninhalt des Quadrats ist {flaeche} cm² groß.")
elif auswahl == "Kreis":
    radius = float(input("Geben Sie den Radius des Kreises an: "))
    pi = 3.14159265359
    flaeche = pi * (radius ** 2)
    print(f"Der Flächeninhalt des Kreises ist {flaeche:.2f} cm² groß.")  # 保留两位小数更美观
elif auswahl == "Rechteck":
    laenge = int(input("Geben Sie die erste Kantenlänge ein: "))
    breite = int(input("Geben Sie die zweite Kantenlänge ein: "))
    flaeche = laenge * breite
    print(f"Der Flächeninhalt des Rechtecks ist {flaeche} cm² groß.")
else:
    print("Ungültige Auswahl! Bitte achten Sie auf die Groß- und Kleinschreibung oder wählen Sie eine der verfügbaren Optionen.")

关键修改点说明

  1. 修复语法结构:把所有 elif 放在 else 之前,符合Python的条件分支语法规则。
  2. 修正计算逻辑
    • 正方形改为计算面积(seitenlaenge ** 2),同时把输出文本改成“Flächeninhalt”(面积),匹配你的需求。
    • 圆形部分将输入转为 float(支持小数半径),修正公式为 π × 半径²,并修正了输入提示的错误文本。
  3. 优化输入匹配:用 strip().capitalize() 处理用户输入,不管输入是小写、大写还是带空格,都能正确匹配对应的图形选项。
  4. 统一错误提示:最后一个 else 分支给出清晰的错误说明,避免重复代码。
  5. 提升代码可读性:使用更清晰的变量名(比如seitenlaengeradius),并用f-string格式化输出,让结果更直观。

内容的提问来源于stack exchange,提问作者Thomas Schätzing

火山引擎 最新活动