【发布时间】:2009-07-01 00:57:37
【问题描述】:
我正在开发我的第一个面向对象的 python 位,我有以下内容:
#!/usr/bin/python
import random
class triangle:
# Angle A To Angle C Connects Side F
# Angle C to Angle B Connects Side D
# Angle B to Angle A Connects Side E
def __init__(self, a, b, c, d, e, f):
self.a = a
self.b = b
self.c = c
self.d = d
self.e = e
self.f = f
#def solver:
#pass
#initialize Triangle
myTri = triangle(0,0,0,0,0,0)
#Pick Three Random Angles or Sides to Generate Values For
sample = random.sample([myTri.a, myTri.b, myTri.c, myTri.d, myTri.e, myTri.f], 3)
#Sets the three randomly picked variables to a Random Number
sample[0] = random.randint(1, 100)
sample[1] = random.randint(1, 100)
sample[2] = random.randint(1, 100)
我如何传递 myTri.a,例如传递给 random.randint。它正在传递它初始化的“0”的值。我希望能够为 myTri 的三个 .a-.f 属性分配一个随机值。我错过了什么?
【问题讨论】:
-
我假设您将检查随机分配给属性是否会产生有效的三角形。您的三角形过于指定;您只需要 3 个属性(例如,每边的长度,或 2 个长度和包含的角度),其他 3 个属性是派生的。在为属性分配随机值之前,也许您需要考虑一下。约定是称你的类为三角形,而不是三角形。类没有“初始化”;您正在做的是创建一个(无效!)三角形实例并将其命名为“myTri”。呃,请阅读 PEP8。 HTH。
-
感谢您的意见。 1. 我已更改三角形以匹配 PEP8。我已经用谷歌搜索了这个并添加了书签。我将在未来使用它来阐明应该如何设置样式。 2. 我不明白你说的无效是什么意思。你的意思是数学上还是python上无效?我正在检查以确保 ABC(三个角度)不超过 180。 3. 不确定“也许你需要考虑这个……”是什么意思,因为我不确定“这个”是什么意思是。这里的想法是,如果提供足够的信息,程序将能够解决缺失的角度/边。
-
数学上有效。 3 个角度之和必须正好是 180 度。这给你留下了一个可变的边长和两个可导出的边长。 “this”是确保有效性的练习。如果你得到 3 个神奇地加到 180 的角,边都将为零;您建议如何解决缺少的 3 个方面??
-
我认为这是随机分配给仅 3 个属性的关键。如果你得到 SAS 或 SSS,你可以为其他人解决,如果你得到 ASS 或 AAA,你就不能,你会显示一些东西......
-
约翰库格曼你是对的。这基本上是为了确定关于给定三角形的所有已知信息,只知道三个属性。