对于我的 Python 入门类(class)的作业,我们要编写一个程序来生成 100 组 x,y 坐标。
X 必须是介于 -100.0 和 100.0(含)之间的 float ,但不能为 0。 Y 是 Y = ((1/x) * 3070) 但如果 Y 的绝对值大于 100,则必须丢弃两个数字(但已存储)并生成另一组。
结果必须显示在表格中,然后在表格之后,必须显示丢弃的结果。
老师说我们应该用一个“字符串累加器”来存储丢弃的数据。
这是我目前所拥有的,我坚持存储丢弃的数据。
编辑:知道了!谢谢!
# import random.py
import random
# import math.py
import math
# define main
def main():
xDiscarded = 'Discarded X Values'
yDiscarded = 'Discarded Y Values'
# print header
print(" x \t y ")
x = random.uniform(-100.0, 100.0)
while x == 0:
x = random.uniform(-100.0, 100.0)
y = ((1/x) * 3070)
if math.fabs(y) > 100:
xDiscarded += ", " + str(x)
yDiscarded += ", " + str(y)
else:
print(x, '\t', y)
print(xDiscarded)
print(yDiscarded)
如您所见,我遇到了当 abs(y) > 100 时的问题,我不太确定如何存储丢弃的数据并让它在每次 abs(y) > 100 时累积。我是数据存储为“351.2、231.1、152.2”很酷我只是不知道如何将变量转换为字符串并存储它。我们还没有学习数组,所以我不能那样做。
任何帮助将不胜感激。谢谢!
请您参考如下方法:
“字符串累加器”不是 Python 的“艺术术语”。也许老师的意思是“将它全部累积到一个字符串中”(Python 中的一种可怕方法),或者(如果类(class)已经涵盖列表)他的意思是字符串的列表(正确的 Python 方法).
其他答案已经涵盖了第一种可能性,但如果是第二种(好的)可能性,您需要的是:
a) 改变初始化为
xDiscarded = []
yDiscarded = []
所以它们都是空列表;
b) 将“条件丢弃”更改为类似
if math.fabs(y) > 100:
xDiscarded.append(str(x))
yDiscarded.append(str(y))
在字符串列表中累积(您可能还应该在这里做一些整洁的格式化,但严格来说这不是必需的);
c) 将输出部分改为
print('Discarded X Values: ' + ', '.join(xDiscarded))
print('Discarded Y Values: ' + ', '.join(yDiscarded))
用正确的“标题”和标点符号做漂亮的输出。
