【菜鸟教程】Python 100例编程题--适合新手(4)

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)
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值