Currently doing an assignment for school. My code is coming back with errors in a couple of lines of code, and suggests I'm using Tkinter, which I have not. Looking for anyone who has time to cast their eyes over my code please.
To be able to see the errors come up, I pressed "d" to open the input window and then typed in "square" - all lower case.
I'm trying to get the program to draw a shape when you put in its name or the number of sides it has.
My error comes back as:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Program Files\Python36\lib\turtle.py", line 701, in eventfun
fun()
File "E:\Master 200820 no comments Stack.py", line 85, in startUp
mainGame()
File "E:\Master 200820 no comments Stack.py", line 125, in mainGame
regShapeDraw()
File "E:\Master 200820 no comments Stack.py", line 73, in regShapeDraw
length = ((1 / sides) * 500)
TypeError: unsupported operand type(s) for /: 'int' and 'list'
This is my code:
import turtle
import math
import random
import time
screen = turtle.Screen()
screen.title("Shape Shop")
screen.setup(width=500, height=700)
screen.bgcolor('lightsteelblue')
turtleS = turtle.Turtle()
turtleS.ht()
turtleS.penup()
turtleS.goto(0, 250)
turtleS.write("Welcome to the Shape Shop", align="center", font=("Avenir", 18, "bold", "underline"))
pen = turtle.Turtle()
pen.pensize(2)
pen.ht()
def instructions():
instPen = turtle.Turtle()
instPen.ht()
instPen.penup()
instPen.goto(0, 205)
instPen.pendown()
instPen.write("For this game, you can:", align="center", font=("Avenir", 12))
instPen.penup()
instPen.goto(-120, 170)
instPen.pendown()
instPen.write("• Type in the name of a shape", font=("Avenir", 12))
instPen.penup()
instPen.goto(-100, 145)
instPen.pendown()
instPen.write("- Names must be in lowercase", font=("Avenir", 12))
instPen.penup()
instPen.goto(-100, 120)
instPen.pendown()
instPen.write("- Shape must have 12 or less sides", font=("Avenir", 12))
instPen.penup()
instPen.goto(-120, 95)
instPen.pendown()
instPen.write("• Type in a number of sides", font=("Avenir", 12))
instPen.penup()
instPen.goto(-100, 70)
instPen.pendown()
instPen.write("- Number must be less than 25", font=("Avenir", 12))
instPen.penup()
instPen.goto(-120, 35)
instPen.pendown()
instPen.write(": The program will then draw the shape", font=("Avenir", 12))
instPen.penup()
instPen.goto(-120, 10)
instPen.pendown()
instPen.write(": And tell you what shape it is", font=("Avenir", 12))
instPen.penup()
instPen.goto(-240, -340)
instPen.pendown()
instPen.write("Shape Shop v1.0", font=("Avenir", 8))
instructions()
def regShapeDraw():
length = ((1 / sides) * 500)
angle = (360 / sides)
pen.forward(length / 2)
for i in range(sides - 1):
pen.left(angle)
pen.forward(length)
pen.left(angle)
pen.forward(length / 2)
sides = []
def startUp():
mainGame()
screen.listen()
screen.onkeypress(startUp, "d")
def mainGame():
userInput = screen.textinput("What shape do you want? ", "Enter a shape name or a number of sides: ")
if userInput == "COOL":
eggPen = turtle.Turtle()
eggPen.speed(0)
eggPen.color('black')
eggPen.penup()
eggPen.goto(0, -80)
eggPen.pendown()
rotate=int(360)
def drawCircles(t,size):
size = 70
for i in range(5):
t.circle(size)
size=size-4
def drawSpecial(t,size,repeat):
for i in range (repeat):
drawCircles(t,size)
t.right(360/repeat)
drawSpecial(eggPen,100,10)
shapeName = "WOAH!"
else:
if userInput.isalpha():
if userInput == "triangle":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 3
regShapeDraw()
elif userInput == "square":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 4
regShapeDraw()
elif userInput == "quadrilateral":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 4
regShapeDraw()
elif userInput == "pentagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 5
regShapeDraw()
elif userInput == "hexagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 6
regShapeDraw()
elif userInput == "septagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 7
regShapeDraw()
elif userInput == "heptagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 7
regShapeDraw()
elif userInput == "octagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 8
regShapeDraw()
elif userInput == "nonagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 9
regShapeDraw()
elif userInput == "decagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 10
regShapeDraw()
elif userInput == "hendecagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 11
regShapeDraw()
elif userInput == "dodecagon":
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = 12
regShapeDraw()
else:
pen.penup()
pen.goto(0, -250)
pen.pendown()
pen.write("We don't seem to have that shape in our database. You could try:", align="center", font=("Arial", 12))
pen.penup()
pen.goto(0, -275)
pen.pendown()
pen.write("» Making all the letters lowercase", align="center", font=("Arial", 12))
pen.penup()
pen.goto(0, -300)
pen.pendown()
pen.write("» Checking your spelling", align="center", font=("Arial", 12))
pen.penup()
pen.goto(0, -325)
pen.pendown()
pen.write("» Making sure the shape you want has 12 or less sides", align="center", font=("Arial", 12))
elif userInput.isnumeric():
if int(userInput) <= 25:
pen.penup()
pen.goto(0, -300)
pen.pendown()
sides = int(userInput)
regShapeDraw()
else:
pen.penup()
pen.goto(0, -250)
pen.pendown()
pen.write("We don't seem to have that shape in our database. You could try:", align="center", font=("Arial", 12))
pen.penup()
pen.goto(0, -275)
pen.pendown()
pen.write("» Making the number less than 25", align="center", font=("Arial", 12))
else:
pen.penup()
pen.goto(0, -250)
pen.pendown()
pen.write("We don't seem to have that shape in our database. You could try:", align="center", font=("Arial", 12))
pen.penup()
pen.goto(0, -275)
pen.pendown()
pen.write("» Making your input all letters or all numbers", align="center", font=("Arial", 12))
if userInput == "3":
shapeName = "Triangle"
elif userInput == "4":
shapeName = "Square"
elif userInput == "5":
shapeName = "Pentagon"
elif userInput == "6":
shapeName = "Hexagon"
elif userInput == "7":
shapeName = "Heptagon"
elif userInput == "8":
shapeName = "Octagon"
elif userInput == "9":
shapeName = "Nonagon"
elif userInput == "10":
shapeName = "Decagon"
elif userInput == "11":
shapeName = "Hendecagon"
elif userInput == "12":
shapeName = "Dodecagon"
elif userInput == "13":
shapeName = "Triskaidecagon"
elif userInput == "14":
shapeName = "Tetrakaidecagon"
elif userInput == "15":
shapeName = "Pentadecagon"
elif userInput == "16":
shapeName = "Hexakaidecagon"
elif userInput == "17":
shapeName = "Heptadecagon"
elif userInput == "18":
shapeName = "Octakaidecagon"
elif userInput == "19":
shapeName = "Enneadecagon"
elif userInput == "20":
shapeName = "Icosagon"
elif userInput == "21":
shapeName = "Icosikaihenagon"
elif userInput == "22":
shapeName = "Icosikaidigon"
elif userInput == "23":
shapeName = "Icosikaitrigon"
elif userInput == "24":
shapeName = "Icositetragon"
elif userInput == "25":
shapeName = "Icosikaipentagon"
elif userInput == "triangle":
shapeName = "Triangle"
elif userInput == "square":
shapeName = "Square"
elif userInput == "quadrilateral":
shapeName = "Square"
elif userInput == "pentagon":
shapeName = "Pentagon"
elif userInput == "hexagon":
shapeName = "Hexagon"
elif userInput == "heptagon":
shapeName = "Heptagon"
elif userInput == "septagon":
shapeName = "Heptagon"
elif userInput == "octagon":
shapeName = "Octagon"
elif userInput == "nonagon":
shapeName = "Nonagon"
elif userInput == "decagon":
shapeName = "Decagon"
elif userInput == "hendecagon":
shapeName = "Hendecagon"
elif userInput == "dodecagon":
shapeName = "Dodecagon"
else:
shapeName = "¯\(°_o)/¯"
typeName = turtle.Turtle()
typeName.ht()
typeName.penup()
typeName.goto(0, -120)
typeName.pendown()
typeName.write(shapeName, align="center", font=("Arial", 30, "bold"))
screen.mainloop()