小さなプロジェクトとしてこの小さなコードを書いています。さまざまな図形を描くためにタートルグラフィックスモジュールを使用しています。これは、ランダムモジュールを使用して描画する図形を選択します。ここにコードがあります。もう一度プログラムを実行する(Python)
import time
import sys
import random
import os
from turtle import *
while True:
value = 0
def f():
global value
value = 1
onkey(f, "q")
listen()
random = random.choice('123456')
print(random)
if random == "1":
#Star
from turtle import *
hideturtle()
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
textinput("again1", "Again?")
if textinput == "Yes"or"yes"or"Y"or"y":
clearscreen()
break
if value == 1:
textinput("again1", "Again?")
if textinput == "Yes"or"yes"or"Y"or"y":
clearscreen()
break
end_fill()
done()
elif random == "2":
#Extending Squares
from turtle import *
hideturtle()
color('red', 'yellow')
size=1
begin_fill()
while (True):
forward(size)
right(91)
size = size + 1
if value == 1:
textinput("again2", "Again?")
if textinput == "Yes"or"yes"or"Y"or"y":
clearscreen()
break
elif random == "3":
#Extending Hexagons
from turtle import *
hideturtle()
color('red','yellow')
size=1
while True:
forward(size)
right(61)
size = size + 1
if value == 1:
textinput("again3", "Again?")
if textinput == "Yes"or"yes"or"Y"or"y":
clearscreen()
break
elif random == "4":
#Recursive Star
import turtle
from turtle import *
def star(turtle, n,r):
""" draw a star of n rays of length r"""
for k in range(0,n):
turtle.pendown()
turtle.forward(r)
turtle.penup()
turtle.backward(r)
turtle.left(360/n)
def recursive_star(turtle, n, r, depth, f):
"""At each point of the star, draw another smaller star,
and so on, up to given depth. Rescale the stars by a factor f
at each generation."""
if depth == 0:
star(turtle, n, f*4)
else:
for k in range(0,n):
turtle.pendown()
turtle.forward(r)
recursive_star(turtle, n, f*r, depth - 1,f)
turtle.penup()
turtle.backward(r)
turtle.left(360/n)
if value == 1:
textinput("again4", "Again?")
if textinput == "Yes"or"yes"or"Y"or"y":
clearscreen()
break
fred = turtle.Turtle()
fred.speed("fastest")
fred.color('red','yellow')
fred.hideturtle()
recursive_star(fred, 5 , 150, 4, 0.4)
elif random == "5":
#Honeycombs
from turtle import *
color('red','yellow')
penup()
setx(-200)
sety(-150)
pendown()
side = 0
side1 = 0
begin_fill()
while True:
forward(50)
right(60)
side = side + 1
side1 = side1 + 1
if value == 1:
textinput("again5", "Again?")
if textinput == "Yes"or"yes"or"Y"or"y":
clearscreen()
break
if side == 6:
side = 0
end_fill()
begin_fill()
while True:
forward(50)
left(60)
side = side + 1
side1 = side1 + 1
if value == 1:
break
if side == 6:
end_fill()
side = 0
forward(50)
left(60)
begin_fill()
break
if side1 == 72:
side1 = 0
forward(50)
left(60)
forward(50)
right(60)
elif random == "6":
#Lattice of Squares
color('red','yellow')
while True:
forward(200)
right(91)
forward(50)
right(91)
forward(50)
right(91)
if value == 1:
textinput("again6", "Again?")
if textinput == "Y"or"y"or"Yes"or"yes":
clearscreen()
break
else: sys.exit()
ユーザーが「q」を押すと、別の図形を描画するプログラムを要求すると、私はプログラムが戻って非常に最も外側のwhileループの先頭に行きたいです。私はこれを行うために休憩を使用しており、それは正常に動作します。しかし、それがなったとき、私はトラブルに実行します。
Traceback (most recent call last):
File "C:\Users\aerro_000\Desktop\PrettyShapes.py", line 14, in <module>
random = random.choice('123456')
AttributeError: 'str' object has no attribute 'choice'
が、私はこれをどのように修正すればよい:
random = random.choice('123456')
プログラムが言って、私にエラーを与えて?または、プログラム全体を再起動する方法はありますか?私もrandom.randintを使ってみましたが、同様のエラーが出ます。 ありがとうございます。