Python经典基础编程练习题(四)——每日10题

1.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

解题思路:注意分子分母的规律

a = 2.0
b = 1.0
s = 0
for n in range(1,21):
    s += a / b
    t = a
    a = a + b
    b = t
print (s)

2.1+2!+3!+...+20!的和

n = 0
s = 0
t = 1
for n in range(1,21):
    t *= n
    s += t
print ('1! + 2! + 3! + ... + 20! = %d' % s)

3.利用递归方法求5!

sum=0
def digui(n):
    if n==0:
        sum=1
    else:
        sum=n*digui(n-1)
    return sum

print(digui(5))

4.利用递归函数调用方式,将所输入的n个字符,以相反顺序打印出来

def out(s,n):
    if n == 0:
        return
    else:
        print(s[n-1],end=' ')
        out(s,n-1)

s=input('请输入:')
#s=s.split(',')
n= len(s)
out(s,n)

5.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大

解题思路:递归

def age(n):
    if n == 1:
        a=10
    else:
        a=age(n-1)+2
    return a
print(age(5))

6.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字

解题思路:用栈的思想

def jisuan(n):
    l=[]
    while n!=0:
        a=n%10
        l.append(a)
        n=n//10
    return l

n=int(input('请输入:'))
l=jisuan(n)
a= len(l)
for i in range(a):
    print(l[i],end=' ')

7.判断一个5位数是不是回文数

str=input('请输入:')
a=int(str)
t=1
for i in range(5//2):
    if str[i] != str[5-i-1]:
        t=0
        break
if t:
    print('%d 是一个回文数' % a)
else:
    print('%d 不是一个回文数' % a)

8.输出指定格式的日期

解题思路:了解datetime的方法

import datetime

if __name__ == '__main__':
    # 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法
    print(datetime.date.today().strftime('%d/%m/%Y'))

    # 创建日期对象
    miyazakiBirthDate = datetime.date(1998,3,18)

    print(miyazakiBirthDate.strftime('%d/%m/%Y'))

    # 日期算术运算
    miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)

    print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))

    # 日期替换
    miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)

    print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))

9.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

解题思路:利用三层循环,分别代表a,b,c三人从(x,y,z)中各选一人,利用题中条件。

t=0
for i in range(ord('x'),ord('z') + 1):#a选手
    for j in range(ord('x'),ord('z') + 1):#b选手
        if i != j:
            for k in range(ord('x'),ord('z') + 1):#c选手
                    if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):#如果a不和x,c不和x和z
                        print('order is a -- %s\t b -- %s\tc -- %s' % (chr(i), chr(j), chr(k)))
                        t=1
                        break
        if t==1:
            break
    if t==1:
        break

10.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

letter = input("please input:")
if letter == 'S':
    letter = input("please input second letter:")
    if letter == 'a':
        print('Saturday')
    elif letter == 'u':
        print('Sunday')
    else:
        print('data error')

elif letter == 'F':
    print('Friday')

elif letter == 'M':
    print('Monday')

elif letter == 'T':
    letter = input("please input second letter:")

    if letter == 'u':
        print('Tuesday')
    elif letter == 'h':
        print('Thursday')
    else:
        print('data error')

elif letter == 'W':
    print('Wednesday')
else:
    print('data error')

 

你可能感兴趣的:(Python编程练习)