注意一个IDLE使用的点:编辑用undo和redo可以实现撤销操作
关于if-else语句的简化使用https://www.cnblogs.com/xiexiaoxiao/p/7772441.html
单行if-else语句用法
True Fulse的使用
import turtle as t
import time
def drawGap(): #绘制数码管间隔
t.penup()
t.fd(5)
def drawLine(draw): #绘制单段数码管
drawGap()
t.pendown() if draw else t.penup()
t.fd(40)
drawGap()
t.right(90)
def drawDigit(d): #根据数字绘制七段数码管
drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,2,6,8] else drawLine(False)
t.left(90)
drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
t.left(180)
t.penup()
t.fd(20)
def drawDate(date):
t.pencolor("red")
for i in date:
drawDigit(eval(i))
def main():
t.setup(800, 350, 200, 200)
t.penup()
t.fd(-300)
t.pensize(5)
drawDate(time.strftime('%Y%m%d',time.gmtime()))
t.done()
main()
主要是注意当前时间怎么取,这一部分还没有掌握住
import turtle
def koch(size, n):
if n == 0:
turtle.fd(size)
else:
for angle in [0, 60, -120, 60]:
turtle.left(angle)
koch(size/3, n-1)
def main(level):
turtle.setup(600,600)
turtle.penup()
turtle.goto(-200, 100)
turtle.pendown()
turtle.pensize(2)
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.hideturtle()
try:
level = eval(input("请输入科赫曲线的阶: "))
main(level)
except:
print("输入错误")
一个非常好的函数递归的实例,主要注意用数学思想来拆解问题。
当n=1时,当n>1时分别是什么样的情况,有什么规律。
用数学来把问题形容出来,再用python语言表示出来。
def cmul(a, *b):
m = a
for i in b:
m *= i
return m
print(eval("cmul({})".format(input())))
该程序需要注意两个内容:
无限制数量函数定义的方法,其中b在函数cmul中表达除了a之外的所有输入参数;
以字符串形式调用函数的方法,"cmul()"与eval()的组合,提供了很多灵活性。
def fbi(n):
if n == 1 or n == 2:
return 1
else:
return fbi(n-1) + fbi(n-2)
n = eval(input())
print(fbi(n))
注意return的使用,应该使用return返回值
steps = 0
def hanoi(src, des, mid, n):
global steps
if n == 1:
steps += 1
print("[STEP{:>4}] {}->{}".format(steps, src, des))
else:
hanoi(src, mid, des, n-1)
steps += 1
print("[STEP{:>4}] {}->{}".format(steps, src, des))
hanoi(mid, des, src, n-1)
N = eval(input())
hanoi("A", "C", "B", N)
非常经典的问题,将移动圆盘的整个流程拆解为3步
从n一直递归到1
注意函数的4个变量,位置一直在发生变化。
意思是函数后定义的多个变量,是以顺序来代表的?????
传参方式
(1) 位置传参
定义def fun(x,y,z),调用 fun(1,2,3),按照参数定义顺序传入实参.
(2) 关键字传参
定义时def fun(x, y, z),调用使用 fun(x=1, y=3, z=5),使用形参的名字来传入实参的方式,如果使用了形参名字,那么传参顺序就可和定义顺序不同
要求位置参数必须在关键字参数之前传入,位置参数是按位置对应的
def fun(x, y, z):
pass
fun(1,2,3)
fun(x=10,z=15,y=20)# 关键字传参不考虑传参的顺序,但个数要一致.可以用位置和关键字一同传参.
fun(12,y=20,z=10)# 关键与位置传参组合使用
def add(x=20,y):# 错误 关键字缺省值不能写前
return x+y
add(y=10,10) #错误关键字传参不能写前面
def函数的使用与相关操作参考https://blog.csdn.net/qq_40498551/article/details/89278247