You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python矩形计算脚本运行无输出问题求助

Python矩形计算脚本运行无输出问题求助

嘿,我来帮你排查这个问题!你的脚本运行后没有输出,主要是几个关键的语法和逻辑错误导致的,我一一给你拆解:

问题1:函数定义的缩进错误

你写的def function():后面的所有代码都没有缩进,这意味着这个函数的函数体是空的。当你最后调用function()的时候,实际上根本没执行到你写的那些输入、判断代码,这是无输出的核心原因。Python对缩进要求非常严格,函数内部的代码必须统一缩进(通常是4个空格)。

问题2:字符串比较的语法错误

你写的if ask == a or A:这里,a和A没有加引号,Python会把它们当成未定义的变量,就算缩进没问题,运行到这里也会直接报错。正确的写法应该是和字符串'a'、'A'比较,或者用ask.lower() == 'a'来统一处理大小写,写法更简洁。

问题3:输入未转换为数值类型

input()获取的内容默认是字符串类型,如果你直接用l*b,字符串相乘只会重复字符串(比如'2'*'3'会得到'222'),这不是你想要的面积计算。所以需要把输入转成整数或浮点数,比如l = float(input(...)),支持整数和小数的输入。

修正后的完整代码

def function():
    # 将输入转换为浮点数,兼容整数和小数场景
    l = float(input("Enter the length of rectangle: "))
    b = float(input("Enter the breadth of rectangle: "))
    ask = input("Do you want to calculate area or perimeter?(a/p): ")
    
    # 统一转成小写,无需分别判断大小写
    if ask.lower() == 'a':
        area = l * b
        print(f"Area of a rectangle with length of {l} and breadth of {b} is {area}")
    elif ask.lower() == 'p':
        peri = 2 * (l + b)
        print(f"Perimeter of a rectangle with length of {l} and breadth of {b} is {peri}")
    else:
        print("ERROR 404, try again.")

function()

额外优化说明

我还把print语句改成了f-string格式,让字符串拼接更简洁易读。你试试这个版本,应该就能正常运行并得到预期的输出啦!

备注:内容来源于stack exchange,提问作者Dhruv Jadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:34:30