基础练习-5

基础练习-5

1. 打印出杨辉三角形(要求打印出10行如下图)。

程序分析:无。
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()

# 以上实例输出结果为:
'''
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1
'''

2. 查找字符串。

程序分析:无。
sStr1 = 'abcdefg'
sStr2 = 'cde'
print( sStr1.find(sStr2))

# 以上实例输出结果为:
'''
2
'''

3. 画椭圆。

程序分析:使用 Tkinter。

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()

4. 利用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()

5. 一个最优美的图案。

程序分析:无。

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()

6. 输入3个数a,b,c,按大小顺序输出。

程序分析:无。
if __name__ == '__main__':
    n1 = int(input('n1 = :\n'))
    n2 = int(input('n2 = :\n'))
    n3 = int(input('n3 = :\n'))
 
    def swap(p1,p2):
        return p2,p1
 
    if n1 > n2 : n1,n2 = swap(n1,n2)
    if n1 > n3 : n1,n3 = swap(n1,n3)
    if n2 > n3 : n2,n3 = swap(n2,n3)
 
    print( n1,n2,n3)

# 以上实例输出结果为:
'''
n1 = :
123
n2 = :
456
n3 = :
789
123 456 789
'''

7. 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

程序分析:无。
def inp(numbers):
    for i in range(6):
        numbers.append(int(input('输入一个数字:\n')))
p = 0
 
def arr_max(array):
    max = 0
    for i in range(1,len(array) - 1):
        p = i
        if array[p] > array[max] : max = p
    k = max
    array[0],array[k] = array[k],array[0]
def arr_min(array):
    min = 0
    for i in range(1,len(array) - 1):
        p = i
        if array[p] < array[min] : min = p
    l = min
    array[5],array[l] = array[l],array[5]
 
def outp(numbers):
    for i  in range(len(numbers)):
        print( numbers[i])
 
if __name__ == '__main__':
    array = []
    inp(array)        # 输入 6 个数字并放入数组
    arr_max(array)    # 获取最大元素并与第一个元素交换
    arr_min(array)    # 获取最小元素并与最后一个元素交换
    print( '计算结果:')
    outp(array)

# 以上实例输出结果为:
'''
输入一个数字:
1
输入一个数字:
2
输入一个数字:
3
输入一个数字:
7
输入一个数字:
9
输入一个数字:
8
计算结果:
9
2
3
7
8
1
'''

8. 有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数

程序分析:无。
if __name__ == '__main__':
    n = int(input('整数 n 为:\n'))
    m = int(input('向后移 m 个位置为:\n'))
 
    def move(array,n,m):
        array_end = array[n - 1]
        for i in range(n - 1,-1,- 1):
            array[i] = array[i - 1]
        array[0] = array_end
        m -= 1
        if m > 0:move(array,n,m)
        
    number = []
    for i in range(n):
        number.append(int(input('输入一个数字:\n')))
    print( '原始列表:',number)
 
    move(number,n,m)
 
    print( '移动之后:',number)

# 以上实例输出结果为:
'''
整数 n 为:
8
向后移 m 个位置为:
5
输入一个数字:
2
输入一个数字:
8
输入一个数字:
6
输入一个数字:
1
输入一个数字:
78
输入一个数字:
45
输入一个数字:
34
输入一个数字:
2
原始列表: [2, 8, 6, 1, 78, 45, 34, 2]
移动之后: [1, 78, 45, 34, 2, 2, 8, 6]
'''

9. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

程序分析:无。
if __name__ == '__main__':
    nmax = 50
    n = int(input('请输入总人数:'))
    num = []
    for i in range(n):
        num.append(i + 1)
 
    i = 0
    k = 0
    m = 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])

# 执行以上代码,输出结果:
'''
$ python test.py 
请输入总人数:34
10
'''

10. 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

程序分析:无。
if __name__ == '__main__':
    s = input('please input a string:\n')
    print( 'the string has %d characters.' % len(s))

# 以上实例输出结果为:
'''
please input a string:
abc
the string has 3 characters.
'''

11. 编写input()和output()函数输入,输出5个学生的数据记录。

程序分析:无。
N = 3
#stu
# num : string
# name : string
# score[4]: list
student = []
for i in range(5):
    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)

# 以上实例输出结果为:
'''
input student num:
2
input student name:
aaa
score:
89
score:
98
score:
67
input student num:
bbb
input student name:
ccc
score:
87
score:
45
score:
68
input student num:
ddd
input student name:
eee
score:
56
score:
78
score:
56
[['2', 'aaa', [89, 98, 67]], ['bbb', 'ccc', [87, 45, 68]], ['ddd', 'eee', [56, 78, 56]], ['', '', []], ['', '', []]]
2     aaa       
89      
98      
67      
bbb   ccc       
87      
45      
68      
ddd   eee       
56      
78      
56
'''

12. 创建一个链表。

程序分析:无。 
if __name__ == '__main__':
    ptr = []
    for i in range(5):
        num = int(input('please input a number:\n'))
        ptr.append(num)
    print( ptr)

# 以上实例输出结果为:
'''
please input a number:
3
please input a number:
5
please input a number:
7
please input a number:
8
please input a number:
2
[3, 5, 7, 8, 2]
'''

13. 反向输出一个链表。

程序分析:无。
if __name__ == '__main__':
    ptr = []
    for i in range(5):
        num = int(input('please input a number:\n'))
        ptr.append(num)
    print( ptr)
    ptr.reverse()
    print( ptr)

# 以上实例输出结果为:
'''
please input a number:
6
please input a number:
5
please input a number:
3
please input a number:
4
please input a number:
8
[6, 5, 3, 4, 8]
[8, 4, 3, 5, 6]
'''

14. 列表排序及连接。

程序分析:排序可使用 sort() 方法,连接可以使用 + 号或 extend() 方法。
if __name__ == '__main__':
    a = [1,3,2]
    b = [3,4,5]
    a.sort()     # 对列表 a 进行排序
    print( a)
 
    # 连接列表 a 与 b
    print( a+b)
    
    # 连接列表 a 与 b
    a.extend(b)
    print( a)
    
 '''   
[1, 2, 3]
[1, 2, 3, 3, 4, 5]
[1, 2, 3, 3, 4, 5]
'''

15. 放松一下,算一道简单的题目。

程序分析:无。
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( 64 + i)

# 以上实例输出结果为:
'''
67
'''

16. 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n

程序分析:无。
def peven(n):
    i = 0
    s = 0.0
    for i in range(2,n + 1,2):
        s += 1.0 / i   # Python里,整数除整数,只能得出整数,所以需要使用 浮点数 1.0
    return s
 
def podd(n):
    s = 0.0
    for i in range(1, n + 1,2):
        s += 1.0 / i    # Python里,整数除整数,只能得出整数,所以需要使用 浮点数 1.0
    return s
 
def dcall(fp,n):
    s = fp(n)
    return s
 
if __name__ == '__main__':
    n = int(input('input a number:\n'))
    if n % 2 == 0:
        sum = dcall(peven,n)
    else:
        sum = dcall(podd,n)
    print( sum)

#以上实例输出结果为:
'''
input a number:
6
0.916666666667
'''

17. 循环输出列表

程序分析:无。
if __name__ == '__main__':
    s = ["man","woman","girl","boy","sister"]
    for i in range(len(s)):
        print( s[i])

# 以上实例输出结果为:
'''
man
woman
girl
boy
sister
'''

18. 找到年龄最大的人,并输出。请找出程序中有什么问题。

程序分析:无。
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]))

# 以上实例输出结果为:
'''
wang,50
'''

19. 字符串排序。

程序分析:无。
if __name__ == '__main__':
    str1 = input('input string:\n')
    str2 = input('input string:\n')
    str3 = input('input string:\n')
    print( str1,str2,str3)
    
    if str1 > str2 : str1,str2 = str2,str1
    if str1 > str3 : str1,str3 = str3,str1
    if str2 > str3 : str2,str3 = str3,str2
 
    print( 'after being sorted.')
    print( str1,str2,str3)

# 以上实例输出结果为:
'''
input string:
abcde
input string:
efdis
input string:
adk
abcde efdis adk
after being sorted.
abcde adk efdis
'''

20. 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

程序分析:无。
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)

# 以上实例输出结果为:
'''
3121
'''

你可能感兴趣的:(python,前端,linux)