莱斯大学Python课程第五周演示程序

第五周讲list 和dictionary,感觉难度突然加大了,可能是信息量太多,也可能是我自己太菜鸟,幸好五一节放假可以消化一下。



# 画出多个小球,如果鼠标点在现有小球里面,就会消除小球


import simplegui
import math


W=450
H=300
R=15 # ball radius
ball_list=[]
ball=[W/2,H/2]


# event handlers


def distance(p,q):
    return  math.sqrt( (p[0]-q[0])**2+(p[1]-q[1])**2)


        
def  click(pos):
    remove=[] 
    for ball in ball_list:
      if distance([ball[0],ball[1]],pos)<=R:
         remove.append(ball)
         print "remove:",remove
            
    if remove==[]: 
      ball_list.append(pos)  
      print "ball_list:", ball_list     
    else: 
      for ball in remove:
           ball_list.pop(ball_list.index(ball))
           print    "ball_list after pop:" ,ball_list 
            
# draw canvas 画出多个小球
def draw(canvas):
    for ball in ball_list:
      canvas.draw_circle([ball[0],ball[1]], R,1,"Teal","Teal")


# create frame and regist event
frame=simplegui.create_frame("ballcontrol",W,H)
frame.set_mouseclick_handler(click) # 鼠标操作
frame.set_canvas_background("White")# 设置背景
frame.set_draw_handler(draw)


# start frame
frame.start()


# 任务管理器
import simplegui


#event handlers
tasks=[]
message="hello"


# handlers for buttons
def clear():
    global tasks
    tasks=[]
    
    
def new(task):
  tasks.append(task)    
 
    
def remove_num(tasknum):
  n= int(tasknum)
  if n>0 and n<=len(tasks):
     tasks.pop(n-1)
        
def remove_name(taskname):
   if taskname in tasks:
     tasks.remove(taskname)


# draw canvas
def draw(canvas):
  global message
  for i in tasks:
    message=str(tasks.index(i)+1)+".  "+str(i)
    pos=30*(tasks.index(i)+1)
    canvas.draw_text(message,[20,pos],20,"Orange")
 
# create frame
frame=simplegui.create_frame("Task List",400,300)
frame.add_input("new task",new,200)
frame.add_input("remove task number",remove_num,200)
frame.add_input("remove task name",remove_name,200)
frame.add_button("clear all", clear)
frame.set_draw_handler(draw)


# start frame
frame.start()


# encode and decode 字典练习

import simplegui
import random

CI={}
LETTERS="abcdefghijklmnopqrstwvuxyzABCDEFGHIJKLMNOPQRSTWVUXYZ"
message=""
show="Please input a message" # 用show把内容显示在canvas上


# 制作一个简易字典
def init():
    letter_list=list(LETTERS)
    random.shuffle(letter_list)
    for ch in LETTERS:
        CI[ch]=letter_list.pop()
        CI[" "]="1" # 添加空格元素

init() # call it        

# encode button
def encode():
    global show
    emsg=""  
    for ch in message:
        emsg += CI[ch]
    show="encodes to:" +str(emsg) 
    
    
# decode button
def decode():
    global show
    dmsg="" 
    for ch in message:
        for key, value in CI.items():
            if ch == value:
     # 上面两行相当于 
      # for key in CI:
          #  if ch == CI[key]:
               dmsg += key
    show="decodes to:" +str(dmsg)      
        
        
# update message input
def newmsg(msg):
    global message
    message=msg
    label.set_text(msg)
    

# define draw handlers
def draw(canvas):
    canvas.draw_text(show,[20,50],18,"Orange")


#create frame
frame=simplegui.create_frame("code",400,250)
frame.set_draw_handler(draw)
frame.add_input("message",newmsg,200)
frame.add_button("Encode",encode,200)
frame.add_button("Decode",decode,200)
label=frame.add_label("",200)


#start frame
frame.start()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值