From fddb87fe4246c41eeb99863584e735b181925831 Mon Sep 17 00:00:00 2001
From: yangpengflag <38930516+yangpengflag@users.noreply.github.com>
Date: Mon, 28 Jan 2019 11:08:01 +0800
Subject: [PATCH] init commit

---
 deleteNode.py                    | 41 +++++++++++++++++++++++++++++++++++++++++
 file_utils.py                    | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 loggerutils/__init__.py          |  0
 loggerutils/log.properties       | 11 +++++++++++
 loggerutils/logger_properties.py | 23 +++++++++++++++++++++++
 loggerutils/logger_utils.py      | 10 ++++++++++
 nim_game.py                      | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 222 insertions(+)
 create mode 100644 deleteNode.py
 create mode 100644 file_utils.py
 create mode 100644 loggerutils/__init__.py
 create mode 100644 loggerutils/log.properties
 create mode 100644 loggerutils/logger_properties.py
 create mode 100644 loggerutils/logger_utils.py
 create mode 100644 nim_game.py

diff --git a/deleteNode.py b/deleteNode.py
new file mode 100644
index 0000000..27b0786
--- /dev/null
+++ b/deleteNode.py
@@ -0,0 +1,41 @@
+
+'''
+链表至少包含两个节点。
+链表中所有节点的值都是唯一的。
+给定的节点为非末尾节点并且一定是链表中的一个有效节点。
+不要从你的函数中返回任何结果。
+'''
+
+class Solution:
+    def deleteNode(self, node):
+
+        """
+        :type node: ListNode
+        :rtype: void Do not return anything, modify node in-place instead.
+        输入: head = [4,5,1,9], node = 5
+        输出: [4,1,9]
+
+        """
+        if node == None:
+            return node
+
+        if node.next == None:
+            node = None
+
+        node.val = node.next.val
+        node.next = node.next.next
+
+
+    #     temp = []
+    #     for i in range(len(head)):
+    #         if head[i] == node:
+    #             continue
+    #         else:
+    #             temp.append(head[i])
+    #     return temp
+    #
+    #
+    # head = [4,5,1,9]
+    # node = 5
+    #
+    # print(deleteNode(head,node))
diff --git a/file_utils.py b/file_utils.py
new file mode 100644
index 0000000..8d10a25
--- /dev/null
+++ b/file_utils.py
@@ -0,0 +1,88 @@
+import os
+import shutil
+import logging
+
+
+
+
+# 实现图片文件的复制
+'''
+定义一个函数,接受两个参数,第一个参数是原始图片文件,第二个参数是复制到的路径
+'''
+def copy_image(source_file,target_path):
+
+    if not os.path.exists(target_path):
+        os.makedirs(target_path)
+
+    if os.path.exists(source_file):
+        # shutil.copy(r'要复制的文件路径(路径+文件)',r'复制到的路径') bits模式
+        shutil.copy(source_file, target_path)
+        # shutil.copyfileobj(open(source_file, 'rb'), open(target_path, 'wb'))
+        print(source_file)
+        print(target_path)
+
+
+"""
+    这里要考虑,给定的参数file_path是文件还是文件夹,如果是文件则直接列出来文件名称就可以
+    如果是文件夹,那么要列出这个文件夹下所有的文件名称,同时要考虑,文件夹下是否还有文件夹
+    直到保证此文件夹下再不包含文件夹,列出所有的文件名称即可
+    # 每当读取一个文件夹时,打一个info级别的log,标记开始读取哪个文件夹
+"""
+def get_files(file_path):
+    if not os.path.exists(file_path):
+        logging.warning("地址不存在,请检查")
+    if os.path.isfile(file_path):
+        print(file_path[0:file_path.find("\\|/")])
+        return file_path
+
+    if os.path.isdir(file_path):
+        print("该地址是文件夹")
+        files = os.listdir(file_path)
+        for i in range(len(files)):
+            logging.info("开始读取文件夹%s" %files[i])
+            print("开始读取文件夹%s" %files[i])
+            filelist = os.path.join(file_path,files[i])
+            if len(filelist) > 0:
+                get_files(os.path.abspath(filelist))
+
+    print("文件读取完毕")
+
+
+
+'''
+从一个目录将全部文件(包含子目录)copy到另外一个目录,只copy文件,不操作文件夹
+'''
+def copy_dir_2_dir(source_path,target_path):
+
+    if not os.path.exists(target_path):
+        os.makedirs(target_path)
+
+    if os.path.exists(source_path):
+        # root 所指的是当前正在遍历的这个文件夹的本身的地址
+        # dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)
+        # files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录,只copy子目录中的文件,目录结构不copy)
+        for root, dirs, files in os.walk(source_path):
+            print("root:%s" % root)
+            print("dirs:%s" % dirs)
+            print("files:%s" % files)
+            for file in files:
+                src_file = os.path.join(root, file)
+                shutil.copy(src_file, target_path)
+                print(src_file)
+
+    print('copy files finished!')
+
+
+
+
+# copy图片
+# copy_image("D:/wechaticon.png","D:/test1/")
+#
+#  # copy视频
+# copy_image("D:/珠宝展示网站用视频新版_x264.mp4","D:/test1/")
+
+
+# get_files("D:\\wechaticon.png")
+# get_files("D:\\test1")
+
+copy_dir_2_dir("D:\\壁纸","D:\\test1")
\ No newline at end of file
diff --git a/loggerutils/__init__.py b/loggerutils/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/loggerutils/__init__.py
diff --git a/loggerutils/log.properties b/loggerutils/log.properties
new file mode 100644
index 0000000..30f469d
--- /dev/null
+++ b/loggerutils/log.properties
@@ -0,0 +1,11 @@
+# ָ����־���Ŀ���ļ����ļ�����ָ�������������־���ľͲ��ᱻ���������̨��
+filename = aitest.log
+
+# ָ����־������־����
+level = DEBUG
+
+# ָ����־��ʽ�ַ�������ָ����־���ʱ���������ֶ���Ϣ�Լ����ǵ�˳��
+format = %(asctime)s - %(levelname)s  - %(message)s
+
+# ָ������/ʱ���ʽ����Ҫע����ǣ���ѡ��Ҫ��format�а���ʱ���ֶ�%(asctime)sʱ����Ч
+datefmt = %Y/%m/%d %H:%M:%S
\ No newline at end of file
diff --git a/loggerutils/logger_properties.py b/loggerutils/logger_properties.py
new file mode 100644
index 0000000..53abbe6
--- /dev/null
+++ b/loggerutils/logger_properties.py
@@ -0,0 +1,23 @@
+class Properties():
+    def __init__(self,filename):
+        self.properties_file_name = filename
+        self.properties = {}
+
+    def get_properties(self) ->dict:
+        with open(self.properties_file_name,'r',encoding="UTF-8") as pro_file:
+            for line in pro_file.readlines():
+                line = line.strip().replace("\n","")
+                if line.find("#") != -1:
+                    line = line[0:line.find("#")]
+                if line.find("=") > 0:
+                    strs = line.split("=")
+                    self.__get_dit(strs[0].strip(),self.properties,strs[1].strip())
+        return self.properties
+
+    def __get_dit(self, key_name, result_dict, key_value):
+        if (key_name.find(".") > 0):
+            k = key_name.split(".")[0]
+            result_dict.setdefault(k, {})
+            return self.__get_dit(key_name[(len(k)+1):], result_dict(k), key_value)
+        else:
+             result_dict[key_name] = key_value
diff --git a/loggerutils/logger_utils.py b/loggerutils/logger_utils.py
new file mode 100644
index 0000000..e5b2fca
--- /dev/null
+++ b/loggerutils/logger_utils.py
@@ -0,0 +1,10 @@
+from loggerutils.logger_properties import Properties
+import logging
+
+
+def set_log_config():
+    log_config = Properties('log.properties').get_properties()
+
+    logging.basicConfig(**log_config)
+
+    logging.debug("debug  ******")
\ No newline at end of file
diff --git a/nim_game.py b/nim_game.py
new file mode 100644
index 0000000..9fdf34d
--- /dev/null
+++ b/nim_game.py
@@ -0,0 +1,49 @@
+'''
+你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
+
+你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
+
+示例:
+
+输入: 4
+输出: false
+解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;
+     因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
+
+'''
+
+
+def nim_game_by_recursive(stone_num):
+    if stone_num <= 0:
+        print("请输入大于0的整数")
+        return False
+    # 当轮到你拿时剩余的石块大于0小于4,你讲获胜
+    if stone_num > 0 and stone_num < 4 :
+        return True
+    # 使用递归判断,但是数字大的时候可能会出现递归太深的问题
+    return not(nim_game_by_recursive(stone_num-1) & nim_game_by_recursive(stone_num-2) & nim_game_by_recursive(stone_num-3))
+
+print(nim_game_by_recursive(16))
+print(nim_game_by_recursive(8))
+print(nim_game_by_recursive(4))
+print(nim_game_by_recursive(20))
+print(nim_game_by_recursive(5))
+print(nim_game_by_recursive(6))
+print(nim_game_by_recursive(7))
+
+#发现一个规律,只要被4整除都不可能赢。。。。
+def nim_game(stone_num):
+    if stone_num % 4 != 0:
+        return True
+    else:
+        return False
+
+
+
+
+print(nim_game(1))
+print(nim_game(2))
+print(nim_game(3))
+print(nim_game(4))
+print(nim_game(5))
+print(nim_game(6))
--
libgit2 0.26.0