[关闭]
@SuHongjun 2020-04-16T11:32:35.000000Z 字数 2328 阅读 341

Python - Day 14:函数知识应用实例

Python 2020春季学期


语法基础知识: if...else三元表达式:

  1. if x > y:
  2. a = x
  3. else:
  4. a = y

上述语句可以简化为:

  1. a = x if x>y else y

Python还支持从列表中挑选对象,其基本格式如下:

  1. a = [x,y][f] #f为假时将x赋值给a,否则将y赋值给a
  2. c = [b,a][a>b] #c获得 a,b中较大值

函数应用实例:数码管风格的日期显示

例7.1

  1. import turtle, datetime
  2. def drawLine(draw): #绘制单段数码管
  3. turtle.pendown() if draw else turtle.penup() #这是if...else三元表达式
  4. turtle.fd(40)
  5. turtle.right(90)
  6. def drawDigit(digit): #根据数字绘制七段数码管
  7. drawLine(True) if digit in ['-',2,3,4,5,6,8,9] else drawLine(False) #这是if...else三元表达式
  8. drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
  9. drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
  10. drawLine(True) if digit in [0,2,6,8] else drawLine(False)
  11. turtle.left(90)
  12. drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
  13. drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
  14. drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
  15. turtle.left(180)
  16. turtle.penup()
  17. turtle.fd(20)
  18. def drawDate(date): #获得要输出的数字
  19. for i in date:
  20. if i in "0123456789":
  21. drawDigit(eval(i)) #注意: 通过eval()函数将数字变为整数 ,也可以用int()
  22. else:
  23. drawDigit(i)
  24. def main():
  25. turtle.setup(800, 350, 200, 200)
  26. turtle.penup()
  27. turtle.pencolor("red")
  28. turtle.fd(-300)
  29. turtle.pensize(9)
  30. d = datetime.datetime.now().strftime('%Y-%m-%d')
  31. drawDate( d ) #调用drawDate(), d为实参, 值传递
  32. turtle.hideturtle()
  33. main()

例子7.2: 另一种数码管风格的日期显示

  1. #e7.2SevenSegDisplay.py
  2. import turtle, datetime
  3. def drawGap(): #绘制数码管间隔
  4. turtle.penup()
  5. turtle.fd(5)
  6. def drawLine(draw): #绘制单段数码管
  7. drawGap()
  8. turtle.pendown() if draw else turtle.penup()
  9. turtle.fd(40)
  10. drawGap()
  11. turtle.right(90)
  12. def drawDigit(d): #根据数字绘制七段数码管
  13. drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
  14. drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
  15. drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
  16. drawLine(True) if d in [0,2,6,8] else drawLine(False)
  17. turtle.left(90)
  18. drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
  19. drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
  20. drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
  21. turtle.left(180)
  22. turtle.penup()
  23. turtle.fd(20)
  24. def drawDate(date):
  25. turtle.pencolor("red")
  26. for i in date:
  27. if i == '-':
  28. turtle.write('年',font=("Arial", 30, "normal"))
  29. turtle.pencolor("green")
  30. turtle.fd(40)
  31. elif i == '=':
  32. turtle.write('月',font=("Arial", 30, "normal"))
  33. turtle.pencolor("blue")
  34. turtle.fd(40)
  35. elif i == '+':
  36. turtle.write('日',font=("Arial", 30, "normal"))
  37. else:
  38. drawDigit(eval(i))
  39. def main():
  40. turtle.setup(800, 350, 200, 200)
  41. turtle.penup()
  42. turtle.fd(-350)
  43. turtle.pensize(9)
  44. drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))
  45. turtle.hideturtle()
  46. main()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注