zoukankan      html  css  js  c++  java
  • Python基础练习

    # 随便输入一段字符串,计算整数的个数
    info = input('>>>').strip()
    for i in info:
        if i.isalpha():
            info = info.replace(i, " ")
    l = info.split()
    print(len(l))
    
    # ab互换
    a = 1
    b = 2
    a,b = b,a
    print(a,b)
    
    # 循环迭代字符串(不需要知道字符串多长)
    s = "qwertyuiopasdfghjkl"
    index = 0
    while 1:
        print(s[index])
        index += 1
        if index == len(s):
            break
            
    # 有如下值li= [11,22,33,44,55,66,77,88,99],将所有小于 66 的值
    保存至字典的第一个key中,将大于 66 的值保存至第二个key的值中。
    即: {'k1': 小于66的所有值列表, 'k2': 大于66的所有值列表}
    li = [11, 22, 33, 44, 55, 66, 77, 88, 99]
    dic = {}
    l_greater = [] #大于66的所有值列表
    l_less = []    #小于66的所有值列表
    for i in li:
        if i < 66:
            l_less.append(i)
        elif i > 66:
            l_greater.append(i)
    dic.setdefault("k1", l_less)
    dic.setdefault("k2", l_greater)
    print(dic)
    
    # 输出商品列表,用户输入序号,显示用户选中的商品
    商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    要求:    1:页面显示 序号 + 商品名称,如:
                1 手机
                2 电脑
                ...
            2:用户输入选择的商品序号,然后打印商品名称
            3:如果用户输入的商品序号有误,则提示输入有误,并重新输入
            4:用户输入Q或者q,退出程序
    flag = True
    while flag:
        li = ["手机", "电脑", "鼠标垫", "游艇"]
        for i in li:
            print("{}	{}".format(li.index(i)+1, i))
        num_of_chioce = input("请输入选择的商品序号/输入Q或者q退出程序:")
        if num_of_chioce.isdigit():
            num_of_chioce = int(num_of_chioce)
            if num_of_chioce > 0 and num_of_chioce <= len(li):
                print(li[num_of_chioce-1])
            else:print("请输入有效数字")
        elif num_of_chioce.upper() == "Q":
            break
        else:
            print("请输入数字")
        
    # 让用户选择何时退出
    x = ""
    while x != "quit":
        x = input("如果想退出,请输入quit(不区分大小写:").lower()
        if x != "quit":        #退出成功时不再打印输入内容
            print(x)
    
    active = True
    while active:
        g_input = input("如果想退出,请输入quit(不区分大小写):").lower()
        if g_input == "quit":
            active = False
        else:
            print(g_input)
            
    # 使用用户输入来填充字典
    dic = {}    #定义一个空字典
    active = True   #设置一个标志
    while active:
        name = input("您叫什么名字?")
        response = input("请问您喜欢什么户外运动?")
        dic[name] = response    #名字和答案以键值对存储进字典
        repeat = input("非常感谢您的配合!任意键退出/修改请输入yes:")
        repeat = repeat.lower()     #大小写不区分
        if repeat != "yes":
            active = False
    for name, response in dic.items():      #遍历字典
        print("
    姓名:" + name + "
    爱好:" + response)      #换行打印
        
    # 注册、保存账号密码、3次机会验证登录    
    while 1:
        name = input("请输入注册账号:")
        password = input("请输入注册密码:")
        confirm_password = input("请再一次确认密码:")
        if confirm_password == password:
            print("恭喜您注册成功")
            with open("text", mode="w+", encoding="utf-8") as file:
                file.write("{}
    {}".format(name, password))
            break
        else:
            continue
    i = 0
    lis = []
    while i < 3:
        use = input("请输入登录账号:")
        psd = input("请输入登录密码:")
        with open("text", mode="r+", encoding="utf-8") as file:
            for x in file:
                lis.append(x)
        if use == name and psd == password:
            print("登录成功")
            break
        else:
            print("登录失败")
        i += 1
        
    # 用户输入内容,计算"索引为奇数且对应的元素为数字"的个数
    content = input(">>>:")
    count = 0
    for i in range(len(content)):
        if i % 2 != 0 and content[i].isdigit():
            count += 1
    print(count)
    
    # 有列表lis = [1, 2, 3, 4, 5, 7, 8, 9],将所有小于6的值保存至字典
    的key1中,将大于6的值保存至字典的key2中
    lis = [1, 2, 3, 4, 5, 7, 8, 9]
    result = {"key1": [], "key2": []}
    for i in lis:
        if i < 6:
            if "key1" not in result:
                result["key1"] = []
            result["key1"].append(i)
        else:
            if "key2" not in result:
                result["key2"] = []
            result["key2"].append(i)
    print(result)
    
    lis = [1, 2, 3, 4, 5, 7, 8, 9]
    result = {}
    result.setdefault("key1", [])
    result.setdefault("key2", [])
    for i in lis:
        if i < 6:
            result["key1"].append(i)
        else:
            result["key2"].append(i)
    print(result)
    
    # 移除列表lis每个元素的空格、找出以"A"或者"a"开头、并以"c"结尾的所有元素,将这些元素添加到新列表中
    lis = ["taibai", "alexC", "AbC", "egon", "Ritian", "Wusir", " aqc"]
    lis1 = []
    lis2 = []
    lis3 = []
    for i in lis:
        lis1.append(i.strip())
    print(lis1)
    for i1 in lis1:
        if i1.startswith("A") or i1.startswith("a"):
            lis2.append(i1)
    for i2 in lis2:
        if i2.endswith("c"):
                lis3.append(i2)
    print(lis3)
    
    # 写程序:模拟公司HR录入员工账号密码的程序
    1)员工的账号密码存储在这种数据类型中
    user_list = [{"username": "barry", "password": "1234"}
                 {"username": "ppd", "password": "123456"}
                   .....................................  ]
    2)非法字符模板:board = ["张三", "李小四", "王二麻子"]
    3)HR输入用户名、密码(可持续输入,如果想终止程序,那就在输入用户名时输入Q或者q),在
    HR输入用户名时,检测此用户名是否有board里面的非法字符,如果有非法字符,则将非法字符替
    换成同数量的*,然后添加到user_list中,如果没有非法字符,则直接添加到user_list中,每次
    添加成功后,打印出刚添加的用户名、密码。
    user_list = []
    board = ["张三", "李小四", "王二麻子"]
    while 1:
        u_name = input("请输入用户名、退出程序请输入Q或者q:")
        if u_name.upper() == "Q":
            break
        for i in range(len(board)):
            if u_name == board[i]:
                u_name = len(board[i])*"*"
        ps_wd = input("请输入用户密码:")
        user_list.append({"username": u_name, "password": ps_wd})
        print(user_list)
        
    # 写函数,判断用户传入的值(字符串、列表、元组)的长度是否大于5
    def s_lenth(s):
        if len(s) > 5:
            return "right"
    ret = s_lenth("123456")
    print(ret)
        
    # 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果
    def func(x):
        if type(x) is str:
            for i in x:
                if i == ' ':
                    return True
        elif x and type(x) is list or type(x) is tuple:
            for i in x:
                if not i:
                    return True
        elif not x:
            return True
    print(func())
    
    # 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
    import os
    def alter_content(file, old_str, new_str):
        """
        将替换的字符串写到一个新的文件中,然后将原文件删除,新文件改为原来文件的名字
        file: 文件路径
        old_str: 需要替换的字符串
        new_str: 替换的字符串
        return: None
        """
        with open(testfile, "r", encoding="utf-8") as f1, open("%s.bak" % testfile, "w", encoding="utf-8") as f2:
            for line in f1:
                if old_str in line:
                    line = line.replace(old_str, new_str)
                f2.write(line)
        os.remove(testfile)
        os.rename("%s.bak" % testfile, testfile)
    alter_content("test", "你好", "测试")
         
    # 两个数相乘,计算结果保留2位小数
    a = eval(input())
    b = eval(input())
    print("面积是:%.5f" % (a*b))
    
    # 斐波那锲数列1,1,2,3,5,8,13...根据这样的规律,求出400
    万以内最大的斐波那锲数,并求出是第几个斐波那锲数
    def count(a, b):
        n = 0
        while b < 4000000:
            a, b = b, a+b
            n = n + 1
        return n, a                
    count(0, 1)               
    
    # 求第n个斐波那锲数
    def recursion(n):
        if n <= 2:
            return 1
        return recursion(n-1)+recursion(n-2)
    recursion(5)
    
    # 处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕
    def check_file(filename,check_content):
        with open(filename, encoding="utf-8") as f:
            for i in f:
                if check_content in i:
                    yield i
    generator = check_file("text", "id")
    for i in generator:
        print(i)    
                        
    # 如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格。
    计算购买每支股票的总价        
    portfolio = [{'name': 'IBM', 'shares': 100, 'price': 91.1},
                 {'name': 'AAPL', 'shares': 50, 'price': 543.22},
                 {'name': 'FB', 'shares': 200, 'price': 21.09},
                 {'name': 'HPQ', 'shares': 35, 'price': 31.75},
                 {'name': 'YHOO', 'shares': 45, 'price': 16.35},
                 {'name': 'ACME', 'shares': 75, 'price': 115.65}]
    res = map(lambda dic:{dic["name"]:round(dic["shares"]*dic["price"], 2)},portfolio)        
        
    # 用递归实现阶乘        
    def factorial(n):
        print(n)
        if n == 0:  #等于0就运算完了
            return 1
        return n * factorial(n - 1)  #每次递归相乘,n值都比之前小1
    res = factorial(4)
    print(res)        
                    
    # 随意写一个n行以上的文件
    1.运行程序,先将内容读到内存中,用列表存储
    2.接收用户输入页码,每页5条,仅输出当页的内容    
    def check_content(filename):
        with open(filename, "r", encoding="utf-8") as f:
            lis = f.readlines()
            pages, row = divmod(len(lis), 5)
            if row:
                pages += 1
            while True:
                page_num = input("请输入页码或者输入Q/q退出:")
                if page_num.isdigit():
                    page_num = int(page_num)
                    if page_num <= 0 or page_num > pages:
                        print("33[31;1m超出页码范围,请重新输入:33[0m")
                    elif page_num == pages and row !=0:
                        for i in range(row):
                            print(lis[(page_num - 1) * 5 + i].strip())
                    else:
                        for i in range(5):
                            print(lis[(page_num-1)*5 +i].strip())
                elif page_num.lower() == "q":
                    print("33[32;1m退出成功33[0m")
                    break
                else:
                    print("输入有误,请重新输入:")
                    continue
    check_content("text")
            
    import re
    data = {"time": "2016-80-05T13:13:05",
            "grp1": {"fld1": 1, "fld2": 2},
            "xxx2": {"fld3": 0, "fld5": 0.4},
            "fld6": 11,
            "fld7": 7,
            "fld46": 8}
    lis = []
    for k in data.keys():
        lis.append(str(k))
    for v in data.values():
        lis.append(str(v))
    ret = re.findall("fld[d]*", str(lis))
    ret = "|".join(ret)
    print(ret)  # fld7|fld46|fld6|fld1|fld2|fld3|fld5        
            
    # *************************************************    
    import re
    
    def deal_sign(expre_str):
        """处理表达式中的 +- 或 -- """
        exp_str = expre_str.replace("+-", "-")
        exp_str = expre_str.replace("--", "+")
        return exp_str
    
    def cal_exp_min(exp_min):
        """计算最小化的表达式(两个数之间的乘除)"""
        if "*" in exp_min:
            x, y = exp_min.split("*")
            return str(float(x)*float(y))
        elif "/" in exp_min:
            x, y = exp_min.split("/")
            return str(float(x) / float(y))
    
    def deal_express_no_bracket(express_no_bracket):
        """ 处理没有括号的表达式
            exp_no_bra是没有经过处理的最内层带括号的表达式"""
        exp = express_no_bracket.strip("()")
        print("3:  " + exp)
        # 先乘除后加减
        # -40/5*8+2
        while True:
            ret = re.search("d+.?d*[*/]-?d+.?d*", exp)
            if ret:  # True说明表达式中还有乘除法
                exp_min = ret.group()  # 得到最简单的表达式
                print("4:  " + exp_min)
                ret_min = cal_exp_min(exp_min)  # 调用
                print("5:  " + ret_min)
                exp = exp.replace(exp_min, ret_min)
                exp = deal_sign(exp)
            else:
                ret = re.findall("-?d+.?d*", exp)
                sum = 0
                for i in ret:
                    sum = sum + float(i)
                    print("结果:", sum)
                return str(sum)
    
    def remove_bracket(express_str):
        """提取括号里面没有括号的表达式"""
        while True:
            ret = re.search("([^()]+)", express_str)
            if ret:
                express_no_bracket = ret.group()
                print("2:  " + express_no_bracket)
                new_ret = deal_express_no_bracket(express_no_bracket)  # 调用
                print("6:  " + new_ret)  # replace(2, 6)
                express_str = express_str.replace(express_no_bracket, new_ret)
                print("7:  " + express_str)
                exp_str = deal_sign(express_str)  # 调用
                print("8:  " + exp_str)
            else:
                print(exp_str)
                ret = deal_express_no_bracket(exp_str)
                return ret
    
    def cal_express():
        """去空格"""
        express_str = input("请输入要计算的表达式:")
        express_str = express_str.replace(" ", "")
        print("1:  " + express_str)
        remove_bracket(express_str)
    
    if __name__ == "__main__":
        cal_express()    
  • 相关阅读:
    对象与内存控制1---实例变量和类变量
    数组与内存控制2--数组使用
    数组与内存控制1--数组初始化
    Java 三大特征之--多态
    简述Java面向对象三大特征:封装、继承、多态
    java程序初始化的顺序
    关于public static void main(String[] args)相关知识
    Java的优点
    前端面试攻略3------HTML和CSS部分
    前端面试攻略2------计算机网络部分
  • 原文地址:https://www.cnblogs.com/believepd/p/10393634.html
Copyright © 2011-2022 走看看