day2-python

1. 列表、元组操作

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

列表操作:切片:取多个元素、追加、插入、修改、删除、扩展、拷贝、统计、排序&翻转、获取下标。

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

2. 字符串、列表、字典、集合

字符串:a=‘123‘

列表:b=[‘1‘,‘2‘,‘3‘]

字典:c={‘1‘:‘abc‘,‘2‘:‘def‘}

集合:d=set(a)

3. 文件操作

对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件 

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

    "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab
# Author:daemon chai

f=open("yesterday2","w+",encoding="utf-8")
f.write("------add-----------\n")
f.write("------df-----------\n")
f.write("------dfasfasdf---------\n")

print(f.tell())
print(f.seek(0))
print(f.readline())

f.write("------czk-----------")
f.close()

with语句

with open("record", "w", encoding="utf-8") as f:
    f.write("")

4、函数基本语法及特性

函数是什么?

函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

特性:

  1. 减少重复代码
  2. 使程序变的可扩展
  3. 使程序变得易维护

函数参数与局部变量  

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

示例展示:

# Author:daemon chai
old_index = -1
new_dict={}
other_list=[]
#将配置文件读取出来,需要修改的信息存储在字典里面
with open("haproxy","r",encoding="utf-8") as f :
    for index,line in enumerate(f) :
        #存储配置文件中节点的bakend
        if line.strip().startswith("bakend") :
            old_index = index + 1
            user_name=line.strip().split()[1].split(‘.‘)[1]
            new_dict[user_name]={}
            new_dict[user_name]["bakend"]=line.strip().split()[1]
            name=line.strip().split()[1]
            # print(new_list[user_name])
        #存储节点信息的record
        elif old_index == index :
            new_dict[user_name]["record"]={}
            new_dict[user_name]["record"]["server"]=line.strip().split()[1]
            new_dict[user_name]["record"]["weight"] = line.strip().split()[3]
            new_dict[user_name]["record"]["maxconn"] = line.strip().split()[5]
        #存储其他不需要修改的信息
        else:
            other_list.append(line.strip())

while True:
    print("请选择需要的功能".center(50,"="))
    #打印已有节点信息
    print("已有的节点:")
    for dict_one in new_dict:
        print(dict_one)
#提供功能选择界面
    print("现有功能:\nc、查询;\na、增加;\nr、修改;\nd、删除;\nq、退出。")
    choice = input("请选择你需要的功能:")
    #查询操作
    if choice ==‘c‘ :
        while True:
            choice_query = input("请输入查询的节点,退出(q):")
            if choice_query == "q":
                break
            elif choice_query in new_dict:
                print("节点名称:", new_dict[choice_query]["bakend"])
                print("ip地址:", new_dict[choice_query]["record"]["server"])
                print("权重:", new_dict[choice_query]["record"]["weight"])
                print("连接数:", new_dict[choice_query]["record"]["maxconn"])
            else:
                print("输入错误,请重新输入")
    #添加操作
    elif choice==‘a‘:
        while True:
            add_simple_name = input("请输出节点简称")
            add_name = input("请输出节点名称")
            add_ip = input("请输出节点ip")
            add_weight = input("请输出节点权重")
            add_maxconn = input("请输出节点最大连接数")
            new_dict[add_simple_name]={}
            new_dict[add_simple_name]["bakend"] = add_name
            new_dict[add_simple_name]["record"] = {}
            new_dict[add_simple_name]["record"]["server"] = add_ip
            new_dict[add_simple_name]["record"]["weight"] = add_weight
            new_dict[add_simple_name]["record"]["maxconn"] = add_maxconn
            print("添加成功",new_dict[add_simple_name])
            break
    #修改节点信息操作
    elif choice == ‘r‘:
        while True:
            return_name = input("你想修改哪个节点啊?退出(q)")
            if return_name == "q":
                break
            elif return_name in new_dict:
                new_dict[return_name]["bakend"] = input("请输出修改后节点名称(例如www.user.org)")
                new_dict[return_name]["record"]["server"] = input("请输出修改后节点ip")
                new_dict[return_name]["record"]["weight"] = input("请输出修改后节点权重")
                new_dict[return_name]["record"]["maxconn"] = input("请输出修改后节点最大连接数")
                print("保存退出后修改才会生效")
                break
    #删除节点操作
    elif choice == ‘d‘:
        while True:
            delete_name = input("你想删除那个节点呢,退出(q)?")
            if delete_name == "q":
                break
            elif delete_name in new_dict:
                del new_dict[delete_name]
                print("删除成功!")
            else:
                print("没有这个节点,重新输入!")
    #退出操作,将修改后的节点信息存储进文件
    elif choice == ‘q‘:
        with open("haproxy", "w") as f1 :
            f1.write("")
        for i in other_list:
            with open("haproxy", "a") as f2 :
                f2.write("%s\n"%i)
        for i in new_dict:
            with open("haproxy", "a") as f3 :
                f3.write("bakend %s\n\tserver %s weight %s maxconn %s\n\n"                         %(new_dict[i]["bakend"], new_dict[i]["record"]["server"], new_dict[i]["record"]["weight"],                           new_dict[i]["record"]["maxconn"]))
        print("退出程序成功")
        break
    else:
        print("输入错误,请重新输入\n")
时间: 2024-08-10 16:57:52

day2-python的相关文章

Python之路,Day2 - Python基础2

Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 names = ['Alex',"Tenglan",'Eric'] 通过下标访问列表中的元素,下标从0开始计数 1 2 3 4 5 6 7 8 >>> names[0] 'Alex' >>> na

day2—Python基本知识的补充:对象的方法

以下方法是由景丽洋在工作中总结出来的常用的字符串方法. 1..count()方法 作用:统计字符串中指定字符的个数. #!/usr/bin/env python # Author:William Huang str = 'www.oldboyedu.com' a = str.count('o') # 如果被统计的字符串中有多个字符,则只会统计第一个字符的位置 print(a) 返回结果为:3 ----------------------------------------------------

Day2 - Python模块-01

模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 第三方模块 内置模块 1.自定义模块 情景一: 情景二: 情景三: 2.导入模块 Python之所以应用越来越广泛,在一定程度

Day2 - Python基础(列表,元组等)

本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表示例 1 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"] 通过下标访问列表中的元素,下标从0开始计数 1 >>> names[0] 2 'Zh

Day2 Python学习 数组,循环,字符串

一.学习的内容 1.命令 sys.path() 显示当前环境变量 2.命令os.system("dir") 显示当前目录内的文件,只显示,不保存结果 3.命令text = os.popen("dir").read() 显示当前目录内的文件,可保存结果 4.命令 os.mkdir("new_dir") 创建一个叫"new_dir"的文件夹 5.三元运算 a,b,c = 1,2,3 d = a if a> b else c

Python day2 ---python基础2

本节内容 列表. 元组操作 购物车程序 字符串操作 字典操作 3级菜单 作业(购物车优化) 1. 列表操作 1.定义列表names = ['Alex',"Tenglan",'Eric'] 2.追加 3.插入 4.修改 5.打印元素 6.切片        7.索引(获取下标) 和统计 8.删除 和 清除         9.翻转和排序 10.扩展 11.Copy 12.浅copy ,深copy 13.循环,打印列表 14.步长切片 2.元组操作 元组其实跟列表差不多,也是存一组数,只不

Python之路,Day2 - Python基础,列表,循环

1.列表练习name0 = 'wuchao'name1 = 'jinxin'name2 = 'xiaohu'name3 = 'sanpang'name4 = 'ligang' names = "wuchao jinxin xiaohu sanpang ligang"a=['wuchao','jinxin','xiaohu','sanpang','ligang'] #增删改查#增 切片print(a[1:])#取到最后print(a[1:-1])#取到倒数第二值print(a[1:-1:

Python自动化开发,Day2 - Python基础2

本章内容 holle word 变量 字符编码 用户输入 模块初始 数据类型 数据运算 if......else 一.第一个程序 holle word 1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author:Lyon 4 5 print("holle word") 在Python3.5.2环境下执行,执行结果如下: 1 Python 3.5.2 (v3.5.2:4def2a2901a5,Jun 25 2016, 22:18

Day-2: Python学习资源

记录下目前学习Python用到的资源,个人感觉这些都是很好的! 小白入门 简明的Python教程:特点语言明白易懂,每节都有历程,边学边练学习的更深刻 慕课网Python入门和Python进阶:结合互联网的新型学习平台,特点课程有安排,视频讲解与阅读相结合,每章也有练习题,网站功能很全面:笔记.提问交流等,应有尽有. 廖雪峰的Python教程:其实上面那个就是廖雪峰在慕课网上的教程,相比而言,这个网站上的教程更全面详细,而且更方便查看. 爬虫学习 静觅的爬虫学习系列教程:分为1.爬虫入门 2.爬

Studing Day2 - python基础2

11.30 一.模块 sys 模块 sys.path是python的搜索模块的路径集,是一个list sys.argb是打印相对路径 os模块 os.system("dir") a = os.system("dir")    # 调用是直接输出到屏幕上,并不会保存下来 print('-->', a)           # 输出0,代表执行成功 os.mkdir("new_dir")    # 在当前目录创建目录 创建模块 二.数据类型 1