commit 5d63019efaa58a2a1fcd5e28b579693185a309eb Author: dustoair <107600816+dustoair@users.noreply.github.com> Date: Tue Jul 26 11:03:10 2022 +0800 0726 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b4c29b --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +venv +big.txt +big.txt.gz +big.txt.gz.gpg +big.txt.gpg +big.txt.lzma +big.txt.lzma.gpg +big.txt.lzma.gpg.gpg +big.txt.lzma.gpg.gpg.gpg +dump.txt +test.txt \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..410b105 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cc222f1 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/pyTestCases.iml b/.idea/pyTestCases.iml new file mode 100644 index 0000000..74d515a --- /dev/null +++ b/.idea/pyTestCases.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..5596b44 --- /dev/null +++ b/main.py @@ -0,0 +1,16 @@ +# This is a sample Python script. + +# Press Shift+F10 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. + + +def print_hi(name): + # Use a breakpoint in the code line below to debug your script. + print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint. + + +# Press the green button in the gutter to run the script. +if __name__ == '__main__': + print_hi('PyCharm') + +# See PyCharm help at https://www.jetbrains.com/help/pycharm/ diff --git a/t0726.py b/t0726.py new file mode 100644 index 0000000..6e47199 --- /dev/null +++ b/t0726.py @@ -0,0 +1,428 @@ +import os +import random +import re +import string +import sys + + +def sumNumber(n): + sum = 0 + for i in range(1, n+1): + sum += i + return sum +def listDuplicate(list): + list_duplicate = [] + for i in list: + if i not in list_duplicate: + list_duplicate.append(i) + return list_duplicate +def listDuplicate2(list): + list1 = [] + for i in set(list): + list1.append(i) + return list1 +def listDuplicate3(list): + return [i for i in set(list)] + +def fileLine(file): + with open(file, 'r') as f: + for line in f: + print(line) +def fileLine2(file): + with open(file, 'r') as f: + for line in f: + print(line.strip()) +def fileLine3(file): + with open(file, 'r') as f: + for line in f: + print(line.strip().split()) +def fileLine4(file): + with open(file, 'r') as f: + for line in f: + print(line.strip().split(',')) +def fileLine5(file): + with open(file, 'r') as f: + for line in f: + print(line.strip().split(',')[0]) +def fileLine6(file): + with open(file, 'r') as f: + for line in f: + print(line.strip().split(',')[1]) +def stringUnicode(): + s1 = "去除首尾空格" + s2 = u"去除首尾空格" #无前缀 & u前缀 字符串默认创建即以Unicode编码存储,可以存储中文。 + #s3 = b"去除首尾空格" SyntaxError: bytes can only contain ASCII literal characters + s4 = b"hello" #b前缀 字符串存储为Ascll码,无法存储中文。 + s5 = r"hello" #r前缀就相当于三引号,主要解决的是 转义字符,特殊字符 的问题,其中所有字符均视为普通字符。 + print(s1) + print(s2) + print(s4) + print(s5) +def randomFunc(): + a = random.random() #随机生成0-1之间的小数 + b = random.randint(1, 10) #随机生成1-10之间的整数 + c = random.randrange(1, 10, 2) #随机生成1-10之间的整数,步长为2 + d = random.choice(['a', 'b', 'c']) #随机生成['a', 'b', 'c']中的一个 + e = random.sample(['a', 'b', 'c'], 2) #随机生成['a', 'b', 'c']中的2个 + f = random.choices(['a', 'b', 'c'], k=2) #随机生成['a', 'b', 'c']中的2个 + g = random.SystemRandom().random() #随机生成系统安全的随机数 + print(a) + print(b) + print(c) + print(d) + print(e) + print(f) + print(g) +def stringReverse(): + s1 = "hello world" + s2 = s1[::-1] #[::-1]表示从后向前 + print(s2) + s3l = list(s1) + lens1 = len(s1) + for i in range(lens1): + s3l[i] = s1[lens1-i-1] + print("".join(s3l)) #join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。 + s4l = list(s1) + print("".join(s4l[::-1])) + s5l = list(s1) + s5l.reverse() + print("".join(s5l)) +def listTupleDict(): + list1 = [1, 2, 3, 4, 5] + tuple1 = (1, 2, 3, 4, 5) + set1 = {1, 2, 3, 4, 5} + dict1 = {'a': 1, 'b': 2, 'c': 3} + print(list1) + print(tuple1) + print(dict1) + print(set1) +def isNone(): + a = None + if a is None: + print("a is None") + else: + print("a is not None") +def listReverse(): + list1 = [1, 2, 3, 4, 5] + list1.reverse() + print(list1) + s1 = "hello world" +def negativeIndex(): + list1 = [1, 2, 3, 4, 5] + print(list1[-1]) + print(list1[-2]) + print(list1[0]) + print(list1[-0]) + print(list1[::-1]) + print(list1[::-1]) +def chaosList(): + list1 = [1, 2, 3, 4, 5] + random.shuffle(list1) + print(list1) + list1.sort() + print(list1) + list1.sort(reverse=True) + print(list1) + list1.reverse() + print(list1) + list1.reverse() + print(list1) +def joinSplit(): + s1 = "hello world" + list1 = s1.split() #分割字符串,返回列表 + print(list1) + s2 = " ".join(list1) #将列表中的元素连接成字符串 + print(s2) +def stringStrip(): + s1 = " hello world " + print(s1.strip()) #去除首尾空格 + print(s1.lstrip()) #去除首部空格 + print(s1.rstrip()) #去除尾部空格 + s1.replace(" ", "") #替换字符串中的字符 + print(s1) +def passUsage(): + a = 1 + if a == 1: + pass #在编写代码时只写框架思路,具体实现还未编写就可以用 pass 进行占位,使程序不报错,不会进行任何操作。 +def isIn(): + list1 = [1, 2, 3, 4, 5] + print(1 in list1) + print(6 in list1) + print(6 not in list1) + list2 = [1, 2, 3, 4, 5] + print(list1 == list2) + print(list1 is list2) +def tupleList(): + tuple1 = (1, 2, 3, 4, 5) + list1 = list(tuple1) + print(list1) + tuple2 = tuple(list1) + print(tuple2) + list1.append(6) + del(list1[0]) + print(list1) + del(list1[0:1]) + print(list1) + list1.remove(5) + print(list1) +def getInfo(): + x,y = 1,"hello" + return x,y +def searchMatch(): + s1 = "hello world" + a = re.match(r"hello", s1) + a.group() +def fileCreate(): + f = open("test.txt", "w") + f.write("hello world") + f.close() +def fileDelete(): + os.remove("test.txt") +def zenOfPython(): + print("Beautiful is better than ugly.") + print("Explicit is better than implicit.") + print("Simple is better than complex.") + print("Complex is better than complicated.") + print("Flat is better than nested.") + print("Sparse is better than dense.") + print("Readability counts.") + print("Special cases aren't special enough to break the rules.") + print("Although practicality beats purity.") + print("Errors should never pass silently.") + print("Unless explicitly silenced.") + print("In the face of ambiguity, refuse the temptation to guess.") + print("There should be one-- and preferably only one --obvious way to do it.") + print("Although that way may not be obvious at first unless you're Dutch.") + print("Now is better than never.") + print("Although never is often better than *right* now.") + print("If the implementation is hard to explain, it's a bad idea.") + print("If the implementation is easy to explain, it may be a good idea.") + print("Namespaces are one honking great idea -- let's do more of those!") +def stringSplicing(): + s1 = "hello world" + s2 = " hahha" + print(s1 + s2) + s3 =s1,s2 + print(s3) + print(s1.join(s2)) +def pickleUsage(): + import pickle + d1 = dict(name="Bob", age=20, score=88) + print(d1) + print(type(d1)) + b1 = pickle.dumps(d1) #将 Python 中的对象序列化成二进制对象,并返回; + print(b1) + print(type(b1)) + d2 = pickle.loads(b1) #读取给定的二进制对象数据,并将其转换为 Python 对象; + print(d2) + print(type(d2)) + pickle.dump(d1, open("test.txt", "wb")) #将 Python 中的对象序列化成二进制对象,并写入文件; + d3 = pickle.load(open("test.txt", "rb")) #读取指定的序列化数据文件,并返回对象。 + print(d3) + print(type(d3)) +def dirTypeInstance(): + # dir() + # 函数是 + # Python + # 自省机制中最著名的部分了。它返回传递给它的任何对象的属性名称经过排序的列表。如果不指定对象,则 + # dir() + # 返回当前作用域中的名称。 + # type() + # 函数有助于我们确定对象是字符串还是整数,或是其它类型的对象。 + # 对象拥有属性,并且 + # dir() + # 函数会返回这些属性的列表。但是,有时我们只想测试一个或多个属性是否存在。如果对象具有我们正在考虑的属性,那么通常希望只检索该属性。这个任务可以由 + # hasattr() + # 和 + # getattr() + # 函数来完成。 + # isinstance() + # 函数测试对象,以确定它是否是某个特定类型或定制类的实例。 + s1 = "hello world" + print(dir()) + print(dir(s1)) + dir() #dir() 函数是 Python 自省机制中最著名的部分了。它返回传递给它的任何对象的属性名称经过排序的列表。如果不指定对象,则 dir() 返回当前作用域中的名称。 + print(type(s1)) + type(s1) #type() 函数返回对象的类型。 + isinstance(s1, str) #isinstance() 函数用于判断一个对象是否是一个已知的类型。 + print(isinstance(s1, str)) +def dictUsage(): + dict1 = {"name":"Bob", "age":20, "score":88} + print(dict1) + print(type(dict1)) + print(dict1["name"]) + print(dict1.get("name")) + print(dict1.get("name", "default")) + print(dict1.get("name1", "default")) + dict1.setdefault("name1", "default") + print(dict1) + dict1["name"] = "Jack" + print(dict1) + del(dict1["name"]) + print(dict1) + #dict(中文叫字典)是另一种可变容器模型,且可存储任意类型对象。 +# 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 +# 字典的特性 +# +# 查找速度快 +# 无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。 +# 不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。 +# 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。 +# 不允许同一个键出现两次。 +# 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。 +# dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样。 +def multiThreads(): + import threading + import time + def run(n): + print("task", n) + time.sleep(2) + print("task done", n) + def run1(n): + print("task1", n) + time.sleep(2) + print("task1 done", n) + + for i in range(500000): + for p in range(16): + tt = threading.Thread(target=run, args=(i,)) + tt1 = threading.Thread(target=run1, args=(i,)) + tt.start() + tt1.start() + print("main thread") + time.sleep(10) + print("main thread done") + +def triElement(): + x = 1 + y =2 + #z = x>y?x:y + z = x if x>y else y + print(z) +def printBase(): + print("hello world") + print("hello world") + sys.stdout.write("hello world\n") + sys.stdout.flush() +def rangeXrange(): + list1 = [1,2,3,4,5,6,7,8,9,10] + for i in range(len(list1)): + print(list1[i]) + for i in list1: + print(i) +def rangex(): + list(xrange(0,6,2)) +def writeBigFile(): + with open("big.txt", "w") as f: + for i in range(1000000000): + f.write("hello world\n") +def getFileInfo(): + import os + print(os.name) + print(os.uname()) + print(os.environ) + print(os.environ.get("path")) + print(os.path.abspath(".")) + print(os.path.join("/tmp", "test")) + print(os.path.split("/tmp/test.txt")) + print(os.path.splitext("/tmp/test.txt")) + print(os.path.exists("/tmp/test.txt")) + print(os.path.isfile("/tmp/test.txt")) + print(os.path.isdir("/tmp/test.txt")) + print(os.path.getsize("/tmp/test.txt")) + print(os.path.getatime("/tmp/test.txt")) + print(os.path.getmtime("/tmp/test.txt")) + print(os.path.getctime("/tmp/test.txt")) + print(os.path.getcwd()) + print(os.listdir("/tmp")) + print(os.path.exists("/tmp/test.txt")) + print(os.path.isfile("/tmp/test.txt")) + print(os.path.isdir("/tmp/test.txt")) + print(os.path.getsize("/tmp/test.txt")) + print(os.path.getatime("/tmp/test.txt")) + print(os.path.getmtime("/tmp/test.txt")) + print(os.path.getctime("/tmp/test.txt")) + print(os.path.getcwd()) + print(os.listdir("/tmp")) + print(os.path.exists("/tmp/test.txt")) + print(os.path.isfile("/tmp/test.txt")) + print(os.path.isdir("/tmp/test.txt")) + print(os.path.getsize("/tmp/test.txt")) +def getFileSize(): + import os + print(os.path.getsize("big.txt")) +def readBigFile(): + with open("big.txt", "r") as f: + for line in f: + print(line) +def readBigFileByLine(): + with open("big.txt", "r") as f: + while True: + line = f.readline(100) + if not line: + break + print(line) +def tryExceptFinally(): + try: + print("try") + raise Exception("error") + return 2 + + except Exception as e: + print("except") + raise e + return 1 + + finally: + print("finally") + return 3 +def sayHello(): + """ +这是docstring +""" + #print(sayHello.__doc__) + print("hello world") +def stringType(): + s1 = "hello world" + s2 = "444444444444444444444" + print(s1.isalnum()) + print(s1.isalpha()) + print(s2.isdigit()) + str.isalnum() + # 所有字符都是数字或者字母 + # str.isalpha() + # 所有字符都是字母 + # str.isdigit() + # 所有字符都是数字 + # str.isspace() + # 所有字符都是空白字符、t、n、r +def concatenation(): + list1 = [1,2,3,4,5,6,7,8,9,10] + list2 = [11,12,13,14,15,16,17,18,"dsdsdsdsd",20] + list3 = list1 + list2 + print(list3) +def getBoth(): + list1 = [1,2,3,4,5,6,7,8,9,10] + list2 = [11,2,13,14,15,16,17,18,"dsdsdsdsd",20] + for i in list1: + if i in list2: + print(i) +def sliceUsage(): + list1 = [1,2,3,4,5,6,7,8,9,10] + print(list1[0:5]) + #Go 中的 slice 就像是 Python 中的 list,但是 Python 中的 list 支持非常多的操作,有很丰富的内置函数去操作,但是 Go 中的 slice 只有简单 append 函数和切片功能,好吧,我们自己实现这些功能。 + + + + + + + +if __name__ == '__main__': + sliceUsage() + + #fileLine4('t0726.py') + #list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 9] + #print(listDuplicate(list1)) + #print(listDuplicate3(list1)) + #print(sumNumber(100))