# 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:
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））
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:
#阻塞等待接收客户端的数据
#打印客户端发来的数据
#收到什么就回复什么
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')
while content:
dst_fp.write(content)
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
收藏
• 一键三连
• 扫一扫，分享海报

05-23 89
04-10 2609
10-29 246
10-26 131
12-16 2734