zoukankan      html  css  js  c++  java
  • Python作业

    1使用while 循环输入1,2,3,4,5,6,,8,9,10

    count = 0
    while count<10:
        count+=1
        if count ==7:
            continue
        print(count)
    

      

    count = 0
    while count<10:
        count+=1
        if count ==7:
           pass
        else:
            print(count) 
    

    2.求1——100的所有数的和

    sum =0
    count = 0
    while count<=100:
        count+=1
        sum = sum +count
    
    print(sum)
    

    3.输出1——100的奇数

    count = 0
    while count<100:
        count+=1
        if count %2 == 1:
            print(count)
        continue
    

    4.求100以所有奇数相加

    count = 0
    sum = 0
    while count<100:
        count+=1
        if count %2 == 1:
            sum = sum +count
    
    print(sum) 

    5.求1-2+3-4+5......+99的所有数的和

    count = 0
    sum = 0
    while count<99:
        count+=1
        if count %2 == 0:
           sum = sum -count
        else:
            sum = sum +count
    
    print(sum)
    

    6.简单的用户登陆(三次机会重试)

    i =0
    while i<3:
        user_name = input("请输入您的用户名")
        password = int(input("请输入您的密码"))
        if user_name == 'zzz' and password ==123:
            print("登录成功")
            break
        else:
            print('请重新输入')
        i +=1
        if i ==3:
            print("您的用户已经冻结")
            break  

    加强版:

    user_name ='zzz'
    password = 123
    i =0
    while i<3:
        user1_name = input("请输入您的用户名")
        password1 = int(input("请输入您的密码"))
        if user1_name == user_name and password1 ==password:
            print("登录成功")
            break
        else:
            print('登录失败,您还有%d此登录的机会'%(2-i))
            if (2-i) ==0:
                result = input("是否还需要继续输入(Yes or NO):")
                if result == 'Yes':
                    i = 0
                    continue
        i+=1
        if i ==3:
            print("您的用户已经冻结")
    
    else:
        print("欢迎下次光临")

    注册

    print("请开始您的注册")
    id_name = input('请输入您要注册的用户名')
    id_password = input('请输入您要注册的密码')
    print('恭喜您,注册成功')
    with open('123.txt','w+',encoding='utf-8') as f:
        # f.writelines(id_name+ '
    ')
        # f.writelines(id_password+'
    ')
        f.write('{}
    {}'.format(id_name,id_password))
        f.seek(0)
        # f.read()
        passge_lis = f.readlines()
        # print(passge_lis)
    user_name = passge_lis[0].strip()
    password = int(passge_lis[1].strip())
    print(user_name,password)
    

      

    6 1-2+3-4...............+98-99 除去88 ,把所有的数都相加起来

    sum = 0
    i = 0
    j=-1
    while i<99:
        i+=1
        j=-j
        if i ==88:
            j=-j
            continue
        else:
            sum = sum + i*j
    print(sum) 
    sum = 0
    i = 0
    j=-1
    while i<99:
        i+=1
        if i ==88:
            continue
        else:
            j = -j
            sum = sum + i*j
    
    print(sum)
    

    7. li= [1,2,3,'alex',[2,5,'x'],'asas']  把每一个列表中的元素都遍历出来,包括列表中的列表

    li= [1,2,3,'alex',[2,5,'x'],'asas']
    
    for i in li:
        if type(i) == list:
            for u in i:
                print(u)
        else:
            print(i)
    
    
    for i in range(len(li)):
        if type(li[i]) == list:
            for j in li[i]:
                print(j)
        else:
            print(li[i])
    

    8

    lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']
    #将列表中的数字变成字符串的时候:直接替换;先删除在添加
    lis.remove(3)
    lis.insert(1,"100")
    # 将列表中的字符串变成数字的时候:直接替换;先删除在添加;或者是先replace 变成字符串后在转化为数字
    lis[3][2][1][2]=int(lis[3][2][1][2].replace("1","101"))
    
    print(lis)
    

    9 1查找列表li中的元素,移除每个元素的空格,2并找出以’A’或者’a’开头,并以’c’结尾的所有元素,3并添加到一个新列表中,最后循环打印这个新列表

    li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
    
    lis =[]
    for i in li:
        s =i.strip()
        if (s.startswith("A") or s.startswith("a"))and s.endswith("c"):
            lis.append(s)
    
    for i in li:
        s =i.strip(' ')
        if s[0].upper() == "A" and s[-1] == "c":
            lis.append(s)
    print(lis)
    

    10 # 开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:# 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]# 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;# 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中

    li = ["苍老师","东京热","苍老师","波多野结衣"]
    
    conten = input("请输入内容:")
    b = []
    for i in li :
        if i in conten:
            #n = len(i)
            #conten = conten.replace(i,"*"*n)
         conten = conten.replace(i,"*")     
    b.append(conten)
    print(b)
    

     

    #错误的版本
    
    li = ["苍老师","东京热","苍老师","波多野结衣"]
    conten = input("请输入内容:")
    b = []
    for i in li :
        if i in conten:
            n = len(i)
            new_data = conten.replace(i,"*"*n) #内容要重新放在循环过程中判断。
            b.append(new_data) #这里添加不能放在在循环体内
        else:
            b.append(conten)
    print(b)
    

    10 用一行代码改变a和b的值 

    a=1
    b=2
    
    a,b = b,a  #类似dict中的k,v
    print(a,b)
    

    11. 输入任意的一串字母+数字。计算出数字的个数。注意连在一起的数字为一个整体。例如:35sdsadwdada656ds123sdsadad99  一共有4个数字。

    info = input("<<<")  #'sasda6565sdsa797asd1543' ---< '    6565    797   1543'
    
    for i in info:
        if i.isalpha():
            info=info.replace(i," ")
    num = info.split()  #'   6565   797   1543' ------> ['6565', '797', '1543']
    print(len(num))
    

    12有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

    li= [11,22,33,44,55,66,77,88,99,90]
    dic ={'k1':[],'k2':[]}

    for i in li:
    if i>66:
    dic['k1'].append(i)
    elif i==66:
    continue
    else:
    dic['k2'].append(i)

    print(dic)
    li= [11,22,33,44,55,66,77,88,99,90]
    dic ={}
    a=[]
    b=[]
    
    for i in li:
        if i>66:
            a.append(i)
        elif i==66:
            continue
        else:
            b.append(i)
    
    dic.setdefault('k1',a)
    dic.setdefault('k2',b)
    print(dic)  

    13

    '''
    输出商品列表,用户输入序号,显示用户选中的商品
        商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    要求:1:页面显示 序号 + 商品名称,如:
          	1 手机
    	   	2 电脑
         		 …
         2: 用户输入选择的商品序号,然后打印商品名称
      3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    4:用户输入Q或者q,退出程序。
    
    '''
    li = ["手机", "电脑", '鼠标垫', '游艇']
    
    while 1:
    
        for i in li:
            index = li.index(i)+1
            print('{}		{}'.format(index,i))  #	 空格 
     换行
    
        num = input('请输入选择的商品序号:')
        if num.isdigit():
            num = int(num)
            if num >0 and num<= len(li):
                print(li[num-1])
            else:
                print("请输入有效的数字:")
        elif num.upper() == 'Q':
            print('欢迎下一次购物')
            break
        else:
            print('请输入数字')
    

    14 购物车 (有点小问题,不完整)

    #购物车
    
    li =[
        {'name':'苹果','price':'10'},
        {'name':'香蕉','price':'20'},
        {'name':'西瓜','price':'30'},
    ]
    
    shopping_cars = {}
    all_money = 0
    print('欢迎来到虚拟超市')
    
    while 1:
        for k,j in enumerate(li):
            print('序号:{}	商品名称:{}	商品的价格:{}'.format(k+1,j['name'],j['price']))
    
        goods_num = input("请输入您要购买的商品的序号:")
        if goods_num.isdigit():
                if int(goods_num)>0  and int(goods_num) <= len(li):
                        print('商品名称:{}	商品的价格:{}'.format(li[int(goods_num)-1]['name'],li[int(goods_num)-1]['price']))
                        goods_digit = input("请输入您所购买的商品的数量")
                        if goods_digit.isdigit():
                            if int(goods_digit)>0:
                                goods_money = int(goods_digit) * int(li[int(goods_num)-1]['price'])
                                all_money = goods_money + all_money
                                print('商品名称:{}	商品的数量:{}	总价钱:{}'.format(li[int(goods_num)-1]['name'],goods_digit,goods_money))
                                if li[int(goods_num)-1]['name'] in shopping_cars:
                                    while 1 :
                                        choose = input("请您对您的商品做出改变的序号(0为增加数量;1为减少数量,3为删除商品):")
                                        if choose == '0':
                                            shopping_cars[li[int(goods_num)-1]['name']] = int(shopping_cars[li[int(goods_num)-1]['name']]) + int(goods_digit)
                                            break
                                        elif choose =='1':
                                            shopping_cars[li[int(goods_num) - 1]['name']] = int(shopping_cars[li[int(goods_num) - 1]['name']]) - int(goods_digit)
                                            all_money = all_money -2*goods_money
                                            break
                                        #elif choose == '3':  #有问题
                                            #all_money = all_money -1*goods_money
                                            #del shopping_cars[li[int(goods_num)-1]['name']]
                                            #break
                                        else:
                                            print('请输入有效的序号')
                                            continue
                                else:
                                    shopping_cars[li[int(goods_num)-1]['name']]  = goods_digit
                                print('购物车的商品:{}'.format(shopping_cars))
                                go_on = input("是否付款( Y(y) or N(n) ):")
                                if go_on.upper() == 'Y':
                                    all_money1 = all_money
                                    print('购物车的商品:{}'.format(shopping_cars))
                                    print("购物车里所有商品总计为{}元".format(all_money1))
                                    have_money = input("请您付款(元):")
                                    if all_money  <= int(have_money):
                                        print("本次购物成功,谢谢您的光临")
                                        going = input("是否继续购物( Y(y) or N(n):")
                                        if going.upper() == 'Y':
                                            all_money =0
                                            shopping_cars.clear()
                                            continue
                                        else:
                                            break
                                    else:
                                        print('您的余额不足')
                                        break
                                else:
                                    continue
                            else:
                                print('请输入有效的数字')
                        else:
                            print("输入有误,请输入数字")
                else:
                    print('请输入有效的数字')
        else:
            print("输入有误,请输入数字")
    

      

    作业:

    #作业;处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕
    
    # def func(filename,content):
    # 	with open(filename,encoding='utf-8') as f :
    # 		# while 1:
    # 		# 	line = f.readline()
    # 		for line in f:
    # 			if content in line:
    # 				yield line
    #
    # g = func('file','python')
    #
    # for i in g :
    # 	print(i.strip())
    

      

    时间差

    自己的版本:

    # 计算时间差
    # '2017-09-11 08:30:00'  ----'2017-09-12 11:00:00'
    
    import time
    
    star_time = time.strptime('2017-09-11 08:30:00',"%Y-%m-%d %H:%M:%S")
    end_time = time.strptime('2017-09-12 11:00:00',"%Y-%m-%d %H:%M:%S")
    new_star_time = time.mktime(star_time)
    new_end_time  = time.mktime(end_time)
    new_time = new_end_time - new_star_time
    print(new_time)   #秒
    struc_time = time.localtime(new_time)
    time = time.strftime("%H(h)%M(m)%S(s)",struc_time)
    print(time)  # 小时;分钟;秒钟 10(h)30(m)00(s)
    

    老师的版本: 

    import time
    true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
    time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
    dif_time=time_now-true_time
    struct_time=time.gmtime(dif_time)
    print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                           struct_time.tm_mday-1,struct_time.tm_hour,
                                           struct_time.tm_min,struct_time.tm_sec))
    

     

    随机的验证码 (4位) 

     自己的版本:

    #随机4位的验证码  #有限的循环一般用range
    import  random
    def func():
    	ret_lis = []
    	for i in range(4) :
    		num = str(random.randint(0,9))
    		arip_num = random.randint(65,90)  #[65,90]  生产数字, 字母 = chr(数字) #随机生产字母 用 ascii 码
    		arp = chr(arip_num)   #字母= chr(数字)
    
    		ret = random.choice([num,arp])
    		ret_lis.append(ret)
    
    	ret = " ".join(ret_lis)
    	return ret
    
    print(func())
    #自己写的版本是把取到的4个元素放到列表后在转化为str
    

     老师的版本:

    #循环组合
    import random
    
    def v_code():
    
    	code = ''
    	for i in range(5):
    
    		num=random.randint(0,9)
    		alf=chr(random.randint(65,90))
    		add=random.choice([num,alf])
    		code="".join([code,str(add)])  #循环一次组合一次
    
    	return code
    
    print(v_code())
    

     

    计算器大作业

    计算:a = ' 1 - 2 * ( ( 6 0 -3 0 -(40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'

    要求:先计算括号里面的,在根据四则运算来计算;用的正则表达式的知识

    import re
    
    def del_backet(x): return x.strip('()')
    
    def sovle(x):
    	if '+-' in x : return x.replace('+-','-')
    	if '-+' in x : return x.replace('-+','-')
    	if '--' in x : return x.replace('--','+')
    	if '++' in x : return x.replace('++','+')
    	else: return x
    
    def work(x):
    	if '/'in x:
    		i,j = x.split('/')
    		return str(float(i) / float(j))
    	if '*' in x:
    		i, j = x.split('*')
    		return str(float(i) * float(j))
    
    def many_num(flat):   #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
    	while 1:
    		ret = re.search('d+.?d*[*/]-?d+.?d*',flat)  # 2*5;10/3;.....
    		if ret:
    			ret = ret.group()   #40/5;2*5;10/3
    			new_ret = work(ret) #8;10;10/3
    			flat = flat.replace(ret, new_ret)  # 40/5 --->8; 9-3.33333 + 7 /3*99/4*2998 +10 * 568/14
    			flat = sovle(flat)
    		# 55+55-5+4
    		else:
    			# ret = re.findall('-?d+.?d*', flat)  #[55,55,-5,5] 只要把数字匹配出来,累加就可以了,用findall拿到一个列表
    			ret = re.finditer('-?d+.?d*', flat)    #迭代器
    			n_ret = [i.group() for i in ret]  #列表的推导式
    			num = 0
    			for i in n_ret:
    				num += float(i)
    			return str(num)
    
    
    def cla_func(a):
    	while 1:
    		r = a.replace(' ','')  #去空格
    		no_backet = re.search('([^()]+)',r)
    		if no_backet:
    			no_ret = no_backet.group()      #(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )
    			flat = del_backet(no_ret)  # 40/5  #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
    			new_flat = many_num(flat)  # 40/5  #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
    			a = r.replace(no_ret,new_flat)
    			a = sovle(a)
    		else:
    			ret = many_num(r)  #没有空格后
    			return ret
    
    
    if __name__ == '__main__':
    	ret =cla_func(input('>>>'))
    	#a = '   1 -   2 * ( ( 6 0 -3 0  -(40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
    	print(ret)
    

      

     有一个类的定义

    1.初始化多个不同的对象

    2.求最高的age的对象的name

    # class Person:
    #     def __init__(self,name,age):
    #         self.name = name
    #         self.age = age
    #
    # l = []   #对象
    # for i in range(10,21):
    #     l.append(Person('alex%s'%(i),i))
    

      

    # ne_age = max([i.age for i in l]) #内置函数
    #
    # for i in l:
    #     if i.age == ne_age:
    #         print(i.name)
    

      

    # obj1 = max(l,key=lambda obj:obj.age) # 直接拿到对象  !!!
    print (obj1.name)

     

    有四个数字:1,2,3,4,能组成多少个不相同且无重复数字的三位数?,分别是多少?

    #有4个数字:1,2,3,4;能组成多少个互不相同且无重复数字的三位数字?分别是多少? #循环嵌套
    # def with_num():
    #     n = 0
    #     for i in range(1,5):            #百位
    #         for j in range(1, 5):       #十位
    #             for k in range(1, 5):   #个位
    #                 if i==j or i==k or j==k:
    #                     continue
    #                 n+=1
    #                 print(n)
    #                 yield (str(i)+str(j)+str(k))
    
    #
    # for i in with_num():
    #     print(i)
    

      

    假设有100个person的对象,若两个对象的obj1,obj2的name和sex属性相同,则我们认为两个对象为同一个对象,已知一个列表中有100个对象,对这100个对象进行去重。

    提示: 内置方法

    # class Person:
    #     def __init__(self,name,age,sex):
    #         self.name = name
    #         self.age = age
    #         self.sex = sex
    #
    #     def __eq__(self, other):
    #         if self.name == other.name and self.sex == other.sex:
    #             return True
    #
    #     def __hash__(self):
    #         return hash(self.name + self.sex)
    #
    # obj_lis = []
    #
    # for i in range(5):
    #     obj_lis.append(Person('alex',i,'nan'))
    #
    # print(set(obj_lis))  #set 去重 依赖于__hash__;__eq__
    

      

    #面试题

    """
    有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序.
    """
    
    l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3]
    ret = list(set(l1))
    print(ret)
    ret.sort(key=l1.index)  # 按值在l1中的索引进行排序
    print(ret)
    
    l2 = [
        {"name": "alex", "age": 36},
        {"name": "GoldBoss", "age": 30},
        {"name": "xiaoyima", "age": 18}
    ]
    #内置函数与匿名函数的结合
    l2.sort(key=lambda x: x["age"])
    print(l2)
    

     

    去除多余嵌套的列表

    list1 = [11, [22, 3], [4, ], [55, 66], 8, [9, [7, [12, [34, [26]]]]]]
    # 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8]
    
    list1 = [ 8, [9, [7, [12, [34, [26]]]]]]
    # 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8]
    def f(x):
        ret = []
        for b in x:   # 1
            if isinstance(b, list):#[2,[3]]
                for a in f(b):    # f(b)递归,直到递归到同一级的列表,比如对于list1来说,最后递归到最内层[26];取最内部的数;然后在
                                   # 一层一层的往上取返回值,添加到列表里面;
                    ret.append(a)
                #     pass
                # f(b)  没有拿取递归的返回值;
            else:
                ret.append(b)
        return ret
    
    # def func(x):
    #     return [a for b in x for a in func(b)] if isinstance(x, list) else [x]
    
    ret = f(list1)
    # ret = func(list1)
    print(ret)
    
    
    #isinstance(obj,class)  #来判断这个obj的类型是否为class ,类似与type()
    

      

     

      

  • 相关阅读:
    原笔迹手写实现平滑和笔锋效果之:笔迹的平滑(二)
    区块链入门(4)Truffle创建项目,编译,及项目部署
    github的基本使用
    ES6新特性之傻瓜式说明
    webpack之傻瓜式教程及前端自动化入门
    查找树莓派ip地址的常用方法
    树莓派的无屏幕安装的教程
    采用QHD分辨率使用kinect2_calibration,完成QHD图像校正
    编译ORBSLAM2 build_ros.sh,实现kinect2在ROS环境下运行ORBSLAM2
    重写kinect2_viewer,编译高博kinect2在orbslam2上跑的程序(解决cmakefile中库依赖和头文件的问题)
  • 原文地址:https://www.cnblogs.com/zenghui-python/p/10233919.html
Copyright © 2011-2022 走看看