1.需求:有10个球,3红3蓝4白,提供3个盒子,每个盒子里必须有1个白球(随机数/while循环/遍历)
import random
boxs = [[],[],[]]
balls = ['红','红','红','蓝','蓝','蓝','白','白','白','白']
for i in boxs:
index = random.randint(7,len(balls) - 1) #balls的白球索引
i.append(balls[index]) # 往盒子扔球(是根据索引)
balls.pop(index) # 再从刚刚扔进盒子的球,根据索引线索来删除
for ball in balls:
boxs[random.randint(0, 2)].append(ball) #往三个盒子里随机扔球
print(boxs)
2.需求:用户名和密码格式校验程序 ,要求从键盘输入用户名和密码, 校验格式是否符合规则,用户名长度6-20,
并且用户名必须以字母开头 ,如果不符合,打印出不符合的原因,并再次提示输入(while/if判断)
while True:
获取用户输入
name = input("请输入姓名(6-20):")
如果输入“QUIT”则退出程序
if name == "QUIT":
break
gender = input("请输入性别(男或女):")
company = input("请输入公司:")
address = input("请输入公司地址:")
phone = input("请输入联系方式(手机):")
检测姓名输入是否谷歌
if len(name)<6 and len(name)>20:
print("姓名长度只能是6-20位")
如果不正确直接重新开始 ,所以使用continue
continue
检测电话号码是否符合
if len(phone) != 11:
print("请输入有效的电话号码")
continue
控制性别的输入
if gender not in "男女" and len(gender) != 1:
print("请输入有效的性别(男或女)")
continue
控制所有数据不为空
if company=="" or address=="":
print(name,gender,company,address,phone)
print("输入不能为空")
continue
print("添加成功")
print("="*20)
3.从键盘中输入5个学生的名字,存储到列表中,然后打印出每个学生名字中的第2个字母(函数使用萌芽题, 把列表存储放置在外面)
i = 1
student_list = []
while i <= 5:
student = input("请输入第%d名学生的姓名:" % i)
student_list.append(student)
i +=
for stu in student_list:
print("%s的第二个字母为%s" % (stu, stu[1]))
4.函数中求两个数字的和
def res(a, b):
i = a
j = b
n = 0
while i <= j: #这里之所以写i是因为a只是形参不是变量
n += i
i += 1
print(n)
res(5, 15)
5.第一题的函数封装
import random
第一步输入信息
def get_input_data():
while True:
r_nums = input('请输入办公室的个数:')
t_nums = input('请输入老师的个数:')
对输入的数字进行判断,注意类型要一致
if int(r_nums) <= int(t_nums):
return int(r_nums), int(t_nums)
print('教室数低于老师数,请重新输入')
---------------------------------------------------------------------------------
分配办公室
def range_room(rooms_num, teachers_num): # 接收传进来的的实参(办公室/老师)
# 创建办公室列表,就是嵌套[]个数
rooms = []
while rooms_num >= 1:
rooms.append([])
rooms_num -= 1
遍历出老师的个数
teachers = []
while teachers_num >= 1:
teachers_num -= 1
teachers.append('teacher%d'%(teachers_num + 1))
---------------------------------------------------------------------------------
# 开始安排办公室
#1.先随机选出N位老师,依次放到办公室中
for room in rooms:
index = random.randint(0,len(teachers) - 1) # 编列老师的索引值,索引值的随机数量是根据列表rooms的个数,而不是teachers
teac = teachers.pop(index) # 删掉的索引个数 = room房间数
room.append(teac) # 这一步就是根据删除的索引个数 = room房间数条件让每个房间都有一个人
2.将剩下的老师,再随机分配
for teacher in teachers:
room_index = random.randint(0, len(rooms)-1)
rooms[room_index].append(teacher)
return rooms
def main():
rooms_num, teachers_num = get_input_data()
rooms = range_room(rooms_num, teachers_num)
print("分配结束后:", rooms)
- 需求:从键盘中输入5个学生的名字,存储到列表中,然后打印出每个学生名字中的第2个字母
def make_stu_list():
i = 1
student_list = []
while i <= 5:
student = input('请输入第%d名学生的姓名:' % i)
student_list.append(student)
i += 1
return student_list
def print_mess():
student_list = make_stu_list() # 在函数1中是为了存储5个学生的信息弄过来
for stu in student_list:
print('%s的第二个字母为%s' %(stu,stu[1]))
print_mess()
6.改文件名
list1 = os.listdir("../python28/") #记录该文件夹里面所有的文件,以列表的形式
for i in list1:
os.rename("D:../python28/" + i, "D:../python28/" + i[:i.rfind('.')] + "[黑马出品]" + i[i.rfind("."):])
改回来 os.rename("D:/python28/" + i,"D:/python28/" + i[:i.rfind('[')] + i[i.rfind(']'):])
格式 os.rename("目录/hello.txt", "目录/hello[黑马出品].txt")
7.文件备份
old_name = input('请输入你要备份的文件:')
new_name = old_name[:old_name.rfind('.')] + "副本" + old_name[old_name.rfind('.'):]
with open(old_name,"r",encoding="utf-8") as r:
content = r.read()
with open(new_name,"w",encoding="utf-8") as w:
w.write(content)
8.列表去重方法
import random
list1 = [random.randint(0,3) for i in range(10)]
print(list1)
list2 = []
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
else:
print(f"{ i }数据已经在里面了")
9.求1-100间的偶数和
第一种:
a = sum([i for i in range(101) if i%2==0])
print(a)
第二种:
def fun():
i = 0
j = 0
while i < 101:
if i % 2 == 0:
j += i
i += 1
return j
print(fun())
10.需求:去除列表中长度大于3的值
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
a=[name.upper() for name in names if len(name)>3]
理解:[表达式 for 变量(遍历得到的值) in 列表] 或者 [表达式 for 变量(遍历得到的值) in 列表 if 条件]
print(a)
a 的结果 ['ALICE', 'JERRY', 'WENDY', 'SMITH']
11.需求:在列表中筛选出大于2000的值
list = [12,3243,32,34234,32]
a = [x for x in list if x > 2000]
print(a)
这里要注意的地方是:列表中都是int型,所以x>2000可以,如果两者类型不一样的话就要转成一样的类型
网友评论