【问题标题】:Computing the circumference, area, and ratio of circumference to area of a circle计算圆的周长、面积和周长与面积之比
【发布时间】:2014-02-07 13:21:37
【问题描述】:

为 CS 考试而学习,基本上我必须遵循与此类似的说明。

编写一个程序,即一个包含 main 函数的文件,其后跟 调用 main,并将程序命名为 ratio.py。基本结构 程序应该是这样的:

def main():
    ...
    return

main() where the ellipsis indicates where you should place the code that performs following computations:

-你应该提示用户输入一个与 一个圆的半径。使用类似于以下的代码执行此操作: radius = int(input("圆半径?"))

  • 使用公式 c = 2 πr 计算圆的周长,其中 r 是半径,c 是周长。使用价值 3.14159 为 π
  • 使用公式 c = πr2 计算圆的面积
  • 打印周长与面积的比值(a 与 b 的比值是 a 除以 b)

这是我到目前为止所写的。我得到了周长和面积,但我如何得到它来计算两者之间的比率并打印比率。

def main():
   radius = int(input("circle radius? "))
   pi = 3.14159
   r = radius
   c = 2*pi*r
   print(2*pi*r)
   a = pi*r*r
   print(pi*r*r)
   ratio = c / a
   return(ratio)
   print("the ratio of the circumference to the area is",ratio)
main()          

最终目标是得到这样的东西:

  • $python3 ratio.py

  • 圆半径? 2

  • 周长与面积之比是????
  • 在哪里????替换为实际比例。

【问题讨论】:

  • 我们又回来了吗?尽量避免关闭这么多问题;这个已经好多了,但似乎错过了一条错误消息。出了什么问题,您预计会发生什么?
  • 您应该编辑现有问题以改进它们,而不是发布新问题。重复问基本相同的问题是获得自动问题禁令的好方法。
  • 你的函数返回结果。你把它扔掉。你应该打印它。考虑通过Python tutorial 或优秀book for beginners 的开头。
  • 函数返回后不能做任何事情。将print 移到return 之前(如果您甚至想返回任何东西;规范并没有告诉您这样做。)
  • @d3vid:codereview 适用于有效的代码。

标签: python


【解决方案1】:

你非常接近解决这个问题。这里有几个想法可以帮助你完成它:

  1. import 语句通常应该放在文件的顶部,而不是函数内部。它们将在函数中工作,但它的形式很差。这可能不是在课堂上讲授的,但是当您阅读其他人的代码时,您会习惯于看到特定的模式。

  2. 作为一种风格,Python 通常使用大写字母来命名常量,因此PI=3.14159 比 pi=3.14159 更常见。这是次要的,无论哪种方式都有效。坚持这是一种很好的风格,因为它有助于使您的代码与其他人的代码相匹配。

  3. 您需要使用提供给您的公式计算面积:a = PI*r*r(注意 - 原始问题错误地使用“c”表示面积。“c”是周长。)

  4. 需要返回c/a,即请求的比率。

  5. 您可能需要打印出返回值进行测试。您可以通过将 main() 返回的值存储在变量中然后打印它来做到这一点。

下面是从 main() 函数返回值的方法:

def main():
    ...
    return c/a

ratio = main()
print(ratio)
# or...
print("The ratio is:", ratio)

【讨论】:

  • 他实际上需要定义pi。这是要求。
  • 您能否详细说明如何执行最后一步。也非常感谢您的帮助。
  • @user3283574 result = main() 然后print(result)
【解决方案2】:

当您将 pi 声明为两行以上的变量时,您执行c = (2*math.pi*r) 很奇怪。执行math.pi 会进入python 的数学库并挖掘出更准确的pi 版本。出于所有意图和目的,您完全没有使用 pi 变量。 请参阅http://docs.python.org/2/library/math.html 了解更多信息。

此外,您执行相同的计算两次。

c = 2*math.pi*r
return(2*math.pi*r)

c 最终被垃圾收集(也就是说,计算机进行计算然后进入垃圾箱)并且从未被使用。最好直接return c

对于范围界定问题,我敢肯定您作为初学者不会真正了解,请将import math 放在您的主函数上方,不要缩进。

不过,只是为了将来参考,SO 往往是针对您在代码中发现的孤立问题;不是为了完整的代码审查。一个更可接受的问题是“我的函数正在返回一个意外的值”,而不是“我的函数不工作”

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 2018-04-07
    • 2017-11-21
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多