制作一个正方形

时间:2014-04-03 20:51:39

标签: python syntax-error

所以我刚刚开始使用python进行编码,并且我已经分配了一个项目来使用蒙特卡罗算法来近似pi的值。我已经把概念位缩小了,但现在我需要打印一个正方形并在上面放置复选标记。方块需要由用户设置大小定义。

我设法使用以下代码打印正方形:

import random
#defines the size of the square
squareSize = raw_input("Enter a square size:")
#defines the width of the square
print "#" * (int(squareSize)+2)
#defines the length of the square. 
for i in range(0,int(squareSize)):

    print "#", " " * (int(squareSize)-2), "#"

print "#" * (int(squareSize)+2)

无论出于什么原因我添加:

#determines the x value of a point to display
x = random.uniform(-1*(squareSize),squareSize)

或创建变量与“squareSize”混淆的任何其他内容我收到以下内容:

Traceback (most recent call last):
  File "<stdin>", line 6, in <module>
  File "/lib/python2.7/random.py", line 357, in uniform
    return a + (b-a) * self.random()
TypeError: unsupported operand type(s) for -: 'str' and 'str'

我很感激我能得到的任何帮助,我确定这是一个愚蠢的事情,我只是在俯视,但我不能为我的生活弄明白。

谢谢,

亚历。

2 个答案:

答案 0 :(得分:3)

问题是squareSize属于str类型。 random.uniform等待int类型的参数。

您可以通过以下方式修复它:

x = random.uniform(-1*(int(squareSize)),int(squareSize))

但是,最好在开始时将squareSize更好地投射到int

squareSize = int(raw_input("Enter a square size:"))

代码最终应如下所示:

import random

squareSize = int(raw_input("Enter a square size:"))

print "#" * (squareSize + 2)
for i in range(0,squareSize):
    print "#", " " * (squareSize) - 2, "#"
print "#" * (squareSize + 2)

x = random.uniform(-1 * squareSize, squareSize)

希望有所帮助。

答案 1 :(得分:1)

raw_input函数返回一个字符串(str)而不是一个整数(int

由于squareSize是一个字符串,因此您无法对其执行-操作。 因为这不是你想要做的。你想在两个整数上执行减法(或函数random想要)。

因此,为此目的,您可以通过将squareSize返回的字符串转换为raw_input

来强制转换(更改int变量的类型
#defines the size of the square
squareSize = raw_input("Enter a square size:")