zoukankan      html  css  js  c++  java
  • 习题练习

    1.实现一个整数加法计算器(俩个数相加)

    如: content = input("请输入内容:")

    如用户输入:5+9或者5 + 9 ,然后进行分割再进行计算

    content = input("请输入内容:").strip().split("+")
    num = int(content[0]) + int(content[1])
    print(num)

    扩展多个数相加

    content = input("请输入内容:").strip().split("+")
    count
    = 0
    for i in content: #循环 count = count + int(i)#进行自加 print(count)
    # content = input("请输入内容:").strip()
    # digit_list = content.split("+")
    # sum = 0
    # for i in digit_list:
    #     i = int(i)
    #     sum += i
    # print(sum)

    2.计算用户输入的内容中有几个整数.

    如 content = input("请输入内容") gghguhy123hgygyguy

    content = input("请输入内容")
    count = 0
    for i in content:
        if i.isalnum():
            count += 1
    print(count)

    扩展:  将123看成是一个整体,比如输入的是123,识别成是一个整体,返回1而不是返回3.

    待定






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

    方法一: 用字符串操纵方法startswith,endswith
    li = ["taibai ", "alexC", "AbC", "egon", "Rittian", "Wusir", " aqc"] s = [] for i in li: i = i.strip() if (i.startswith("A") or i.startswith("a")) and i.endswith("c"): s.append(i) for j in s: print(s)
    返回:['aqc'] 先将列表循环,然后去除空格,判断每次循环i这个字符串是不是以什么开头和结尾,注意or与and同时出现存在优先级的问题,所以需要将前面的or部分
    括起来,满足条件的就添加到空列表s里面,然后打印出来.
    方法二:将单个字符串提出来,用索引判断.
    l1 = [] for i in li: i = i.strip() if i[0].upper() == "A" and i[-1] == "c": l1.append(i) print(l1)
    返回:['aqc'] 同样的循环,当i循环到某一个列表内的字符串时,用索引判断,str的前面和后面是不是A和c,满足条件就添加到列表l1中.

    4.列表嵌套,
    打印列表里的每一个元素.
    li = [1, 2, 3, ["alex", "wusir", "老男孩"], 4]
    for i in li:  #循环整个大的列表
        if type(i) == list:#当i等于列表的时候
            for j in i:   #
                print(j)
        else:
            print(i)
    返回:

    1
    2
    3
    alex
    wusir
    老男孩
    4

    要求用for循环加上range写
    li = [1, 2, 3, ["alex", "wusir", "老男孩"], 4]
    for index in range(len(li)):
        if type(li[index]) == list:
            for i in range(len(li[index])):
                 print(li[index][i])
        else:
            print(li[index])

     

    5.开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]

    则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中

    思路:循环的是敏感词汇列表.i分别是li里的每一个元素,

    如果敏感词汇在ret输入的评论里面

    就将他替换

    替换了之后

    添加到一个新的列表里

    打印

    li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
    li1 = []
    ret = input("请输入评论内容:")
    for i in li:
        if i in ret:
            ret = ret.replace(i, "*" * len(i)) 
    li1.append(ret)
    print(li1)
    #i的值循环出来就是列表里的敏感词汇,题目是要将敏感词汇替换成为*号,用replace(old.new.n/次数),正常情况下写成这样replace(i,"*"),但是这样只替换了
    一次,到下次循环就没有被替换,所以需要加上替换的次数,想如果是次数,不可能直接写n吧,所以就可以用i的长度,意思是说,如果输入的敏感词汇与li中的词汇长度
    想符合,就将全部替换成*.
     ret = ret.replace(i, "*" * len(i)) ,这里的变量名ret,如果变成其他名a,如果是a,当i等于苍老师时,被替换了的赋值给a,当i等于东京热的时候,也被
    替换掉了,赋值给a,但第二次替换的时候是先替换,然后把值赋给a,相当于将前面一次a已经替换成***的覆盖了,覆盖了就等于没有被替换,所以需要将每次替换的*
    保存在ret里面,下次循环的时候就不会再替换,而且还被保存了,所有当整个输入敏感词汇下来,就全部被替换掉.
    6.算1-2+3-4...+99的和.
     
    可以理解为把所有的偶数变成负数,就这样相加


    #方法一:
    su = 0 #设置总数变量 count = 1 #设置计数 while count < 100: if count % 2 == 0: #如果能被2整除的话就是偶数 su = su - count #就执行这个语句块, else: #如果不满足,就代表是奇数 su = su + count #就执行这个语句块, count += 1 #要循环就要每次count都要自加1
    print(su)
    理解:
    第一次循环count = 1,1不能被2整除,执行else后面的语句,sum = sum + count 。sum =0+1.count 自加之后变成, count = 2,2<100.可以继续往下循环,走到if语句。2能被2 整除,则执行sum = sum - count , sum = (将原来sum的值算进来,sum = 0+1) - 2 ,所以sum最新的到的值就是 sum = 0+1-2.这样一直循环到count <100d的条件这样就可以了。 这里需要思考,题意会看到所有的偶数都是负数,所以在if判断的时候就要将减去count 的值。这种理解方式是将所有的偶数想成负数,这样自加自减。 """
    
    
    #方法二:
    su = 0 #设置总数变量 count = 0 #设置计数 while count < 100: if count % 2 == 1: #如果能被2整除的话就是偶数 su = su + count #就执行这个语句块, else: #如果不满足,就代表是奇数 su = su - count #就执行这个语句块, count += 1 print(su)
    
    
    

    算2-3+4-5+6+100的和.
    sum = 0                          
    count = 2
    while count < 101:
    if count % 2 == 0:
    sum = sum + count
    else:
    sum = sum - count
    count += 1
    print(sum)
    代码基本一样,只是偶数相加奇数相减.

      用for 循环去算1-2+3-4...+99的和

    #
    su = 0
    for i in range(1, 100): #把i当做count
        if i % 2 == 1:
            su = su + i
        else:
            su -= i
    print(su)   #因为是for循环,所以不需要将之前的count +=1

      

    7.使用while循环,实现输出100-50,从大道小,如100,99,98....,到50时再从0循环输出到50.然后结束。

    # 方法1
    s = 100                 #定义变量s值为100
    while s >= 50:          #当s大于50,就输出s的值,从100开始算起走
            print(s)
            s-=1            #每输出一个就s减去一个
    #         continue
    s = 0
    while s <= 50:          #当s <50输出的值就从0开始算起走
        print(s)
        s+=1                #每输出一个,count就加1
    #方法2
    count,times = 100,1
    while True:                                       #输出100到50
        if count > 50:
            print(count)
            count-=1
        elif count ==50 and times == 1:              #当输出到50,跳转为0到50
            print(count)
            times+=1
            count = 0
        elif count < 50:                             #输出0到50
            print(count)
            count +=1
    # 方法三:
    n = 100
    while True:
        if n >=50:
            print(n)
        else:
            print(49-n)
            if n < 0:
                break
        n=n-1                                    #这个思路好简单明了,易懂。

     

    8. 计算用户输入的内容中有几个整数如 content = input("请输入内容") 如:gghguhy123hgygyguy

    content = input("请输入内容:")
    count = 0
    for i in content:
        if i.isdigit():
            count += 1
    print(count)

    9.实现一个整数加法计算器(俩个数相加)如: content = input("请输入内容:")如用户输入:5+9或者5 + 9 ,然后进行分割再进行计算

    要把用户输入的数进行相加,应该怎么办
    #首先要想啊,用户得到的数是不是就是赋给前面content的这个变量,所以是不是要将content这个得到的列表下标相加
    #然后将加起来的值再重新赋给一个新的变量,最后打印新的变量就出来了
    #假如赋值新的变量总和名字叫sum
    
    
    #结果会发现是什么,如果用户输入1+2,得到的是12,这是把用户输入的当做是字符串进行拼接起来
    # 记住input接收到的东西都是字符串,所以需要我们把接受到的的东西变成数字,怎么变
     content = input("请输入内容:").split("+")
    nu = int(content[0]) + int(content[1])
    print(nu)

    input接受的数据全部默认是字符串类型
    在写input后面,默认都要加上个strip()


     9.有字符串"k :1|k1 :2|k2 :3|k3 :4" 处理成字典 {'k':1,'k1':2....}

    思路:要将其转为字典,必须要把字符串中的 冒号和|去掉,然后转为列表,列表再转为字典
    #
    li = "k :1|k1 :2|k2 :3|k3 :4"
    dic = {}                           #创建一个空字典
    li = li.strip().split("|")         #去空格,以| 将li分割成一个列表
    for i in li:                       #循环列表
        i = i.split(":")               #将列表里的:去掉,
        dic[i[0]] = int(i[1])          #赋值根据dic["key"] = "value",key = i[0],value = i[1],题干是int类型,需转
    print(dic)                         #打印字典

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

    思路:要循环判断将以66为分界线,分别放入俩个列表
    将列表转为字典
    初始版本:
    li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] dic = {} l1 = [] l2 = [] for i in li: if i <= 66: l1.append(i) else: l2.append(i) dic.update({"k1": l1}) #注意update的用法 dic.update({"k2": l2}) #还的分开加,这样加进去,有则覆盖,无则添加 print(dic)
    简化版:
    dic ={"k1": [], "k2": []} #直接创建一个字典模板,可以这样理解 for i in li: if i <= 66: #判断条件 dic["k1"].append(i) #满足条件的添加到字典k1 else: dic["k2"].append(i) #否则添加到字典k2 print(dic)

    11.输出商品列表,用户输入序号,显示用户选中的商品商品 li = ["手机", "电脑", '鼠标垫', '游艇']

    要求:1:页面显示 序号 + 商品名称,如:
    1 手机
    2 电脑

    2: 用户输入选择的商品序号,然后打印商品名称
    3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    4:用户输入Q或者q,退出程序

    思路:
    如果商品编号是以1开头的话那么.商品编码=1+索引
    索引=商品编码-1
    "循环列表而且要一直循环 
    "打印商品序列号 怎么才能打印序列号,索引会打是从来0开始算起走的,序列是从1开始算走的,序列=索引+1
    "用户输入,用到input,输入之后怎么打印商品名称
    "判断用户输入的是否的序列号,是否超出选择范围,错了宁提示
    "如果用户选择q,就让程序退出
     
    li = ["手机", "电脑", '鼠标垫', '游艇']
    while True:
        for i in li:                                                    #循环
            print("{} 	 {}".format(li.index(i)+1, i))                  #格式化输出,商品序列和名称
        user_choice = input("请输入商品序列号:") .strip()                  #去空格,用户输入
        if user_choice.isdigit():                                       #判断输入的是不是整数
            user_choice = int(user_choice)                              #将判断的长度.变成整型,因为下一步,input接受到的都是str,需要将str转成int类型,.
            if user_choice > 0 and  user_choice <= len(li):             #判断输入的是否在商品范围内,写的时候就判断长度
                print(li[user_choice-1])                                #根据商品序列号打印商品
            else:                                                       #否则就提示超出范围
                print("你输入的超出商品范围!")
        elif user_choice.upper == "Q":                                  #如果输入Q就退出程序,加这里,因为里面的循环都限定只能输入数字
                break
        else:
            print("你输入的有非数字!")                                     #如果不是整数,就提示输入的不是整数
    
    
    
    

     12.将索引为奇数的元素删除

    li = ["11", "22", "33", "44", "55", "66", "77", "88", "99"]
    # 方法一,切片删除,第一种最可行
    del li[1::2]
    print(li)


    #方法二 ,通过新建列表 l1 = [] for i in range(len(li)): if i % 2 == 0: l1.append(li[i]) li = l1 # li.extend(l1) print(l1)

    #方法三,倒着删除 for i in range(len(li)-1, -1, -1): if i % 2 == 0: del li[i] print(li) #三次结果不一样,不建议在循环里删除列表里的元素

     13."基础需求:

    让用户输入用户名密码

    认证成功后显示欢迎信息

    输错三次后退出程序

    name = "alex"
    password = "123"
    count = 0
    
    flag = True
    while flag and count < 3:                                                   #同时让程序运行并且设置 count的次数小于3
        user_name = input("请输入你的用户名:").strip()
        user_password = input("请输入你的密码").strip()
        if user_name == name and user_password == password:                     #判断输入的是否与之前保存的是否一样
            print("欢迎登陆")
            flag = False                                                        #当满足条件了,即输入都正确,就可以退出循环
        else:                                                                   #否则不满足,就执行下面的语句
            print("用户名或者密码错误!还剩%s机会" % (2-count))                    #提示用户输错了
            count += 1                                                          #在while循环里,输错的情况下,让count+1,前面设置了count不能大于3次时相互呼应。
            if count == 3:
                choice = input("还想再试试吗!请输入Y")
                if choice == "Y":
                    count = 0
    else:
        print("还要不要脸了")
        count = 0
    #用while循环做的最初级版本,支持多用户.
    users = [["alex", "123"], ["luffy", "abc123"]]
    
    count = 0                                                                       #设置计数
    while count < 3:                                                                #循环计数次数
        _username = input("请输入你的用户名:").strip()                               #去掉空格
        _password = input("请输入你的密码:").strip()
        for user_item in users:                                                     #循环列表取出他的值
            if user_item[0] == _username and user_item[1] == _password:             #设置条件,如果成立
                print("welcome %s" % _username)                                     #则打印欢迎登陆
                exit()                                                              #成功就结束本次循环
        count += 1                                                                  #在for循环下计数次数加上1,知道加到计数设置的3次为止
    else:                                                                           #当for循环完成后,还是不成立之后,就执行否则下面的语句
        print("密码错误")
    #用标志位做,支持多用户.
    exit_flag = False
    users = [["alex", "123"], ["luffy", "abc123"], ]
    count = 0
    while count < 3:
    _username = input("请输入你的用户名:").strip()
    _password = input("请输入你的密码:").strip()
    for user_item in users:
    if user_item[0] == _username and user_item[1] == _password:
    print("welcome %s" % _username)
    exit_lag = True
    break
    else:
    print("洗洗睡")
    if exit_flag:
    count += 1
     

     14.关于倒叙输出的方法:

    #输出100-1的数
    #方法一
    for
    j in range(100,0,-1): print(j)
    a = range(100)               #给range 赋值给一个变量a
    for k in reversed(a):     #利用关键字reversed进行原地翻转
        print(k)
    #用while循环实现
    count = 100 while count >= 50: print(count) count-=1# 倒序输出还可以用-=符号来进行表示


     15.
    输出所有1-100的奇数的和
    
    
    #理解,要先把奇数摘出来,然后把奇数相加

    # 方法一:是要从来1循环到100,来判断是奇数还是偶数,比较麻烦。
    count = 0
    sum = 0
    while count < 100: #设置count的范围
    if count % 2 == 1: #判断count是不是能被2整除,不能整除就是余1,即为奇数
    sum = sum + count #每次count+1的值,又重新加上sum的值,记住sum的值不是0+1=1这样算的。而是
    count += 1 #当count = 1时sum = 0+1,当count = 2时是偶数,程序不执行,往下走,count = 3是奇数,sum = (0+1)+3.这样循环的
    print(sum) # 最后再打印sum总的值,注意缩进
    #返回:2500
     
    
    
    #方法二:
    count = 1#设置计数初始值为0,
    sum = 0 #设置自加的变量初始值为0,同时也是每次得到的总和
    while count < 100: #设置count的最大范围。
        if count % 2 == 1:#判断countde 的数,是不是能被2整除,不能就说明该数是奇数
            sum = sum + count #将count每次加到的数,与每次sum得到的数,相加,又重新得到一个新的sum数,
                               # 到下一轮,将sum的数又加进去,相当于sum是一个自加的过程,
        count += 2 #!!!!!!这里将count每次循环到这里每次都加上个2,就不用判断count的到的数,去判断是不是奇偶数。
    print(sum)
    
    # #这样理解,如果 count= 0,执行到if count % 2 == 1:因为0可以被2整除。然后就不会执行sum = sum + count ,直接加到2,
    # 有能被整除,sum = sum + count,所以又能被整除,所以一直循环加23,一直出不来结果.
    #返回:2500
    
    

     

    16.计算用户输入内容中,索引为奇数.并且对应的元素为数字 的个数(没有则个数为零)

    count = 0
    content = input(">>>").strip()
    for i in range(len(content)):   #len 就是他的个数,比如输入的字符是三个字的,range是从0开始,因为range是不包括最后一个的,len以下是3他取不到,所以i呈现出来的就是content的索引
        if i % 2 == 1 and content[i].isdigit():
            count += 1
    print(count)
    """理解:
    计算用户输入为偶数,并且元素为整数,统计他输入满足条件后,总共输入了几次
    先说输入内容,的用input
    明确循环之后i就是索引
    判断,注意并且就是要用到and
    就需要判断 ,索引为奇数.and i的元素为数字
    
    通过i 怎么找元素,i就是他的索引,怎么通过索引找元素
    索引是下标[0],[1],
    比如,li = [1.2.6.8.7.] li[1] 就是元素2
    i 就等于他的索引.那么就是content[i]
    """

    
    
    方法二

    count = 0
    content = input(">>>").strip()
    for i in range(1, len(content), 2):   

      if content[i].isdigit():
      count
    += 1

    print(count)
    #为什么可以这样呢,range(1, len(content), 2)在i取值的时候就是1,3,5,7,9...酱紫取的,
    步长跳着去,就直接把偶数去掉,或者跳过了,所以不用去判断是否是奇偶数.


     17.price的计算价格

    计算一种价格的总和
    goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998} ] sum = 0 for x in goods: sum1 = x["price"] sum = sum1 + sum print(sum)
    #一行代码解决
    print
    (sum([x["price"]for x in goods]))
    18.文件a.txt内容:每一行内容分别为商品名字,价钱,个数。并计算出总价钱

    apple 10 3
    tesla 100000 1
    mac 3000 2
    lenovo 30000 3
    chicken 10 3
    通过代码,将其构建成这种数据类型:
    [{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 。

    
    
    计算价格和个数的总和.
    li = [] with open("log2", encoding="utf-8", mode="r")as f: #先创建文件,然后读取出来 for i in f: #循环,i就是每一行的值,比如: mac 3000 2 l2 = i.split() #将i分成一个列表,可以将i.split()赋值给一个变量,如l2 dic1 = {"name": l2[0], "price": l2[1], "amount": l2[2]} #构建字典模式 li.append(dic1) #将字典添加到列表 ,下面就想怎么将全部价格打印出来 sum = 0 #设置一个计数 for j in li: #循环这个列表 sum1 = int(j['price']) * int(j['amount']) #将价格和个数相乘发,等于一个新的变量 sum = sum +sum1 #和计数进行自加行为,得出结果 print(sum)
    
    
    


    
    
  • 相关阅读:
    吴恩达机器学习笔记 —— 3 线性回归回顾
    springboot整合pagehelper实现分页
    Spring 线程池实战
    Java web后台插入数据库中文乱码问题解决
    Cesium项目实战(5)-城市各类POI数据制作、加工、展示
    Cesium项目实战(2)-城市行政区划信息展示以及专题信息展示
    【mybatis】mybatis中避免where空条件后面添加1=1垃圾条件的 优化方法
    Java之Json转List实体
    Maven项目META-INF文件夹不存在的问题
    Maven打jar包把配置文件放在META-INF目录下
  • 原文地址:https://www.cnblogs.com/sunny7/p/8734362.html
Copyright © 2011-2022 走看看