python 3.7 及jupyter notebook实现菜鸟教程100例习题61-80,共20道常用例题,推荐使用jupyter notebook IDE,方便每个题目单独执行
61、题目:打印出杨辉三角形。
N = [1]
for i in range(10): #打印10行
print(N)
N.append(0) #每一行打印输出后列表添加0,方便下一行的叠加
N = [N[k] + N[k-1] for k in range(i+2)]
62、题目:查找字符串
str1 = 'abcdefghi'
str2 = 'cd'
print(str1.find(str2)) #输出为查到到的第一个字符所在位置
63、题目:画椭圆。
if __name__ == '__main__':
from tkinter import *
x = 360
y = 160
top = y - 30
bottom = y - 30
canvas = Canvas(width = 400, height = 600, bg = 'white')
for i in range(20):
canvas.create_oval(250-top, 250-bottom,250+top,250+bottom)
top -= 5
bottom += 5
canvas.pack()
mainloop()
64、题目:利用ellipse 和 rectangle 画图
if __name__ == "__main__":
from tkinter import *
canvas = Canvas(width = 400,height = 600,bg = 'white')
left = 20
right = 50
top = 50
num = 15
for i in range(num):
canvas.create_oval(250-right,250-left,250+right,250+left)
canvas.create_oval(250-20,250-top,250+20,250+top)
canvas.create_rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2))
right += 5
left += 5
top += 10
canvas.pack()
mainloop()
65、题目:一个最优美的图案。
import math
from tkinter import *
class PTS:
def __init__(self):
self.x = 0
self.y = 0
points = []
def LineToDemo():
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()
66、题目:输入3个数a,b,c,按大小顺序输出。
a = int(input('请输入第一个数字:'))
b = int(input('请输入第二个数字:'))
c = int(input('请输入第三个数字:'))
if a > b:
if a > c:
if b > c:
print(a,b,c)
else:
print(a,c,b)
else:
print(c,a,b)
else:
if a>c:
print(b,a,c)
else:
if b>c:
print(b,c,a)
else:
print(c,b,a)
67、题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
def fun1(arr):
for i in range(6):
arr.append(int(input('请输入第%s个数字:'%i)))
p = 0
def fun2(arr):
max = 0
for i in range(1,len(arr)-1):
p = i
if arr[p]>arr[max]:
max = p
k = max
arr[0],arr[k] = arr[k],arr[0] #将最大的数字与第一个数位置对换
def fun3(arr):
min = 0
for i in range(1,len(arr)-1):
p = i
if arr[p]<arr[min]:
min = p
l = min
arr[5],arr[l] = arr[l],arr[5]
def fun4(arr):
for i in range(len(arr)):
print(arr[i])
if __name__ == '__main__':
numbers=[]
fun1(numbers)
fun2(numbers)
fun3(numbers)
print('输出')
fun4(numbers)
68、题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数
n = int(input('输入整数的个数为:'))
m = int(input('向后移的位置为:'))
def move(arr,n,m):
arr_end = arr[n-1]
for i in range(n-1,-1,-1):
arr[i] = arr[i-1]
arr[0] = arr_end
m -= 1
if m >0:
move(arr,n,m)
number = []
for i in range(n):
number.append(int(input('请输入一个数字:')))
print('原始列表',number)
move(number,n,m)
print('移动后的列表',number)
69、题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
if __name__ == '__main__':
#将总人数 进行编号并存入num中,1,2,3,4...形式
n = int(input('请输入总人数:'))
num = []
for i in range(n):
num.append(i + 1)
i = 0
k = 0
m = 0
#迭代循环,把报到3并退出的人编号设置为0
while m < n - 1:
if num[i] != 0 :
k += 1
if k == 3:
num[i] = 0
k = 0
m += 1
i += 1
if i == n :
i = 0
i = 0
while num[i] == 0:
i += 1
print(num[i])
70、题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
def length(str):
print(len(str))
if __name__ == '__main__':
a = 'abcdefg'
length(a)
71、题目:编写input()和output()函数输入,输出5个学生的数据记录。
N = 5
student = []
for i in range(N):
student.append(['','',[]])
def input_stu(stu):
for i in range(N):
stu[i][0] = input('input student num:\n')
stu[i][1] = input('input student name:\n')
for j in range(3):
stu[i][2].append(int(input('score:\n')))
def output_stu(stu):
for i in range(N):
print ('%-6s%-10s' % ( stu[i][0],stu[i][1] ))
for j in range(3):
print ('%-8d' % stu[i][2][j])
if __name__ == '__main__':
input_stu(student)
print (student)
output_stu(student)
72、题目:创建一个链表。
str = []
for i in range(5):
num = int(input('请输入一个数字:'))
str.append(num)
print(str)
73、题目:反向输出一个链表。
str1 = [1,2,4,5,6,7,8,9]
str2 = []
for i in range(len(str1)-1,-1,-1):
str2.append(str1[i])
print(str2)
74、题目:列表排序及连接。
a = [1,3,5,7,9]
b = [2,4,6,8,10]
a.sort()
print(a)
print(a+b)
a.extend(b)
print(a)
75、题目:放松一下,算一道简单的题目。
if __name__ == '__main__':
for i in range(5):
n = 0
if i != 1:
n += 1
if i ==3:
n += 1
if i ==4:
n += 1
if i != 4:
n += 1
if n == 3:
print(10+i)
76、题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
n = int(input('请输入一个数字:'))
sum =0.0
if n %2 == 0:
for i in range(2,n+1,2):
sum += 1/i
print(sum)
else:
for i in range(1,n+1,2):
sum += 1/i
print(sum)
77、题目:循环输出列表
list1 = ['dog','cat','pig','fox']
for i in list1:
print(i)
78、题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
person = {'peter':19,'tom':15,'pam':40,'alice':23}
m = 'peter'
for key in person.keys():
if person[m] < person[key]:
m = key
print(m,person[m])
79、题目:字符串排序
str1 = 'dog'
str2 = 'pig'
str3 = 'cat'
if str1 > str2:
str1,str2 = str2,str1
if str1 > str3:
str1,str3 = str3,str1
if str2 > str3:
str2,str3 = str3,str2
print(str1,str2,str3) #从小到大排列
80、题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
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)