【问题标题】:Python Turtle issue drawing based on user input基于用户输入的 Python Turtle 问题绘图
【发布时间】:2018-06-11 02:38:32
【问题描述】:

我的问题是我的 Tower 变量的高度根本没有打印出来,我觉得如果它打印了它就行不通。我不明白为什么这不起作用请帮忙。

我的代码:

import turtle
bob = turtle.Turtle()
turtle.setup(width = 400, height = 300)
turtle.bgcolor("orange")
n = int(input("Please enter number of towers: "))
h = (input("Please enter height of towers : "))
x = str(h.split(","))
def ocean():
    bob.setpos(-200, 0)
    bob.color("midnightblue", "midnightblue")
    bob.begin_fill()
    for x in range(1, 3):
        bob.forward(400)
        bob.right(90)
        bob.forward(150)
        bob.right(90)
    bob.end_fill()

def tower():
    bob.right(90)
    for x in range (0,n):
        bob.forward(x)


ocean()
tower()

【问题讨论】:

  • 你的预期输出是什么?
  • 你永远不会打印h(或x)。这就是为什么它“根本不打印”。

标签: python turtle-graphics


【解决方案1】:

我发现初级程序员要么编写太多代码,要么太少代码。对于您的tower() 函数,它的代码太少了。您还可以将x 变量用于两个不同的目的——摆脱使用单字母变量名的习惯。不需要您的“请输入塔数:”问题,因为输入的塔高度数会为您提供相同的值。这是您的第一个逻辑错误:

x = str(h.split(","))

我们确实想用逗号分割那个输入字符串,但我们想把它变成一个数字列表而不是字符串。一种方式:

x = map(int, h.split(","))

下一个问题出现在tower()

for x in range (0,n):
    bob.forward(x)

x 的这种重复使用掩盖了我们的高度,你真正想要的是这样的:

for idx in range(n):
    bob.forward(x[idx])
    ...

但是我们不需要使用索引,我们可以简单地walk x 本身。使用上述修复、一些塔图和一些样式更改对您的代码进行返工:

from turtle import Turtle, Screen

WIDTH, HEIGHT = 400, 300

def ocean():
    bob.setpos(-WIDTH/2, 0)
    bob.color("midnightblue")
    bob.begin_fill()

    for _ in range(2):
        bob.forward(WIDTH)
        bob.right(90)
        bob.forward(HEIGHT/2)
        bob.right(90)

    bob.end_fill()

def tower():
    for height in heights:
        bob.left(90)
        bob.forward(height)
        bob.right(90)
        bob.forward(50)
        bob.right(90)
        bob.forward(height)
        bob.left(90)

heights_string = input("Please enter height of towers: ")
heights = map(int, heights_string.split(","))

screen = Screen()
screen.setup(width=WIDTH, height=HEIGHT)
screen.bgcolor("orange")

bob = Turtle()

ocean()
tower()

bob.hideturtle()

screen.mainloop()

用法

> python3 test.py
Please enter height of towers: 100,30,140,60,90,20,45

输出

【讨论】:

  • cdlane 非常感谢,您提供了很多帮助,感谢您详细解释了这个问题。 :)
猜你喜欢
  • 2022-07-23
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
相关资源
最近更新 更多