Python学习笔记之可迭代对象

2019-9-19 张宇童 Python

# 可迭代对象 
# range(start,[end,step])
'''
参数1 start 开始值
参数2 end   结束值
参数3 step  步  长
''' 
for i in range(1,10,2):
    print(i,end = ',') # 1,3,5,7,9,

# range 九九乘法表
'''
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
'''
for i in range(1,10):
    for x in range(1,i + 1):
        print('%d*%d=%-2d' % (x,i,x*i),end = '  ')
    print()

# 将九九乘法表倒过来
'''
                                                                        1*1=1    
                                                               1*2=2    2*2=4    
                                                      1*3=3    2*3=6    3*3=9    
                                             1*4=4    2*4=8    3*4=12   4*4=16   
                                    1*5=5    2*5=10   3*5=15   4*5=20   5*5=25   
                           1*6=6    2*6=12   3*6=18   4*6=24   5*6=30   6*6=36   
                  1*7=7    2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49   
         1*8=8    2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64   
1*9=9    2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72   9*9=81 
'''
for i in range(9,0,-1):
    print(' '*9*(i-1),end='')
    for x in range(1,(10-i)+1):
        print('%d*%d=%-2d' % (x,(10-i),(10-i)*x),end='   ')
    print()

标签: python 学习笔记

评论(0) 浏览(535)

Python学习笔记之关键字

2019-9-19 张宇童 Python

# pass break continue 关键字
# pass 用来占位
# example1
# if True: 
    # 如果这里什么都没有写 将会报错
    # File "/Users/root/Desktop/# pass break continue example.py", line 5
# example2
if True:
    pass # 如果加上pass 将不会报错
    # print(123)

# example3
a = 0
while a < 10:
    pass
    a+=1

# example4
n = 0
while n < 100:
    n+=1
    # print(n)
    if n >= 5: 
        break 

# example5
n = 0;
while n < 10:
    n+=1
    if n % 2 == 1:
        continue
    
    print(n)

标签: python 学习笔记

评论(0) 浏览(508)

Python学习笔记之关键字

2019-9-19 张宇童 Python

# pass break continue 关键字
# pass 用来占位
# example1
# if True: 
    # 如果这里什么都没有写 将会报错
    # File "/Users/root/Desktop/# pass break continue example.py", line 5
# example2
if True:
    pass # 如果加上pass 将不会报错
    # print(123)

# example3
a = 0
while a < 10:
    pass
    a+=1

# example4
n = 0
while n < 100:
    n+=1
    # print(n)
    if n >= 5: 
        break 

# example5
n = 0;
while n < 10:
    n+=1
    if n % 2 == 1:
        continue
    
    print(n)

标签: python 学习笔记

评论(0) 浏览(485)

Python学习笔记之for循环

2019-9-19 张宇童 Python

# 时间:2019年9月19日 10:54
# for in 循环
# 字符串遍历
strvar = "欢迎来到张宇童博客"
for i in strvar:
    print(i, end ='|') # 欢|迎|来|到|张|宇|童|博|客|
print()
# list 遍历
listvar = ['title','张宇童博客','www.zyt8.cn']
for i in listvar:
    print(i)
# 遍历元组
tuplevar = ('今天的','日期是','2019')
for i in tuplevar:
    print(i)
# 遍历集合
setvar = {'hello','world'}
for i in setvar:
    print(i)
# 遍历字典 默认遍历的是键
dictvar = {'name':'张宇童','age': 18}
for i in dictvar:
    print(i)
# 字典.keys
for i in dictvar.keys():
    print(i)
# 字典.values
for i in dictvar.values():
    print(i)
# 字典.items 返回字典中键值组成的元组
"""
('name', '张宇童')
('age', 18)
"""
for i in dictvar.items():
    print(i)
# 使用两个变量接受items元组中的键值
for key,value in dictvar.items():
    print(key,value)
# 遍历等长的二级列表
'''
['php', '熟练度', '精通']
['golang', '熟练度', '基础']
['JavaScript', '熟练度', '擅长']
'''
listvar = [['php','熟练度','精通'],['golang','熟练度','基础'],['JavaScript','熟练度','擅长']]
for i in listvar:
    print(i)
# 有几个等长元素就用几个元素来接受
'''
php 熟练度 精通
golang 熟练度 基础
JavaScript 熟练度 擅长
'''
for i,k,v in listvar:
    print(i,k,v)

# 遍历不等长的元素
'''
['姓:', '张', '名:', '三']
姓:
张
名:
三
['年龄', '18']
年龄
18
['个性签名']
个性签名
'''
listvar = [['姓:','张','名:','三'], ['年龄','18'],['个性签名']]
for i in listvar :
    print(i)
    for o in i:
        print(o)

标签: python 学习笔记

评论(0) 浏览(512)

Python学习笔记之格式化字符串

2019-9-19 张宇童 Python

# 时间: 2019年9月19日 00:58
# 字符串的格式化
# %d 是一个占位符 代表一个整型
# %f 是一个占位符 代表一个浮点
# %s 是一个占位符 代表一个字符串

title = '网址%s是张宇童博客的' % ('http://www.zyt8.cn')
print(title) # 网址http://www.zyt8.cn是张宇童博客的
# %4d表示 整数占用4个字符
strvar = '评分:%4d分的,是%s' % (100,'张宇童博客') 
print(strvar) # 评分: 100分的,是张宇童博客
# %-4d表示 整数占用4个字符  居左
strvar = '评分:%-4d分的,是%s' % (100,'张宇童博客') 
print(strvar) # 评分:100 分的,是张宇童博客
# %.1f表示 小数点后保留1位小数
strvar = '我的体重是%.1f公斤' % (50.3123213888)
print(strvar) # 我的体重是50.3公斤

标签: python 学习笔记

评论(0) 浏览(501)

Python学习笔记之流程控制

2019-9-19 张宇童 Python

# 时间2019年9月19日 00:29
# 流程控制
blogName = "张宇童博客"
if blogName == "张宇童博客":
    print('关注web前沿技术')
    print('关注web安全')
    print('关注web')
else:
    print('关注编程语言领域')
    print('欢迎各界人士阅读')

# 循环结构
i = 0;
total = '';
while i <= 5:
    total += '张宇童博客'
    i+=1
print(total)

# 字符串的拼接 
# 正常拼接
# 跨行拼接
# 重复拼接
###正常拼接###
str1 = '张宇童'
str2 = ' - '
str3 = '温馨技术博客'
res = str1 + str2 + str3
print(res)
###跨行拼接###
strval = '张宇童博客关注互联网技术,\
引领技术潮流,这是一段很长的文本...'
print(repr(strval))
###重复拼接###
strval = '张宇童博客'
res = strval * 10 
print(res) # 张宇童博客张宇童博客张宇童博客张宇童博客张宇童博客张宇童博客张宇童博客张宇童博客张宇童博客张宇童博客


标签: python 学习笔记

评论(0) 浏览(485)

sublime配置直接运行python

2019-9-18 张宇童 Python

首先在菜单导航栏找到tools->Build System->New Build System

屏幕快照 2019-09-18 下午2.03.12.png

然后复制下面代码粘贴即可

屏幕快照 2019-09-18 下午2.07.02.png


{
    "env": {"PYTHONIOENCODING": "utf8"},
    "cmd": ["/Library/Frameworks/Python.framework/Versions/3.7/bin/python3", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}


注意"cmd": ["/Library/Frameworks/Python.framework/Versions/3.7/bin/python3", "-u", "$file"]这里需要改成python的命令路径 which python3 查看python3的路径修改即可

标签: python 工具

评论(0) 浏览(436)

python学习笔记之数据类型

2019-9-18 张宇童 Python

1、六大标准数据类型

Number 数字类型 (int, float, bool, complex)

String 字符串类型

# 使用""里面是字符串
string = "我是一段字符串"
# 支持多行
string = """
   春晓
春眠不觉晓,
处处闻啼鸟。
夜来风雨声,
花落知多少。
"""
# 元字符 可以使转义字符失效
string = r'hello \nworld'
print(string)

List 列表类型

Listvar = ['鲁智深','鲁班',True, 3.1415, 18]
# 输出鲁智深 从左向右数 第一个索引为0
print(Listvar[0]) 
# 获取列表中最后一个元素 从右向左数 第一个索引为-1
print(Listvar[-1]) 
# 计算列表的长度
print(len(Listvar))
# 获取列表中最后一个元素
print(Listvar[len(Listvar)-1])
# 获取列表的类型
print(type(Listvar))
# 修改列表的元素内容 将‘鲁智深’ 修改为 ‘hello’
Listvar[0] = "hello"
print(Listvar)

tuple 元组类型

# ## 元组类型tuple
# #### 元组类型的标志类型是逗号
# 只能获取 可以排序 但是不能修改
tuplevar = (1, 2, 3)
print(tuplevar)
print(type(tuplevar))
typleone = 1,
print(type(typleone))
# 声明一个空元组 单独写一个()是可以的 ,但是如果写(1)则是整型
tuplevar = ()
tuplevar = ("卡")
print(tuplevar)
# 字符串可以通过下表获取值
hello = "hello world"
print(hello[0] );

set 集合类型

# 集合类型,不能通过索引下标获取
# # 自动[去重],[无序]的容器
setvar = {"周星驰","刘德华","张学友","郭富城","周星驰"}
# output set
print(type(setvar)) 
print(setvar)

dict 字典类型

# dict 字典类型
# 如果单独定义 一个{} 不是集合(set)而是idct 类型
var = {}
print(type(var)) # 输出dict
# 定义一个空set
var = set()
print(type(var)) # 输出set
# dict是以键值对的形式存储
dictvar = {'top':'蛮王','middle': '安妮','bottom': '伊泽瑞尔', 'support': '蒸汽机器人','jungle': '狼人'}
print(dictvar) # {'top': '蛮王', 'middle': '安妮', 'bottom': '伊泽瑞尔', 'support': '蒸汽机器人', 'jungle': '狼人'}
# 字典的修改
dictvar['top'] = '洛克'
print(dictvar) # {'top': '洛克', 'middle': '安妮', 'bottom': '伊泽瑞尔', 'support': '蒸汽机器人', 'jungle': '狼人'}
# 以下语法python支持
dictvar = {0: '第一个', 1: '第二个'}
print(dictvar) # {0: '第一个', 1: '第二个'}

在内存中的存储规律 Number 部分 -5 ~ 正无穷的相同值 ID(内存指针) 是一致的 

类型的转换

# 数据类型的转换
# 当两个不同类型的数据进行运算的时候默认向更高精度转换
# 默认精度从低到高
# bool->int->float->complex
var1 = True # Ture转int后是1。False转int后是0
var2 = 1
var3 = 3.14
var4 = 3+4j
# int 加 bool 默认转换为int
print(var1 + var2) # 2
# bool 加 float 默认转换为 float
print(var3 + var1) # 4.140000000000001
# bool 加 complex 默认转为complex
print(var1 + var4) # (4+4j)
# int 加 float 默认转为float
print(var2 + var3) # 4.140000000000001
# int 加 complex 默认转为complex
print(var2 + var4) # (4+4j)
# float 加 complex 默认转为complex
print(var3 + var4) # (6.140000000000001+4j)
# 强制类型转换
# Number 部分
# int     整数 浮点数 布尔型 字符串
# float   整数 浮点数 布尔型 字符串
# complex 整数 浮点数 布尔型 字符串 (复数)
# bool    (容器类型数据 / Number)

var1 = 12
var2 = 3.14
var3 = 2-1j
var4 = True
var5 = 123456
var6 = "123456"

# int 强转
res = int(var2) # 向下取整
print(res)
res = int(var4) # 1
print(res)
res = int(var5) # 123456
print(res)
res = int(var6) # 123456
print(res)

#float 强转
res = float(var1)
print(res) # 12.0
res = float(var2)
print(res) # 3.14
res = float(var4)
print(res)
res = float(var5)
print(res)
res = float(var6)
print(res)

# 复数强转
res = complex(var1)
print(res) # (12+0j)
res = complex(var2)
print(res) # (3.14+0j)
res = complex(var3)
print(res) # (2-1j)
res = complex(var4)
print(res) # (1+0j)
res = complex(var5)
print(res) # (123456+0j)
res = complex(var6)
print(res) # (123456+0j)

# bool 强转
res = bool(var1)
print(res) # True
res = bool(var3)
print(res) # True
res = bool({'top': ''})
print(res) # True

# 布尔类型为False的情况有十种
res = bool(0)
print(res)
res = bool('')
print(res)
res = bool(False)
print(res)
res = bool(0j)
print(res)
res = bool([])
print(res)
res = bool(())
print(res)
res = bool({})
print(res)
res = bool(set())
print(res)
res = bool(None)
print(res)
res = bool(0.0)
print(res)

# bool() int() float() complex() 默认声明一个空数据
var1 = "hello world你好世界"
var2 = 18
var3 = ['列表1','列表2']
var4 = {'集合一','集合二','集合一'}
var5 = {"one": '第一个','two': '第二个'}
var6 = (4,5,2)

# 转为字符串 无论什么类型的数据转字符串 只要在两侧加上“”
res = repr(str(var3))
print(res) # "['列表1', '列表2']"
res = repr(str(var5))
print(res) # "{'one': '第一个', 'two': '第二个'}"

# 转为list 
# 如果是字符串 就把每一个字符作为一个单独的元素
# 如果是容器 就将其两侧的符号换为中括号“[]”
res = list(var1)
print(res) # ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
print(list("你好世界")) # ['你', '好', '世', '界']
res = list(var6)
print(res) # [4, 5, 2]
res = list(var4)
print(repr(res)) # ['集合二', '集合一']

# 转为元组
res = tuple(var1)
print(res) # ('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '你', '好', '世', '界')
res = tuple(var3)
print(res) # ('列表1', '列表2')
res = tuple(var4)
print(res) # ('集合二', '集合一')
res = tuple(var5)
print(res) # ('one', 'two')

标签: python 学习笔记

评论(0) 浏览(525)

使用JavaScript在复制时添加版权信息

2019-9-16 张宇童

第一条使用两种方法对文章进行粘贴追加信息~~~

方法一:

①监听copy事件,然后将隐藏盒子中的信息添加到其中;

②结合window.selection()方法;

③浏览器兼容情况是主流浏览器IE8以上;

④线上demo http://jsfiddle.net/jp6nhmxf/ ;

⑤使用:复制一段文本再粘贴就会出现 pagelink中的内容 。

主要JS code


function addLink() {
        //Get the selected text and append the extra info
        var selection = window.getSelection(),
            pagelink = '\n\n Read more at: ' + document.location.href,
            copytext = selection + pagelink,
            newdiv = document.createElement('div');

        //hide the newly created container
        newdiv.style.position = 'absolute';
        newdiv.style.left = '-99999px';

        //insert the container, fill it with the extended text, and define the new selection
        document.body.appendChild(newdiv);
        newdiv.innerHTML = copytext;
        selection.selectAllChildren(newdiv);

        window.setTimeout(function () {
            document.body.removeChild(newdiv);
        }, 100);
    }

    document.addEventListener('copy', addLink);



方法二:

①监听copy事件,然后修改剪贴板中的内容,也就是clipboard使用;

②结合window.clipboardData.setData()方法;

③浏览器兼容情况是IE4以上(换言之只针对于IE);

④线上demo http://jsfiddle.net/m56af0je/ (IE模式下起效);

主要JS code

function addLink(event) {
        event.preventDefault();

        var pagelink = '\n\n Read more at: ' + document.location.href,
            copytext =  window.getSelection() + pagelink;

        if (window.clipboardData) {
            window.clipboardData.setData('Text', copytext);
        }
    }

    document.addEventListener('copy', addLink);


⑤另外疑问点来了,使用clipboard能在其他浏览器(比如谷歌/火狐/safari)中工作吗?

主要JS code

function addLink(event) {
    event.preventDefault();

    var pagelink = '\n\n Read more at: ' + document.location.href,
        copytext =  window.getSelection() + pagelink;

    (event.clipboardData || window.clipboardData).setData('Text', copytext);
}

document.addEventListener('copy', addLink);


区别在 window.clipboarddata  <-->  event.clipboardData

亲测在兼容模式、极速模式、谷歌、火狐、IE等浏览器中均测有效!

第二条使用的方法跟第一条类似~~~

主要JS code

/**
 * @description 添加版权
 */
 const addCopyright = () => {
  const genCopy = () => {
    return [
      '',
      '',
      '作者:张宇童',
      '链接 [文章复制添加版权](http://www.zyt8.cn/?post=132) ',
      '来源:张宇童 - 温馨技术博客',
      '著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。',
    ]
  }

  $('.content-reset').on('copy', function (event) {
    if (!window.getSelection) {
      return
    }

    let copyString = window.getSelection().toString()

    if (copyString.length < 128) {
      return
    }

    if ('object' === typeof event.originalEvent.clipboardData) {
      event.originalEvent.clipboardData.setData('text/html', copyString + genCopy().join(''))
      event.originalEvent.clipboardData.setData('text/plain', copyString + genCopy().join('\n'))
      event.preventDefault()
      return
    }

    $('body').append(`${copyString}${genCopy().join('')}`)
    window.getSelection().selectAllChildren($('#pipeFixCopy')[0])
    setTimeout(function() {
      $('#pipeFixCopy').remove()
    }, 200)
  })
}


找一个空白地方复制粘贴测试,~~本人只在极速模式下测通过,其他未测~~

敬请留意~~


标签: javascript js 复制添加信息

评论(3) 浏览(1287)

Lua模块的安装

2019-9-12 张宇童

以下以Linux 系统为例进行讲解
1、创建一个目录 mkdir /lua
2、使用wget下载资源
3、编译二进制文件,设置安装目录
4、导入环境变量
5、下载,并解压
6、重新编译nginx

阅读全文>>

评论(2) 浏览(878)

Powered by emlog