我想编写一个程序,每次按“ n”键时都会按顺序更改乌龟图像。
它应该首先以“经典”形状开始,每按一次“ n”键,将形状更改为“圆形”,“箭头”,“乌龟”,然后循环回到“经典”。 / p>
31
当我按下'n'键时,它应该已经更改了一次。问题是,它变化太快。
答案 0 :(得分:1)
您将通过n
循环一次遍历for
的所有可能值。相反,您需要做的是在函数外保存n
值,并在每次调用函数时对其进行更改:
n = 1
def changeTurtle():
global n
n = (n % 4) + 1 # cycle through 1, 2, 3, 4, 1, 2, 3, 4, ...
if n == 1:
t.shape('circle')
elif n == 2:
t.shape('arrow')
elif n == 3:
t.shape('turtle')
else:
t.shape('classic')
答案 1 :(得分:0)
这是我过度设计此问题的方式(并消除了对 <li><a> Welcome, <?php echo $this->session->name ?> </a></li>
语句的需要):
public function login($username, $password){
//Validate
$this->db->where('username',$username);
$this->db->where('password',$password);
$result = $this->db->get('users');
if ($result->num_rows() == 1) {
return $result->row(0)->id;
}else{
return false;
}
}
答案 2 :(得分:0)
函数的另一种选择是让一个无限迭代器(如itertools.cycle
)加载要循环浏览的所有形状。当您想要下一个形状时,您的程序只需询问它,更改乌龟,然后继续之前所做的任何其他操作。以下程序演示了如何完成此操作:
import itertools
import turtle
def main():
canvas = turtle.Screen()
t = turtle.Turtle()
# noinspection PyProtectedMember
shapes = itertools.cycle(sorted(canvas._shapes.keys()))
t.shape(next(shapes))
canvas.onkey(lambda: t.shape(next(shapes)), 'n')
canvas.listen()
canvas.mainloop()
if __name__ == '__main__':
main()