学会画直线:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
from Tkinter import *
canvas = Canvas(width=300, height=300, bg='green')
canvas.pack(expand=YES, fill=BOTH)
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_line(x0, y0, x0, y1, width=1, fill='red')
x0 = x0 - 5
y0 = y0 - 5
x1 = x1 + 5
y1 = y1 + 5
x0 = 263
y1 = 275
y0 = 263
for i in range(21):
canvas.create_line(x0, y0, x0, y1, fill='red')
x0 += 5
y0 += 5
y1 += 5
mainloop()#mainloop()就是一直不停地循环啊,之后的程序只有在你关掉弹出窗口之后才运行。
画图,学用rectangle画方形。
#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': from Tkinter import * root = Tk() root.title('Canvas') canvas = Canvas(root, width=400, height=400, bg='yellow') x0 = 263 y0 = 263 y1 = 275 x1 = 275 for i in range(19): canvas.create_rectangle(x0, y0, x1, y1) x0 -= 5 y0 -= 5 x1 += 5 y1 += 5 canvas.pack() root.mainloop()
画图,综合例子。
#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': from Tkinter import * canvas = Canvas(width=300, height=300, bg='green') canvas.pack(expand=YES, fill=BOTH) x0 = 150 y0 = 100 canvas.create_oval(x0 - 10, y0 - 10, x0 + 10, y0 + 10) canvas.create_oval(x0 - 20, y0 - 20, x0 + 20, y0 + 20) canvas.create_oval(x0 - 50, y0 - 50, x0 + 50, y0 + 50) import math B = 0.809 for i in range(16): a = 2 * math.pi / 16 * i x = math.ceil(x0 + 48 * math.cos(a)) y = math.ceil(y0 + 48 * math.sin(a) * B) canvas.create_line(x0, y0, x, y, fill='red') canvas.create_oval(x0 - 60, y0 - 60, x0 + 60, y0 + 60) for k in range(501): for i in range(17): a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k x = math.ceil(x0 + 48 * math.cos(a)) y = math.ceil(y0 + 48 + math.sin(a) * B) canvas.create_line(x0, y0, x, y, fill='red') for j in range(51): a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k - 1 x = math.ceil(x0 + 48 * math.cos(a)) y = math.ceil(y0 + 48 * math.sin(a) * B) canvas.create_line(x0, y0, x, y, fill='red') mainloop()
打印出杨辉三角形(要求打印出10行如下图)。
#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in range(10): a[i].append(0) for i in range(10): a[i][0] = 1 a[i][i] = 1 for i in range(2, 10): for j in range(1, i): a[i][j] = a[i - 1][j - 1] + a[i - 1][j] from sys import stdout for i in range(10): for j in range(i + 1): stdout.write(str(a[i][j])) stdout.write(' ') print
一个最优美的图案。
#!/usr/bin/python # -*- coding: UTF-8 -*- import math class PTS: def __init__(self): self.x = 0 self.y = 0 points = [] def LineToDemo(): from Tkinter import * screenx = 400 screeny = 400 canvas = Canvas(width = screenx,height = screeny,bg = 'white') AspectRatio = 0.85 MAXPTS = 15 h = screeny w = screenx xcenter = w / 2 ycenter = h / 2 radius = (h - 30) / (AspectRatio * 2) - 20 step = 360 / MAXPTS angle = 0.0 for i in range(MAXPTS): rads = angle * math.pi / 180.0 p = PTS() p.x = xcenter + int(math.cos(rads) * radius) p.y = ycenter - int(math.sin(rads) * radius * AspectRatio) angle += step points.append(p) canvas.create_oval(xcenter - radius,ycenter - radius, xcenter + radius,ycenter + radius) for i in range(MAXPTS): for j in range(i,MAXPTS): canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y) canvas.pack() mainloop() if __name__ == '__main__': LineToDemo()
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
#usr/bin/env python #coding:utf-8 a=[1,2,3,7,9,8] print a # 最小的放到最后 min = min(a) a.remove(min) a.append(min) # 最大的放到最前面 max = max(a) a.remove(max) a.insert(0,max) print a
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
#!/usr/bin/env python3 # -*- coding: utf-8 -*- a = [1, 2, 3, 4, 5] # 测试列表 m = 3 # 设置向后移动 3 位 for _ in range(m): a.insert(0, a.pop()) print(a)
找到年龄最大的人,并输出。 #!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22} m = 'li' for key in person.keys(): if person[m] < person[key]: m = key print '%s,%d' % (m, person[m])
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': i = 0 j = 1 x = 0 while (i < 5): x = 4 * j for i in range(0, 5): if (x % 4 != 0): break else: i += 1 x = (x / 4) * 5 + 1 j += 1 print x
809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 809 for i in range(10, 100): b = i * a if b >= 1000 and b < 10000 and 8 * i < 100 and 9 * i >= 100: print b, ' = 800 * ', i, ' + 9 * ', i