美文网首页
基础班题目整理

基础班题目整理

作者: 哇哩咕 | 来源:发表于2019-04-23 14:02 被阅读0次

    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)

    1. 需求:从键盘中输入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可以,如果两者类型不一样的话就要转成一样的类型

    相关文章

      网友评论

          本文标题:基础班题目整理

          本文链接:https://www.haomeiwen.com/subject/uvjvgqtx.html