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
相关产品推荐
相关产品推荐

