python选题_python题目练习

1.计算对称平方数

题目描述

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

输入描述

输出描述

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

ContractedBlock.gif

ExpandedBlockStart.gif

deff(n):

flag=True

sum= n *n

sum_str_list= [i for i instr(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=Falsebreak

else:if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i]:continue

else:

flag=Falsebreak

ifflag:print(n)else:pass

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

f(i)

View Code

2、找出所有三位数组合

题目描述

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

输入描述

输出描述

打印所有三位数组合

ContractedBlock.gif

ExpandedBlockStart.gif

a_list = ['1','2','3','4']defget_num_list(num,arg):

arg.remove(num)returnargfor a ina_list:for b inget_num_list(a,a_list.copy()):if b ==a:continue

else:for c inget_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)))

6.图片验证码生成

import random

from io import BytesIO

from PIL import Image, ImageDraw, ImageFont

class CodeImage(object):

_source = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

_mode = 'RGB'

_bg_color = (255, 255, 240)

def __init__(self,size=(90, 30)):

# 初始化画布,初始化画笔

self._size = size

self.image = Image.new(self._mode, self._size, self._bg_color)

self.draw = ImageDraw.Draw(self.image, self._mode)

def get_color(self):

'''获取随机rgb'''

return (random.randint(64, 200), random.randint(0,200), random.randint(0, 200))

def get_str(self, length):

'''获取随机字符串'''

code = random.sample(self._source, length)

return ''.join(code)

def get_point(self):

'''获取坐标'''

point = (random.randrange(self._size[0])+1,random.randrange(self._size[1]+1))

return point

def draw_text(self,code):

'''画文本内容'''

length = len(code)

font = ImageFont.truetype('Monaco.ttf', self._size[1]-3)

x = 10

y = 0

for i in range(length):

x = i * (self._size[0]/length) + 5

self.draw.text(xy=(x,y),text=code[i],font=font,fill=self.get_color())

def draw_point(self, num):

'''画干扰点'''

for i in range(num):

self.draw.point(xy=self.get_point(), fill=self.get_color())

def draw_line(self):

'''画干扰线'''

for i in range(random.randrange(4)):

self.draw.line((self.get_point(),self.get_point()), fill=self.get_color())

def save_image(self,num=500):

code = self.get_str(4)

self.draw_text(code)

self.draw_line()

self.draw_point(num)

self.image.save('code.jpg')

return code

def save_image_io(self,num=500,image_format='png'):

'''保存图片为io流'''

code = self.get_str(4)

self.draw_text(code)

self.draw_line()

self.draw_point(num)

fp = BytesIO()

self.image.save(fp=fp,format=image_format)

return code,fp

CodeImage().save_image()

7、两数之和

题目描述

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

输入描述

nums = [2, 7, 11, 15], target = 9

输出描述

[0,1]

def twoSum(self, nums: List[int], target: int) -> List[int]:

for i in range(len(nums)):

num = target - nums[i]

for j in range(i+1,len(nums)):

if nums[j] == num:

return [i,j]

return []

方式二

class Solution:

def twoSum(self, nums: List[int], target: int) -> List[int]:

adict = {}

for i,item in enumerate(nums):

num = target - item

if num in adict.keys():

return [i,adict.get(num)]

adict.update({item:i})

return []

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值