python基础题目示例


刚进入python期间做的一些题,有在网上找到的题也有一些课程题目,
这些题吧 对于各位大牛来说不值一提,但是对于我们这些小新新来说我感觉还是不错的,望大牛手下留情。
不过,还是求教大牛们,能抽出宝贵的时间,扩展下各种思路。

下面就是一些题了:




1、
    1+2+3+...+100=?
i = 1
s = 0

while i <= 100:
    # print(i)
    s = s + i
    i += 1
print(s)

2、输出随机四位验证码

import random
# string_type: 0:纯数字;1:纯字母;2:字母数字混合
def random_string(length=4, string_type=0):
    yzm = ''
    if string_type == 0:
        for i in range(length):
            yzm += str(random.randint(0, 9))
    elif string_type == 1:
        for i in range(length):
            yzm += chr(random.randint(ord('a'),ord('z')))
    elif string_type == 2:
        for i in range(length):
            t = random.randint(0, 2)
            if t == 0:      # 数字
                yzm += str(random.randint(0, 9))
            elif t == 1:    # 小写字母
                yzm += chr(random.randint(ord('a'), ord('z')))
            elif t == 2:    # 大写字母
                yzm += chr(random.randint(ord('A'), ord('Z')))
    else:
        return '8' * length

    return yzm

print(random_string(length=4, string_type=1))

3、扑克牌

题意:小明有两张扑克,双手各拿一张,现在两手的牌交换,打印出此刻两手拿的什么牌

# 扑克牌
class Poker:
    def __init__(self, color, number):
        self.color = color
        self.number = number

    def __str__(self):
        return '{}{}'.format(self.color, self.number)


# 创建两张牌
p1 = Poker('♥', 'K')
p2 = Poker('♠', 'A')


# 手的类
class Hand:
    def __init__(self, poker):
        self.poker = poker

    def hold_poker(self, poker):
        self.poker = poker


# 创建左右两只手的对象
left_hand = Hand(p1)
right_hand = Hand(p2)


# 人的类
class Person:
    def __init__(self, name, left_hand, right_hand):
        self.name = name
        self.left_hand = left_hand
        self.right_hand = right_hand

    # 展示手里的牌
    def show(self):
        print('{}张开手'.format(self.name))

        print('左手:{}'.format(self.left_hand.poker))
        print('右手:{}'.format(self.right_hand.poker))

    # 交换两手的牌
    def swap(self):
        self.left_hand.poker, self.right_hand.poker = self.right_hand.poker, self.left_hand.poker

        print('{}交换两手的牌'.format(self.name))


# 创建小明对象
xiaoming = Person('小明', left_hand, right_hand)

# 展示手里的牌
xiaoming.show()

# 小明交换牌
xiaoming.swap()

# 再次展示
xiaoming.show()

4、简易用户登录

error_num = 0
while True:
    username = input("请输入用户名:")
    password = input("请输入密码:")
    if username == 'seven' and password == '123':
        print("登录成功")
        break
    else:
        print("登录失败")
        error_num += 1
        if error_num == 3:
            exit()
      else:
            continue

5、正则解析

import re

 #url  用正则解析

c = re.compile(r'(https|http)//:(\w+\.){2,}\w+:\d+(\?(&?\w+=\w+)+)?')
s = c.search('https//:www.baidu.com:80?name=xiaoming&age=18')
if s :
    print('OK')
    print(s.group())

c = re.compile(r'http://(\w+\.){2,}\w+(/\w+/(-?\w+)+)?\.html$')

s = c.search('http://www.runoob.com/bootstrap/bootstrap-tutorial.html')
if s:
    print('OK')
    print(s.group())


c = re.compile(r'(https|http)://(\w+\.){2,}\w+(/\w+)+\.\w+(\?(=?\w+)+)?(\.\w+)+')
s = c.search('https://v.qq.com/x/cover/b9ft3bzwn67twwp/b0026_zcd1po.html?ptag=sogou.tv.free')
if s:
    print('ok')
    print(s.group())

6、输入年份,判断是否为闰年

year = int(input('输入一个年份:'))
if (year %4 == 0) and (year %100 == 0) or (year %400 == 0):
    print('是闰年。')
else:
    print('不是闰年')

7、输入三位数,打印个、十百位

  n = int(input( '输入任意三位数字:'))  #123
  n2 = n//100        #百位  1
  n3 = n//10%10            #十位
  n4 = n%10%10                  #个位
  print('百位是:{},十位是:{},个位是:{}'.format(n2,n3,n4))

8、输出较大的数

num1 = input('数字一:')
num2 = input('数字二:')
if num1 > num2 :
    print( '{}是较大的数'.format(num1))
else:
    print('{}是较大的数'.format( num2))

9、列表依次递增

'''输入一个数字5,效果如下
1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 
'''
n = int(input('输入一个数字'))#思路一j = 1while j <= n : i = 1 while i <= j : print(i , end=' ') i += 1 print() j += 1==================================#思路二n = int(input('输入一个数字'))for i in range(1, n+1): for j in range(1, i+1): print(j, end=' ') print()

10、号码查询

# 事例
s = '''5582|1860101|010|北京市|北京联通GSM卡
5584|1368141|010|北京市|北京移动神州行卡
5585|1860111|010|北京市|北京联通GSM卡
5586|1358198|010|北京市|北京移动动感地带卡
17250|1502207|022|天津市|天津移动全球通卡
44521|1335360|0370|河南省商丘市|河南电信CDMA卡'''
string_list = s.splitlines()

# 保存所有的数据
area = {}

for string in string_list:
    # 60268|1340475|0431|吉林省长春市|吉林移动大众卡
    # 按照'|'进行切割
    lt = string.split('|')
    # 保存数据
    area[lt[1]] = lt[-1]

while True:
    num = input('请输入你要查询的号码(至少前7位):')

    if len(num) < 7:
        print('您输入的号码位数不够,请重新输入')
        continue
    # 只要前7位
    num = num[:7]

    if not num.isdecimal():
        print('你输入的号码有非数字字符,请重新输入')
        continue

    if num in area:
        print(area[num])
    else:
        print('未知号码')

11、#判断下边两个人的名字是否存在字典里

#判断下边两个人的名字是否存在字典里

dic1="Man"
dic2="Lose"
dict1 = {'boy1':'dave','Man':'boy2','boy3':'anqing'}

if dic1 in dict1:
    print('Man存在')
else:
    print('Man不存在')
if dic2 in dict1:
        print('Lose存在')
else:
        print('Lose不存在')

##########################
if key in dict:
    print('key存在')
else:
    print('key不存在')

12、客户端向服务器发送信息

#客户端
import socket

skt = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
    #从终端获取输入
    data = input('>>>:')
    #发送获取的数据
    skt.sendto(data.encode('utf-8'),('X.X.X.X',XXXX))
    #获取服务器发来的数据,格式:(数据,(主机host,端口port))
    recv_data, server_addr = skt.recvfrom(1024)
    print('服务器:::',recv_data.decode('utf-8'))


#服务器
import socket

skt = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
skt.bind(('X.X.X.X',XXXX))
while True:
    #阻塞等待接收客户端的数据
    recv_data,client_addr = skt.recvfrom(1024)
    #打印客户端发来的数据
    print(client_addr,recv_data.decode('utf-8'))
    #收到什么就回复什么
    skt.sendto(recv_data,client_addr)
skt.close()

13、设计一个数学类,方法有加减乘除,并能展示结果

class Math:
    def __init__(self,numberone,numbertwo):
        self.numberone = numberone
        self.numbertwo = numbertwo

    def __str__(self):
            return '加得到的数字为:{};' \
                   '减得到的数字为:{};' \
                   '乘得到的数字为:{};' \
                   '除得到的数字为:{}'\
                       .format(self.numberone + self.numbertwo,
                               self.numberone - self.numbertwo,
                               self.numberone * self.numbertwo,
                               self.numberone % self.numbertwo)
m1 = Math(1,2)
print(m1)

14、整理目录文档

import os
import shutil


def deal(dir):
    if not os.path.isdir(dir):
        print(dir, '不是目录,无法整理')
        return
    dirs = os.listdir(dir)

    for f in dirs:
        # 拼接文件名
        file_name = os.path.join(dir, f)
        # 分类处理
        if os.path.isdir(file_name):     #是目录
             #拼接DIRS目录
            DIRS = os.path.join(dir, 'DIRS')
             #DIRS目录不存在则创建
            if not os.path.exists(DIRS):
                os.mkdir(DIRS)
            shutil.move(file_name, DIRS)
        else:    #是文件
             #按照'.'进行切割
            lt = file_name.rsplit('.', 1)
             #判断是否有后缀
            if len(lt) == 1:     #没有后缀
                OTHERS = os.path.join(dir, 'OTHERS')
                if not os.path.exists(OTHERS):
                    os.mkdir(OTHERS)
                shutil.move(file_name, OTHERS)
            else:            #有后缀
                SUFFIX = os.path.join(dir, lt[1].upper())
                if not os.path.exists(SUFFIX):
                    os.mkdir(SUFFIX)
                shutil.move(file_name, SUFFIX)


deal('test')

15、文件目录转移

import os

def move(src,dst):
    if os.path.abspath(src) == os.path.abspath(dst):
        print('地址相同无效')
        return
    if os.path.isfile(src):
        src_fp = open(src,'r')
        dst_fp = open(dst,'w')
        content = src_fp.read(1024)
        while content:
            dst_fp.write(content)
            content = src_fp.read(1024)
            break
        src_fp.close()
        dst_fp.close()
        os.remove(src)
    else:
        if  not os.path.exists(dst):
            os.makedirs(dst)

        dirs = os.listdir(src)
        for f in dirs :
            src_filt = os.path.join(src,f)
            dst_filt = os.path.join(dst,f)
            move(src_filt,dst_filt)
        os.rmdir(src)

move('111.txt','456.txt')

16、歌词解析

s = '''[ti:蓝莲花]
[ar:许巍]
[al:留声十年绝版青春北京演唱会]
[00:-01.70]蓝莲花
[00:-00.70]演唱:许巍
[00:00.00]
[00:00.70]没有什么能够阻挡
[00:06.01]你对自由的向往
[00:11.43]天马行空的生涯
[00:16.99]你的心了无牵挂
[00:21.20]
[02:11.55][01:50.60][00:22.63]穿过幽暗的岁月
[02:16.93][01:55.60][00:27.81]也曾感到彷徨
[02:22.21][02:01.09][00:33.13]当你低头的瞬间
[02:27.62][02:06.33][00:38.32]才发觉脚下的路
[02:31.64][02:10.23][00:42.37]
[02:32.97][00:43.79]心中那自由的世界
[02:38.23][00:49.50]如此的清澈高远
[02:43.30][00:54.31]盛开着永不凋零
[02:47.70][00:58.50]蓝莲花
[02:53.95][03:00.06][01:05.41]
'''

#保存歌曲信息
song_dict = {}

 #保存歌词信息
lrc_dict = {}

string_list = s.splitlines()   #换行切割

for string in string_list:
    if string[1].isdecimal():  #判断是否数字
         [02:11.55][01:50.60][00:22.63]穿过幽暗的岁月
        # 按照']'切割字符串
        lrc_list = string.split(']')
        # 提取歌词信息
        lrc_info = lrc_list[-1]
        # 提取时间信息
        time_list = lrc_list[:-1]
        # 遍历时间列表
        for time_string in time_list:
             [02:22.21
            # 去掉左边的'['
            time_string = time_string.strip('[')
            # 按照':'进行切割
            time_info_list = time_string.split(':')
            # 提取分钟
            time_min = float(time_info_list[0])
            # 提取秒数
            time_sec = float(time_info_list[1])
             #合并在一起
            time_info = time_min * 60 + time_sec
            # 将秒数作为键,歌词作为值保存到字典中
            lrc_dict[time_info] = lrc_info
    else:
         #[ti:蓝莲花]
         #去掉两边的[]
        string = string.strip('[]') 
        # 按照':'进行切割
        info_list = string.split(':')
        if info_list[0] == 'ti':
            song_dict['标题'] = info_list[1]
        elif info_list[0] == 'ar':
            song_dict['艺术家'] = info_list[1]
        elif info_list[0] == 'al':
            song_dict['专辑'] = info_list[1]

# 提取歌词信息中所有的键(时间戳)
time_list = list(lrc_dict.keys())

# 倒序排序
time_list.sort(reverse=True)

# 封装函数显示歌曲信息
def show_song_info(info_dict):
    for key in info_dict:
        print(key, ':', info_dict[key])

import time
import os

t = 0
while True:
    for i in time_list:
        if i < t:
            os.system('cls')
            show_song_info(song_dict)
            print(lrc_dict[i])
            break
    t += 0.5
    time.sleep(0.5)

17、猜数字

#题目:生成变量D 为5时 为对,否则为错
#这也可以说成一个小小小游戏
error=True
while error:
    d = input("猜数字:")
    if d == "5":
        print("对")
        error=False
    else:
        print("错")
        continue
    print("结束")

18、企业发放的奖金根据利润提成。

# 题目:企业发放的奖金根据利润提成。
# 利润(I)低于或等于10万元时,奖金可提10%;
# 利润高于10万元,低于20万元时,
# 低于10万元的部分按10%提成,
# 高于10万元的部分,可提成7.5%;
# 20万到40万之间时,高于20万元的部分,可提成5%;
# 40万到60万之间时高于40万元的部分,可提成3%;
# 60万到100万之间时,高于60万元的部分,可提成1.5%,
# 高于100万元时,超过100万元的部分按1%提成,
# 从键盘输入当月利润I,求应发放奖金总数?


i = int(input('请输入奖金:'))
if i <= 100000:
    print('应得的净利润:',i*0.1)
elif 100000 < i <=200000:
    print('应得的净利润:',i * 0.075)
elif 200000 < i <= 400000:
    print('应得的净利润:',i * 0.05)
elif 400000 < i <= 600000:
    print('应得的净利润:',i * 0.03)
elif 600000 < i <= 1000000:
    print('应得的净利润:',i * 0.015)
elif 1000000 < i :
    print('应得的净利润:',i * 0.01)

19、 打印目录中的内容

# 打印目录中的内容
def print_directory_contents(path):
    import os
    #首先读取目录path
    t = os.listdir(path)
    for i in t:
        #进行拼接
        i_name = os.path.join(path,i)
        #拼接后 判断是否为普通文件
        if os.path.isfile(i_name):
            print(i_name)
        else:
            print_directory_contents(i_name)
print_directory_contents('aaa')
20、列表去重,要求返回新的去重后的列表
# 列表去重,要求返回新的去重后的列表
def duplicate_removal(lt):
    n = len(lt)
    for i in n :
        for j in i :
            if j in lt[j:]:
                lt.remove(j)
    return lt

def remove_repet(lt):
    l1 = list(set(lt))
    l1.sort(key=lt.index)
    print(l1)
l= [1, 2, 3, 2, 4, 3]
remove_repet(l)

21、去除列表中的空白元素,要求返回新的列表

def remove_space(lt):
    for i in lt:
        if i == '':
            lt.remove(i)
    return lt

22、 封装函数

# 封装函数:时间信息
2018-02-04  18:23:35
# 解析成字典形式的结果,如:
# {‘year’:2018,‘month’:2,‘day’:4,‘hour’:18:‘minute’:23,‘second’:35}
# 时间字符串转字典
def str_to_dict():
    s = '2018-02-04  18:23:35'
    l = s.split()
    d_time = {}
    t = l[0].split('-')
    u = l[1].split(':')
    d_time['year'] = t[0]
    d_time['month']= t[1]
    d_time['day'] = t[2]
    d_time['hour'] = u[0]
    d_time['minute'] = u[1]
    d_time['second'] = u[2]
    return d_time
print(str_to_dict())

23、封装一个装饰器,打印函数运行时间


def show_run_time(func):
    import time
    l = time.time()
    print('开始')
    func()
    l2 = time.time()
    print('结束')
    d = (l2 - l)
    return '此次的时间差是{}'.format(d)
24、
#题目:输入三个整数 x,y,z,
# 请把这三个数由小到大输出

x = int(input('输入第一个数:'))
y = int(input('输入第二个数:'))
z = int(input('输入第三个数:'))

if x>y:
    x,y = y,x
if x>z:
    x,z = z,x
if y>z :
    y,z = z,y
print(x,y,z)




===================================
#思路二
#创建一个空列表,输入数字输入到空列表内,最后列表正序

l = []

for i in range(3):
    x = int(input('输入数字:'))
    l.append(x)
l.sort()
print(l)

==========================================
#思路三
#创建个空列表,三个数字添加进去,进行排序,输出列表
x = int(input('输入第一个数:'))
y = int(input('输入第二个数:'))
z = int(input('输入第三个数:'))

m = [x,y,z]
m.sort()
print(m)

===================================
#思路四
#输入三个数字,切割为三个字符串,列表遍历转换整数,正序打印
num = input('输入三个数字,如a,b,c :')
l1 = num.split(',')
l2 = [int(i) for i in l1]
l2.sort()
print(l2)

25、输入三个整数 x,y,z

#输出9*9口诀表

for i in range(1,10):
    for j in range(1,i+1):
        print('{}x{}={}'.format(j,i,j*i),end=' ')
    print()

============================================
#思路二


for j in range(9):
    i = 1
    j = j + 1
    while(i<=j):
        s = j*i
        print('%dx%d=%d'%(i,j,s),end=' ')
        i = i + 1
    print(' ')
26、列表排序 选择法

#l = [1, 9, 4, 2, 0, 8, 3, 7]
#     1, 4, 2, 0, 8, 3, 7, 9
#     1, 2, 0, 4, 3, 7, 8
#     1, 0, 2, 3, 4, 7
#     0, 1, 2, 3, 4,

l = [5,8,9,2,4,3,1,7,6,0]
n = len(l)#获取列表长度

for x in range(n-1):#遍历列表
    for y in range(x+1,n):
        if l[x]>l[y]:
            l[x],l[y] = l[y],l[x]
print(l)

27、判断101-200之间有多少个素数,并输出所有素数

#判断101-200之间有多少个素数,并输出所有素数

l = []
for i in range(101,200):
    if i % 2 == 1:
        l.append(i)
        print(i)
print('素数总数是:',len(l),'个')

28、题目


#个位三次方+十位三次方+百位三次方等于这个三位数

for a in range(1,1000):
    百位
    n = a//100
    十位
    u = a//10%10
    个位
    m = a%10
    if a == n ** 3 + u ** 3 + m ** 3:
        print(a)

29、统计字符串的字母、数字、字符等个数

#思路一
for in  循环
isdecimal:是否是数字
isalpha:是否是字母
isalnum:是否是数字或字母
isspace: 是否是空字符

s = input('输入字符串:')
abc = 0
num = 0
space = 0
thore = 0

for i in s:
    if i.isspace():
        space += 1
    elif i.isalpha():
        abc += 1
    elif i.isdecimal():
        num += 1
    else:
        thore+= 1
print('字母=',abc,'数字=',num,'空字符=',space,'其他字符=',thore)
#==============================================================
#思路二
while 循环
s = input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
i=0
while i < len(s):
    c = s[i]
    i += 1
    if c.isalpha():
        letters += 1
    elif c.isspace():
        space += 1
    elif c.isdigit():
        digit += 1
    else:
        others += 1
print ('字母 =' ,letters ,'空格 =',space,'数字= ',digit,'其他字符 = ',others)

30、s=a+aa+aaa....

#题目:
#求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
#例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
#程序分析:关键是计算出每一项的值。


n = int(input('层数n = '))
a = int(input('计算数a = '))
sum = 0
total = 0
l = []
for i in range(n):
    l.append(int(str(a)*(i+1)))
print(l)
for i in range(n):
    sum += (10 ** i)
    total += sum * a
print(total)

31、100米自由下落10次,求第十次反弹距离

#一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

n = 10   #反弹次数
m = 100  #落地高

l = [] #总高度
l2 = []# 每次反弹高度
for i in range(2,n+1):# 计算第二次到第十次落地距离
    m = m/2
    l2.append(m)
#十次反弹的高度
print(sum(l2)*2+100)
#第十次反弹的高度
print(min(l2)/2)


#=====================================================
#思路二
tour = []
height = []

hei = 100.0  # 起始高度
tim = 10  # 次数

for i in range(1, tim + 1):
    # 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)
    if i == 1:
        tour.append(hei)
    else:
        tour.append(2 * hei)
    hei /= 2
    height.append(hei)

print('总高度:tour = {0}'.format(sum(tour)))
print('第10次反弹高度:height = {0}'.format(height[-1]))

32、题目,五个人的岁数

这个题目是在网上看到的 具体在哪里倒是不清楚了,写了两个思路
#有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,
#又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?


#===========================================
#思路一

def age():
   n = 10
   for i in range(1, 5):
      n = n + 2
   print("第5个人{0}岁".format(n))
age()

#====================================================
#思路二

def fun(age,rank):       
#age 年龄,rank 递归第几个人
    if rank == 1:
        return age
    else:
        return fun(age+2,rank-1)
print (fun(10,5))



这些基础的题能独立做完是不是能够感觉自己进步了?

那么我们一起加油吧






  • 6
    点赞
  • 5
    评论
  • 39
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值