python编程实战

1.计算对称平方数

题目描述

打印所有不超过n(n<256)的,其平方具有对称性质的数,如11*11=121。

输入描述

输出描述

每行一个数,表示对称平方数

def f(n):
    flag = True
    sum = n * n
    sum_str_list = [i for i in str(sum)]
    a, b = divmod(len(str(sum)), 2)
    for i in range(0,len(sum_str_list)//2):
        if b > 0:
            if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i+1]:
                continue
            else:
                flag = False
                break
        else:
            if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i]:
                continue
            else:
                flag = False
                break
    if flag:
        print(n)

    else:
        pass


if __name__ == '__main__':
    for i in range(1, 257):
        f(i)
View Code

2、找出所有三位数组合

题目描述

有1、2、3、4四个数字,要求任选三个,组成一个三位数,每位数字各不相同,输出所有三位数组合。

输入描述

输出描述

打印所有三位数组合

a_list = ['1','2','3','4']


def get_num_list(num,arg):
    arg.remove(num)
    return arg

for a in a_list:
    for b in get_num_list(a,a_list.copy()):
        if b == a:
            continue
        else:
            for c in get_num_list(b,a_list.copy()):
                if c == a or c == b :
                    continue
                else:
                    print(c + a + b)
                    print(a + c + b)
                    print(c + b + a)
                    print(a + b + c)
                    print(b + a + c)
                    print(b + c + a)
View Code

 

2、找出所有三位数组合(改良)

上述程序输出有点繁琐,改良如下。

1 for i in range(1,5):
2     for j in range(1,5):
3         for k in range(1,5):
4             if i!=k and i!=j and j!=k:
5                 print(i,j,k)

 

3、斐波那契数列

题目描述

打印0,1,1,2,3,5,......

输入描述

 

输出描述

输出0,1,1,3,5,......规律的数

def feibo(n):
    if n == 0:
        return 0
    if n==1:
        return 1
    return feibo(n-1)+feibo(n-2)

for i in range(10):
    print(feibo(i))

 

3、字符串查找

题目描述

给一字符串,查找字符串出现最多的字符,并打印该字符。

输入描述

 输入一个字符串

输出描述

输出该字符传出现次数最多的字符

def get_str_dict(string):
    str_dict = {}
    for s in string:
        if s in str_dict.keys():
            str_dict[s] += 1
        else:
            str_dict[s] = 1
    return str_dict

def get_max_str_value(str_dict):
    count = 0
    s_char = ''
    for key, value in str_dict.items():
        if value > count:
            count = value
            s_char = key
    return s_char, count


if __name__ == "__main__":
    string = input('>>:').strip()
    str_dict = get_str_dict(string)
    s,count = get_max_str_value(str_dict)
    print(s,count)

 

4、日期累加

题目描述

设计一个程序能计算一个日期加上若干天后是什么日期。

输入描述

输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。

输出描述

输出m行,每行按yyyy-mm-dd的个数输出。
import sys
import datetime

def add_time(year,month,day,add_days):
    in_time = datetime.date(year=year,month=month,day=day)

    add_time = datetime.timedelta(days=add_days)
    out_time = in_time + add_time
    print(out_time)


if __name__ == "__main__":
    n = sys.stdin.readline().strip()
    for i in range(int(n)):
        in_str = sys.stdin.readline().strip().split()
        add_time(int(in_str[0]), int(in_str[1]),int(in_str[2]),int(in_str[3]))

  

5、贴邮票

题目描述

某人有8 角的邮票5 张,1 元的邮票4 张,1 元8 角的邮票6 张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?

输入描述

输出描述

输出一行,表示题目所求。
a_list = []
for i in range(6):
    for j in range(5):
        for k in range(7):
            a_list.append(i*8+j*10+k*18)
print(len(set(a_list)))

  



转载于:https://www.cnblogs.com/snow-wolf-1/p/10558872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值