diff --git a/2018/08/10/Hello World/index.html b/2018/08/10/Hello World/index.html index 35e81064fa7df13f6e0892a316326b905d001234..342b281b6d60c762fe5cc2cfb6346d7389c41534 100644 --- a/2018/08/10/Hello World/index.html +++ b/2018/08/10/Hello World/index.html @@ -145,7 +145,7 @@
- Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器 + Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 input()函数 while循环 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器
@@ -490,7 +490,7 @@ - + + + + + +
+
+
+
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + + +
+ + + + +
+ + +

+ Python3 自学笔记 C06 +

+ + +
+ +
+
+ + + + +
+ + +
Python3 自学笔记第六章【用户输入和 while 循环】
+ +
+

- 6.1 函数 input() 的工作原理

函数 input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其储存在一个变量当中,以方便你使用;函数 input() 返回为 string 类型

+
1
2
message = input("Please tell me your name:")
print("Hello , " + message + "!")
+

输出结果如下:

+
1
2
Please tell me your name:anliy
Hello , anliy!
+

进阶:

+
1
2
3
4
message = "Please tell me your name so that we can personalize the messages you see."
message += "\nWhat's your first name?"
name = input(message)
print("\nHello , " + name + "!")
+

输出结果如下:

+
1
2
3
4
Please tell me your name so that we can personalize the messages you see.
What's your first name?trhx

Hello , trhx!
+

- 6.1.1 使用 int() 来获取数值输入

使用函数 input() 时,Python会将用户输入解读为字符串:

+
1
2
3
4
>>> age = input("How old are you?")
How old are you?19
>>> age
'19'
+

为了解决这个问题,可以使用函数 int() ,它让Python将输入视为数值:

+
1
2
3
4
5
>>> age = input("How old are you?")
How old are you?19
>>> age = int(age)
>>> age
19
+

实例:

+
1
2
3
4
5
6
age = input("Please tell me your age:")
age = int(age)
if age >= 18:
print("You are old enough to go to the Internet bar!")
else:
print("You are not old enough to go to Internet bar!")
+

输出结果如下:

+
1
2
Please tell me your age:17
You are not old enough to go to Internet bar!
+

- 6.1.2 求模运算符

处理数值信息时,求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数:

+
1
2
3
4
5
6
7
8
>>> 4 % 3
1
>>> 5 % 3
2
>>> 8 % 2
0
>>> 7 % 3
1
+

- 6.1.3 在 Python 2.7 中获取输入

如果使用 Python 2.7,应该使用函数 raw_input() 来提示用户输入,这个函数与 Python 3 中的 input() 一样,也将输入解读为字符串;Python 2.7 也包含函数 input(),但它将用户输入解读为Python代码,并尝试运行它们

+

- 6.2 while 循环

for 循环用于针对集合中的每一个元素的一个代码块,而 while 循环不断地运行,直到指定的条件不满足为止

+

- 6.2.1 使用 while 循环

一个简单的 while 循环:

+
1
2
3
4
num = 1
while num < 5:
print(num)
num += 1
+

输出结果如下:

+
1
2
3
4
1
2
3
4
+

- 6.2.2 让用户选择退出循环

1
2
3
4
5
6
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program."
message = " "
while message != 'quit':
message = input(prompt)
print(message)
+

运行程序:

+
1
2
3
4
5
6
7
8
9
10
11
12

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.Hello everyone!
Hello everyone!

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.Hello again!
Hello again!

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.quit
quit
+

- 6.2.3 使用标志

在要求很多条件都满足才继续运行的程序中,可以定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志

+
1
2
3
4
5
6
7
8
9
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program."
active = True
while active:
message = input(prompt)
if message == 'quit':
active = False
else:
print(message)
+

运行结果与6.2.2一致

+

- 6.2.4 使用 break 退出循环

要立即退出 while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用 break 语句,break 语句用于控制程序流程,可使用它来控制哪些代码将执行,哪些代码不执行

+
1
2
3
4
5
6
7
8
9
prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\nEnter 'quit' when you are finished."
active = True
while active:
city = input(prompt)
if city == 'quit':
break
else:
print("I'd love to go to " + city.title() + "!")
+

运行程序:

+
1
2
3
4
5
6
7
8
9
10
11

Please enter the name of a city you have visited:
Enter 'quit' when you are finished.Shanghai
I'd love to go to Shanghai!

Please enter the name of a city you have visited:
Enter 'quit' when you are finished.Beijing
I'd love to go to Beijing!

Please enter the name of a city you have visited:
Enter 'quit' when you are finished.quit
+

在任何Python循环中都可以使用break语句,例如,可以使用break语句来退出遍历列表或字典

+

- 6.2.5 在循环中使用 continue

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用 continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环,例如,从1到10只打印其中奇数:

+
1
2
3
4
5
6
number =0
while number < 10:
number += 1
if number % 2 == 0:
continue
print(number)
+

输出结果如下:

1
2
3
4
5
1
3
5
7
9

+

- 6.3 使用 while 循环来处理列表和字典

for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素,要在遍历列表的同时对其进行修改,可使用while循环

+

- 6.3.1 在列表之间移动元素

1
2
3
4
5
6
7
8
9
unconfirmed_users = ['alice' , 'brian' , 'candace']
confirmed_users = []
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print("Verifying user: " + current_user.title())
confirmed_users.append(current_user)
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
+

首先创建一个未验证用户列表,其中包含用户Alice、Brian和Candace,还创建了一个空列表,用于存储已验证的用户,程序中的 while 循环将不断地运行,直到列表 unconfirmed_users 变成空的。在这个循环中,函数pop() 以每次一个的方式从列表 unconfirmed_users 末尾删除未验证的用户。由于Candace位于列表 unconfirmed_users 的末尾,因此其名字将首先被删除、存储到变量 current_user 中并加入到列表 confirmed_users 中。接下来是Brian,然后是Alice

+

为模拟用户验证过程,我们打印一条验证消息并将用户加入到已验证用户列表中。未验证用户列表越来越短,而已验证用户列表越来越长。未验证用户列表为空后结束循环,再打印已验证用户列表:

+
1
2
3
4
5
6
7
8
Verifying user: Candace
Verifying user: Brian
Verifying user: Alice

The following users have been confirmed:
Candace
Brian
Alice
+

- 6.3.2 删除包含特定值的所有列表元素

可以使用方法 remove() 来删除列表中特定的值,但如果要删除的值在列表中出现了多次,方法 remove() 就不管用了,如果要删除列表中所有包含特定值的元素则可以使用 while 循环:

+
1
2
3
4
5
names = ['alice' , 'candace' , 'alice' , 'brian' , 'alix' , 'candace' , 'heliy']
print(names)
while 'candace' in names:
names.remove('candace')
print(names)
+

输出结果如下:

+
1
2
['alice', 'candace', 'alice', 'brian', 'alix', 'candace', 'heliy']
['alice', 'alice', 'brian', 'alix', 'heliy']
+

使用方法 remove() 做对比:

+
1
2
3
4
names = ['alice' , 'candace' , 'alice' , 'brian' , 'alix' , 'candace' , 'heliy']
print(names)
names.remove('candace')
print(names)
+

输出结果如下:

+
1
2
['alice', 'candace', 'alice', 'brian', 'alix', 'candace', 'heliy']
['alice', 'alice', 'brian', 'alix', 'candace', 'heliy']
+

- 6.3.3 使用用户输入来填充字典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
responses = {}

#设置一个标志,指出调查是否继续
polling_active = True

while polling_active:
#提示输入被调查者的姓名和回答
name = input("\nWhat's your name?")
response = input("What kind of fruit do you like?")

#将答卷储存在字典中
responses[name] = response

#询问是否还有其他人要参与回答
repeat = input("Would you like to let another person respond?(Yes/No)")
if repeat == 'No':
polling_active = False

#调查结束,显示结果
print("\n------ Poll Results ------")
for name , response in responses.items():
print(name + " like " + response + ".")
+

运行程序:

+
1
2
3
4
5
6
7
8
9
10
11
What's your name?TRHX
What kind of fruit do you like?apple
Would you like to let another person respond?(Yes/No)Yes

What's your name?TRHXCC
What kind of fruit do you like?banana
Would you like to let another person respond?(Yes/No)No

------ Poll Results ------
TRHX like apple.
TRHXCC like banana.
+ + +
+

+
+
+ × +
+

纯属好玩,扫码打赏,你说多少就多少

+
+
+ 扫码支持 +
+
若无法正常显示二维码,请直接点击小图片放大
+
+ +
+ + +
+ + +
+ + +
+ +
+
+

打开支付宝扫一扫,即可进行扫码打赏哦

+
+
+
+ + + +
+ +
+ + + + + + + + + +
+ +
+ 文章目录 +
  1. 1. - 6.1 函数 input() 的工作原理
  2. 2. - 6.1.1 使用 int() 来获取数值输入
  3. 3. - 6.1.2 求模运算符
  4. 4. - 6.1.3 在 Python 2.7 中获取输入
  5. 5. - 6.2 while 循环
  6. 6. - 6.2.1 使用 while 循环
  7. 7. - 6.2.2 让用户选择退出循环
  8. 8. - 6.2.3 使用标志
  9. 9. - 6.2.4 使用 break 退出循环
  10. 10. - 6.2.5 在循环中使用 continue
  11. 11. - 6.3 使用 while 循环来处理列表和字典
  12. 12. - 6.3.1 在列表之间移动元素
  13. 13. - 6.3.2 删除包含特定值的所有列表元素
  14. 14. - 6.3.3 使用用户输入来填充字典
+
+ + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ + + + + +
+ + + + + + + + + +
+ + + + + + + +
+
+
+ + +
+ + + + + || + + + + +
+ +
+
+ +
+ + + + + + + + + + + +
+ + + +
+ + + + + + + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/About TRHX/index.html b/About TRHX/index.html index b9d69f6f60a4cf25b010c504db406d73d8781def..b5184e1814780bda9e85f948153a1d7d37f64c4a 100644 --- a/About TRHX/index.html +++ b/About TRHX/index.html @@ -144,7 +144,7 @@
- Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器 + Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 input()函数 while循环 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器
diff --git a/Message Board/index.html b/Message Board/index.html index df1ef0c5829c461272b6f38bd86d91ca8e958592..dc2be07edfcf6658916f21c1548b9721c0921aba 100644 --- a/Message Board/index.html +++ b/Message Board/index.html @@ -146,7 +146,7 @@
- Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器 + Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 input()函数 while循环 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器
diff --git a/archives/2018/08/index.html b/archives/2018/08/index.html index a6c3ea331432373f931711cb5a52b644ba2a7a9f..7d51d01eb1c18b7d5d1a8f08e31977b212f1a20a 100644 --- a/archives/2018/08/index.html +++ b/archives/2018/08/index.html @@ -143,7 +143,7 @@
- Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器 + Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 input()函数 while循环 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器
diff --git a/archives/2018/09/index.html b/archives/2018/09/index.html index 8a632b13562e1e41693b4cbda2fcc345395bed1d..fcc726db353d9d93dc709de60f6dea09bbbac3c2 100644 --- a/archives/2018/09/index.html +++ b/archives/2018/09/index.html @@ -143,7 +143,7 @@
- Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器 + Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 input()函数 while循环 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器
diff --git a/archives/2018/10/index.html b/archives/2018/10/index.html index 72ddb16fc63fdca995f1d004be75284ad63d46a0..616df646864c6bf4e48f5b39571027adba25d72c 100644 --- a/archives/2018/10/index.html +++ b/archives/2018/10/index.html @@ -143,7 +143,7 @@
- Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器 + Dream Github Pages Hexo Life Markdown Ubuntu VMware if语句 input()函数 while循环 主题个性化 列表 变量 字典 技巧 操作列表 数据类型 编辑器
@@ -235,6 +235,41 @@
+
+
+
+ + + +

+ Python3 自学笔记 C06 +

+ + + +
+
+
+
+ + +
diff --git a/archives/2018/index.html b/archives/2018/index.html index cee59e852f296380f5e5d541351b3b5598e9e1c3..b32c3d8d20cab2f93d528d2f86868cddec7f11a1 100644 --- a/archives/2018/index.html +++ b/archives/2018/index.html @@ -143,7 +143,7 @@
@@ -235,6 +235,41 @@
+ + + +
@@ -548,41 +583,6 @@
- - - -
diff --git a/archives/2018/page/2/index.html b/archives/2018/page/2/index.html index 511624684f9b9b4afa3ace3f2645048f7e59e379..7d875ccc0a5e97fd92905b30715227584fc8fe1f 100644 --- a/archives/2018/page/2/index.html +++ b/archives/2018/page/2/index.html @@ -143,7 +143,7 @@
@@ -235,6 +235,41 @@
+
+
+
+ + + +

+ 如何使用 Github Pages 和 Hexo 搭建自己的独立博客 +

+ + + +
+
+
+
+ + +
diff --git a/archives/index.html b/archives/index.html index 87d342864c9f290f37cc0e185ff53f972fa19e86..16ea3718d373ad27863c66923b3302a901e07ef4 100644 --- a/archives/index.html +++ b/archives/index.html @@ -143,7 +143,7 @@
@@ -235,6 +235,41 @@
+ + + +
@@ -548,41 +583,6 @@
- - - -
diff --git a/archives/page/2/index.html b/archives/page/2/index.html index 6d2ce034523290c01d8dad3017841c301b00721b..073b84a2e0ca9a81ee5e85a2def3753e35da3b83 100644 --- a/archives/page/2/index.html +++ b/archives/page/2/index.html @@ -143,7 +143,7 @@
@@ -235,6 +235,41 @@
+
+
+
+ + + +

+ 如何使用 Github Pages 和 Hexo 搭建自己的独立博客 +

+ + + +
+
+
+
+ + +
diff --git a/categories/Hello-World/index.html b/categories/Hello-World/index.html index 5847f08b1086f2a1fe053e58f3053ab587e94d25..2536670872a0135b9e9af84de741036bdb1b305b 100644 --- a/categories/Hello-World/index.html +++ b/categories/Hello-World/index.html @@ -143,7 +143,7 @@
diff --git a/categories/Python/index.html b/categories/Python/index.html index 23273b274e4976c358f12710721bfe50888a1673..d5e51b0f21e96ec3af549ef44c01457b1b373934 100644 --- a/categories/Python/index.html +++ b/categories/Python/index.html @@ -143,7 +143,7 @@
@@ -235,6 +235,41 @@
+ + + +
diff --git a/categories/index.html b/categories/index.html index b00e73e53501808169c92ce124cdabe07530105e..1ea4c127a67dbf29b21efa4ad37657d9ba27d95f 100644 --- a/categories/index.html +++ b/categories/index.html @@ -141,7 +141,7 @@
diff --git "a/categories/\345\256\236\347\224\250\346\225\231\347\250\213/index.html" "b/categories/\345\256\236\347\224\250\346\225\231\347\250\213/index.html" index 117bf4071a93db954da5cf1f4b463107f87f3419..bb9ed0b705771dba3bbc08123dcaa2045cb3946a 100644 --- "a/categories/\345\256\236\347\224\250\346\225\231\347\250\213/index.html" +++ "b/categories/\345\256\236\347\224\250\346\225\231\347\250\213/index.html" @@ -143,7 +143,7 @@
diff --git a/content.json b/content.json index 8165eda2d6698b6d9a1ca92470076547930808d0..aef22155e8ed3d6d5682151f4fbb7cfb3f553410 100644 --- a/content.json +++ b/content.json @@ -1 +1 @@ -{"meta":{"title":"TRHX's Blog - Live for code!","subtitle":"路漫漫其修远兮,吾将上下而求索!","description":"一个大学生用于自学的个人博客","author":"TRHX","url":"http://yoursite.com"},"pages":[{"title":"About TRHX","date":"2018-08-19T13:50:37.000Z","updated":"2018-09-10T16:26:43.558Z","comments":true,"path":"About TRHX/index.html","permalink":"http://yoursite.com/About TRHX/index.html","excerpt":"","text":"About TRHX ▲ TRHX 武汉某二本院校大二学生,软件工程专业,平时爱捣鼓一切与IT有关的东西,对一切高科技产品非常感兴趣;▲ 爱编程,但又没技术,渴望成为技术大佬,但暂时看起来还是天方夜谭,在校学习C、C++、Java,准备自学Python;▲ 爱骑行,混迹于骑行界超过五年,走遍许多城市,梦想能去一次西藏▲ 爱嗨歌、爱说唱,尤其喜欢一边听歌一边搞学(che)习(dan),一边放低音炮一边骑车飞(zhuang)奔(bi);▲ 性格正直,看不惯一切恶势力;▲ 爱吃辣,无辣不欢;不知道写什么,以后慢慢写吧,反正写着玩儿,也没人看。 近期计划 ▲ 学好Python▲ 坚持写博客▲ 大二学好Java"},{"title":"Tags","date":"2018-09-07T13:45:26.000Z","updated":"2018-09-07T13:45:26.400Z","comments":true,"path":"tags/index.html","permalink":"http://yoursite.com/tags/index.html","excerpt":"","text":""},{"title":"Categories","date":"2018-09-15T17:17:23.000Z","updated":"2018-09-15T17:17:23.204Z","comments":true,"path":"categories/index.html","permalink":"http://yoursite.com/categories/index.html","excerpt":"","text":""},{"title":"友情链接 & 留言板","date":"2018-10-19T13:57:08.140Z","updated":"2018-10-19T13:57:08.140Z","comments":true,"path":"Message Board/index.html","permalink":"http://yoursite.com/Message Board/index.html","excerpt":"","text":"hojun’s Blog: https://www.hojun.cnNice’s Blog: https://luotaocheng.github.ioFangzh’s Blog: http://fangzh.top/Terry’s Blog: http://terrylovessmiles.cn/SimonKing’s Blog: http://nicooo.ooo/欧阳博客:https://5658.pw 天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣! 山河不足重,重在遇知已!欢迎在下方留言,好好学习天天向上!"}],"posts":[{"title":"Python3 自学笔记 C05","slug":"Python3 自学笔记C05","date":"2018-10-27T10:46:22.942Z","updated":"2018-10-27T10:46:23.044Z","comments":true,"path":"2018/10/27/Python3 自学笔记C05/","link":"","permalink":"http://yoursite.com/2018/10/27/Python3 自学笔记C05/","excerpt":"","text":"Python3 自学笔记第五章【字典】 - 5.1 一个简单的字典 123fruits = {'apple' : 'red' , 'number' : 5}print(fruits['apple'])print(fruits['number']) 输出结果如下: 12red5 在Python中,字典是一系列键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何Python对象用作字典中的值。键-值对是两个相关联的值。在指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键-值对之间用逗号分隔。在字典中,想储存多少个键-值对都可以 - 5.1.1 访问字典中的值 要获取与键相关联的值,可依次指定字典名和放在方括号内的键: 123fruits = {'apple' : 'red' , 'number' : 5}number_fruits = fruits['number']print(\"The number of apple is \" + str(number_fruits) + \"!\") 输出结果如下: 1The number of apple is 5! - 5.1.2 添加键-值对 字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名、用方括号括起来的键和相关联的值 12345fruits = {'apple' : 'red' , 'number1' : 5}print(fruits)fruits['banana'] = 'yellow'fruits['number2'] = 13print(fruits) 输出结果如下: 12{'apple': 'red', 'number1': 5}{'apple': 'red', 'number1': 5, 'banana': 'yellow', 'number2': 13} 注意:键-值对的排列顺序与添加顺序不同。Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系 有时候为了方便也可以先使用一对空的花括号定义一个字典,再分行添加各个键-值对: 1234fruits = {}fruits['banana'] = 'yellow'fruits['number2'] = 13print(fruits) 输出结果如下: 1{'banana': 'yellow', 'number2': 13} - 5.1.3 修改字典中的值 要修改字典中的值,可依次指定字典名、用方括号括起来的键以及与该键相关联的新值 1234fruits = {'color' : 'red'}print(\"The color of the fruits is \" + fruits['color'] + \"!\")fruits['color'] = 'yellow'print(\"The color of the fruits is \" + fruits['color'] + \" now!\") 输出结果如下: 12The color of the fruits is red!The color of the fruits is yellow now! 进阶:对一个能够以不同速度移动的外星人的位置进行跟踪,为此,我们将储存该外星人的当前速度,并据此确定该外星人将向右移动多远: 1234567891011121314alien = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}print(\"Original x-position: \" + str(alien['x_position']))#向右移动外星人,据外星人当前速度决定将其移动多远if alien['speed'] == 'slow': x_increment = 1elif alien['speed'] == 'medium': x_increment = 2else: x_increment = 3#新位置等于老位置加上增量alien['x_position'] = alien['x_position'] + x_incrementprint(\"New x_position: \" + str(alien['x_position'])) 输出结果如下: 12Original x-position: 0New x_position: 2 - 5.1.4 删除键-值对 对于字典中不再需要的信息,可使用del语句将相应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键 1234fruits = {'apple' : 'red' , 'number' : 5}print(fruits)del fruits['number']print(fruits) 输出结果如下: 12{'apple': 'red', 'number': 5}{'apple': 'red'} - 5.1.5 由类似对象组成的字典 字典储存的可以是一个对象的多种信息,也可以储存众多对象的同一种信息,例如要调查很多人最喜欢的编程语言: 1234567favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }print(\"Sarah's favorite languages is \" + favorite_languages['sarah'].title() + \"!\") 输出结果如下: 1Sarah's favorite languages is C! - 5.2 遍历字典 - 5.2.1 方法 items() 遍历所有的键-值对 使用for循环来遍历字典:12345678name = { 'username' : 'efermi' , 'first' : 'enrico' , 'last' : 'fermi' , }for key , value in name.items(): print(\"\\nKey: \" + key) print(\"Value: \" + value) 输出结果如下:123456789Key: usernameValue: efermiKey: firstValue: enricoKey: lastValue: fermi for语句的第二部分包含字典和方法items(),它返回一个键-值对列表。接下来,for循环依次将每个键-值对储存到指定的两个变量中 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for name, language in favorite_languages.items(): print(name.title() + \"'s favorite language is \" + language.title() + \".\") 输出结果如下: 1234Jen's favorite language is Python.Sarah's favorite language is C.Edward's favorite language is Ruby.Phil's favorite language is Java. - 5.2.2 方法 keys() 遍历字典中所有的键 在不需要使用字典中的值时,方法key()很有用,下面来遍历字典favorite_languages,并将每个被调查者的名字都打印出来: 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for name in favorite_languages.keys(): print(name.title()) 输出结果如下: 1234JenSarahEdwardPhil 遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的for name in favorite_languages.keys():替换为for name in favorite_languages:输出结果将不变进阶: 1234567891011favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }friends = ['phil', 'sarah']for name in favorite_languages.keys(): print(name.title()) if name in friends: print(\"Hi \" + name + \", I see your favorite languages is \" + favorite_languages[name].title() + \"!\") 输出结果如下: 123456JenSarahHi sarah, I see your favorite languages is C!EdwardPhilHi phil, I see your favorite languages is Java! - 5.2.3 函数 sorted() 按顺序遍历字典中的所有键 字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的,要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序,为此,可以使用函数sorted()来获得按特定顺序排列的键列表的副本: 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for name in sorted(favorite_languages.keys()): print(name.title()) 输出结果如下: 1234EdwardJenPhilSarah - 5.2.4 方法 values() 遍历字典中的所有值 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for languages in favorite_languages.values(): print(languages.title()) 输出结果如下: 1234PythonCRubyJava 这种做法提取字典中所有的值,而没有考虑是否重复,为剔除重复项,可使用集合(set),集合类似于列表,但每个元素都必须是独一无二的: 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'python' , }for languages in set(favorite_languages.values()): print(languages.title()) 输出结果如下: 123CPythonRuby - 5.3 嵌套 有时候,需要将一系列字典储存在列表中,或将列表作为值储存在字典中,这称为嵌套。可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典 - 5.3.1 字典列表 下面代码创建三个字典,每个字典都表示一个个学生,将这三个字典都放到一个名为students的列表当中,遍历列表将每个学生都打印出来: 123456student_0 = {'name' : 'anily' , 'class' : 2}student_1 = {'name' : 'nikey' , 'class' : 5}student_2 = {'name' : 'heyk' , 'class' : 3}students = [student_0 , student_1 , student_2]for student in students: print(student) 输出结果如下: 123{'name': 'anily', 'class': 2}{'name': 'nikey', 'class': 5}{'name': 'heyk', 'class': 3} 进阶:使用 range() 自动生成三十个外星人: 123456789101112131415#创建一个用于存储外星人的空列表aliens = []#创建三十个绿色的外星人for alien_number in range(30): new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'} aliens.append(new_alien)#显示前五个外星人for alien in aliens[:5]: print(alien)print(\"......\")#显示创建了多少外星人print(\"Total number of aliens: \" + str(len(aliens))) 输出结果如下: 1234567{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}......Total number of aliens: 30 在上述例子中,虽然每个外星人都具有相同特征,但在Python看来,每个外星人都是独立的,我们可以独立地修改每个外星人: 12345678910111213aliens = []for alien_number in range(30): new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'} aliens.append(new_alien)for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['points'] = 10 alien['speed'] = 'medium'for alien in aliens[:5]: print(alien)print(\"......\")print(\"Total number of aliens: \" + str(len(aliens))) 输出结果如下: 1234567{'color': 'yellow', 'points': 10, 'speed': 'medium'}{'color': 'yellow', 'points': 10, 'speed': 'medium'}{'color': 'yellow', 'points': 10, 'speed': 'medium'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}......Total number of aliens: 30 - 5.3.2 在字典中存储列表 有时候需要将列表储存在字典中,而不是将字典储存在列表中:例一: 12345678910#储存所点比萨的信息pizza = { 'crust' : 'thick' , 'toppings' : ['mushrooms' , 'extra chees'] , }#概述所点的比萨print(\"You ordered a \" + pizza['crust'] + \"-crust pizza\" + \"with the following toppings :\" )for topping in pizza['toppings']: print(\"\\t\" + topping) 输出结果如下: 123You ordered a thick-crust pizzawith the following toppings : mushrooms extra chees 例二: 12345678910favorite_languages = { 'jen' : ['python' , 'ruby'] , 'sarah' : ['c'] , 'edward' : ['go' , 'ruby'] , 'phil' : ['python' , 'java'] , }for name , languages in favorite_languages.items(): print(\"\\n\" + name.title() + \"'s favorite languages are:\") for language in languages: print(\"\\t\" + language.title()) 输出结果如下: 123456789101112131415Jen's favorite languages are: Python RubySarah's favorite languages are: CEdward's favorite languages are: Go RubyPhil's favorite languages are: Python Java - 5.3.3 在字典中存储字典 123456789101112131415161718users = { 'aeinstein' : { 'first' : 'albert' , 'last' : 'einstein' , 'location' : 'princeton' , } , 'mcurie' : { 'first' : 'marie' , 'last' : 'curie' , 'location' : 'paris' , } , }for username , user_info in users.items(): print(\"\\nUsername : \" + username) full_name = user_info['first'] + \" \" + user_info['last'] location = user_info['location'] print(\"\\tFull name : \" + full_name.title()) print(\"\\tlocation : \" + location .title()) 输出结果如下: 12345678Username : aeinstein Full name : Albert Einstein location : PrincetonUsername : mcurie Full name : Marie Curie location : Paris","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"字典","slug":"字典","permalink":"http://yoursite.com/tags/字典/"}]},{"title":"Python3 自学笔记 C04","slug":"Python3 自学笔记C04","date":"2018-10-23T14:52:48.396Z","updated":"2018-10-23T15:05:23.396Z","comments":true,"path":"2018/10/23/Python3 自学笔记C04/","link":"","permalink":"http://yoursite.com/2018/10/23/Python3 自学笔记C04/","excerpt":"","text":"Python3 自学笔记第四章【if语句】 - 4.1 一个简单的数列 给定一个汽车列表,将其中每一辆汽车的名称打印出来,要求打印 ‘bmw’ 时所有字母都要大写,其余名称只需要首字母大写: 123456cars = ['audi' , 'bmw' , 'subaru' , 'toyota']for car in cars: if car == 'bmw': print(car.upper())else: print(car.title()) 输出结果如下: 1234AudiBMWSubaruToyota - 4.1.1 检查特定值是否包含在列表当中 要判断特定的值是否已包含在列表当中,可使用关键字 in 1234user_names = ['andia' , 'david' , 'liwa']user = 'andia'if user in user_names: print(user.title() + \"is in user_name.\") 输出结果如下: 1Andiais in user_name. 要判断特定的值是否不包含在列表当中,可使用关键字 not in 1234user_names = ['andia' , 'david' , 'liwa']user = 'kivle'if user not in user_names: print(user.title() + \"is not in user_name.\") 输出结果如下: 1Kivleis not in user_name. - 4.2 if-else 语句 1234567age = input(\"请输入你的年龄查看是否可以去网吧:\")if int(age) >= 18: print(\"You are old enough to go to the net bar!\") print(\"You should go to net bar less,study more!\")else: print(\"You are too young to go to the net bar!\") print(\"Wait until you are 18 to go to the net bar!\") 分别输入19和15,输出结果如下: 123请输入你的年龄查看是否可以去网吧:19You are old enough to go to the net bar!You should go to net bar less,study more! 123请输入你的年龄查看是否可以去网吧:15You are too young to go to the net bar!Wait until you are 18 to go to the net bar! - 4.3 if-elif-else 结构 12345678age = 12if age < 4: price = 0elif age < 18: price = 5else: price = 10print(\"Your admission cost is $\" + str(price) + \".\") 输出结果如下: 1Your admission cost is $5. - 4.3.1 使用多个 elif 代码块 12345678910age = 20if age < 4: price = 0elif age < 18: price = 5elif age < 65: price = 15else: price = 10print(\"Your admission cost is $\" + str(price) + \".\") 输出结果如下: 1Your admission cost is $15. - 4.3.2 省略 else 代码块 Python并不要求 if-elif 结构后面必须有 else 代码块: 12345678910age = 20if age < 4: price = 0elif age < 18: price = 5elif age < 65: price = 15elif age >= 65: price = 10print(\"Your admission cost is $\" + str(price) + \".\") 输出结果仍与3.3.1一样 - 4.4 测试多个条件 if-elif-else结构功能强大,但仅适用于只有一个条件满足的情况:遇到通过了的测试后,Python就会跳过余下的测试: 12345678 names = ['Zhangshan' , 'Wanger']if 'Zhangshan' in names: print(\"Zhangshan is here!\")if 'Wanger' in names: print(\"Wanger is here!\")if 'Xiaoming' in names: print(\"Xiaoming is here!\")print(\"All the students are here!\") 输出结果如下: 123Zhangshan is here!Wanger is here!All the students are here! 相同的程序,如果使用 if-elif-else 结构,代码将不能正确运行: 12345678names = ['Zhangshan' , 'Wanger']if 'Zhangshan' in names: print(\"Zhangshan is here!\")elif 'Wanger' in names: print(\"Wanger is here!\")elif 'Xiaoming' in names: print(\"Xiaoming is here!\")print(\"All the students are here!\") 输出结果如下:12Zhangshan is here!All the students are here! 总之,如果我们只想执行一个代码块,就使用 if-elif-else 结构;如果要运行多个代码块,就必须使用一系列独立的 if 语句! - 4.5 使用 if 语句处理列表 - 4.5.1 检查特殊元素对3.4例子改版,加入姓名 ‘Xiaoming’,当检索到Xiaoming时告诉他,他妈妈叫他回家吃饭1234567names = ['Zhangshan' , 'Wanger' , 'Xiaoming']for name in names: if name == 'Xiaoming': print(\"Xiaoming,Your mother told you to go home for dinner!\") else: print(name +\"is here!\")print(\"All the students are here!\") 输出结果如下: 1234Zhangshanis here!Wangeris here!Xiaoming,Your mother told you to go home for dinner!All the students are here! - 4.5.2 确定列表不是空的 在检索姓名前检查姓名是否为空,不为空则打印出所有姓名,为空则提示没有姓名: 1234567names = []if names: for name in names: print(name +\" is here!\") print(\"All the students are here!\")else: print(\"There is no students!\") 输出结果如下: 1There is no students! 在if语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回Ture,并在列表为空时返回False - 4.5.3 使用多个列表 两个列表names_1和names_2,要求输出既在names_2中又在names_1中的元素: 123456names_1 = ['Zhangshan' , 'Liyang' , 'Wanger' , 'Tangyang' , 'Xiaoming']names_2 = ['Liyang' , 'Zhangwei' , 'Tangyang']for names in names_2: if names in names_1: print(names +\" is here!\")print(\"All the students are here!\") 输出结果如下: 123Liyang is here!Tangyang is here!All the students are here!","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"if语句","slug":"if语句","permalink":"http://yoursite.com/tags/if语句/"}]},{"title":"Python3 自学笔记 C03","slug":"Python3 自学笔记C03","date":"2018-10-11T14:49:52.286Z","updated":"2018-10-11T14:49:52.314Z","comments":true,"path":"2018/10/11/Python3 自学笔记C03/","link":"","permalink":"http://yoursite.com/2018/10/11/Python3 自学笔记C03/","excerpt":"","text":"Python3 自学笔记第三章【操作列表】 - 3.1遍历整个列表 使用 for 循环来遍历整个列表: 123names = ['alice' , 'david' , 'liwei']for name in names:print(name) 输出结果如下: 123alicedavidliwei for循环让Python从列表names中取出一个名字,并将其储存在变量name中,最后 让Python打印前面储存到变量name中的名字,对于列表中的每个名字,Python都将 重复执行后两行代码,将列表names中的每个名字都打印出来 - 3.1.1在for循环中执行更多的操作 在for循环中,可对每个元素执行任何操作,下面对前面的示例进行扩展: 例一:123names = ['alice' , 'david' , 'liwei']for name in names: print(name.title() + \", that was a good man!\") 输出结果如下: 123Alice, that was a good man!David, that was a good man!Liwei, that was a good man! 例二: 12345names = ['alice' , 'david' , 'liwei']for name in names: print(name.title() + \", that was a good man!\") print(\"I can't wait to see you again,\" + name.title() + \".\\n\")print(\"Nice to meet you!\") 输出结果如下: 12345678910Alice, that was a good man!I can't wait to see you again,Alice.David, that was a good man!I can't wait to see you again,David.Liwei, that was a good man!I can't wait to see you again,Liwei.Nice to meet you! - 3.2 range()函数 Python使用range()函数能够轻松地生成一系列的数字 Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表; Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表; Python2 range() 函数返回的是列表 例一:12for i in range(1,5): print(i) 输出结果如下: 12341234 例二:12for i in range(5): print(i) 输出结果如下:1234501234 例三:123456789101112>>> list(range(5))[0, 1, 2, 3, 4]>>> list(range(0))[]>>>list(range(0, 30, 5))[0, 5, 10, 15, 20, 25]>>> list(range(0, 10, 2))[0, 2, 4, 6, 8]>>> list(range(0, -10, -1))[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> list(range(1, 0))[] 例四: 12345squares = []for value in range(1,11): square = value ** 2 squares.append(square)print(squares) 输出结果如下: 1[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] - 3.2.1 对数字列表执行简单的统计计算 1234567>>> digits = [1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0]>>> min(digits)0>>>max(digits)9>>>sum(digits)45 - 3.2.2 列表解析 列表解析能够让比如3.2中的例四更加简化,只需要一行代码就能生成这样的列表,列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素: 12squares = [value ** 2 for value in range(1,11)]print(squares) 在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value ** 2输出结果如下: 1[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] - 3.3 使用列表的一部分 处理列表的部分元素——Python称之为切片 - 3.3.1 切片 1234567891011list = ['a','b','c','d','e','f']print(list[:]) #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表print(list[:3]) #省略起始位置的索引,默认起始位置从头开始,结束位置索引为2print(list[3:]) #省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3print(list[1:4]) #开始位置索引为1,结束位置索引为3,顾头不顾尾print(list[4:1]) #从左到右索引,因此为空值print(list[-1:-3]) #从左到右索引,因此为空值print(list[-3:-1]) #开始位置索引为倒数第三个,结束位置索引为倒数第二个print(list[1:5:2]) #开始位置索引为1,结束位置索引为4,间隔2print(list[5:1:-1]) #反向取值,开始位置索引为5,结束位置索引为2print(list[::-1]) #反向取值,反向输出列表 - 3.3.2 遍历列表 1234players = ['charles' , 'martina' , 'michael' , 'florence' , 'eli']print(\"Here are the first three players on my team:\")for player in players[:3]: print(player.title()) 输出结果如下: 1234Here are the first three players on my team:CharlesMartinaMichael - 3.3.3 复制列表 要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:]),这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表: 123456my_foods = ['pizza' , 'falafel' , 'carrot cake']friend_foods = my_foods[:]print(\"My favorite foods are:\")print(my_foods)print(\"\\nMy friend's favorite foods are:\")print(friend_foods) 输出结果如下: 12345My favorite foods are:['pizza', 'falafel', 'carrot cake']My friend's favorite foods are:['pizza', 'falafel', 'carrot cake'] 为核实我们的确有两个列表,下面在每个列表中都添加一种食品,并核实每个列表都记录了相应人员喜欢的食品:12345678910my_foods = ['pizza' , 'falafel' , 'carrot cake']friend_foods = my_foods[:]my_foods.append('cannoli')friend_foods.append('ice cream')print(\"My favorite foods are:\")print(my_foods)print(\"\\nMy friend's favorite foods are:\")print(friend_foods) 输出结果如下: 12345My favorite foods are:['pizza', 'falafel', 'carrot cake', 'cannoli']My friend's favorite foods are:['pizza', 'falafel', 'carrot cake', 'ice cream'] 输出结果表明,’cannoli’包含在我喜欢的食品列表中,而’ice cream’没有;’ice cream’包含在我朋友喜欢的食品中,而’cannoli’没有,假如我们只是简单的将my_foods赋给friend_foods,就不能得到两个列表。下面是错误示例: 12345678910my_foods = ['pizza' , 'falafel' , 'carrot cake']friend_foods = my_foods #错误写法my_foods.append('cannoli')friend_foods.append('ice cream')print(\"My favorite foods are:\")print(my_foods)print(\"\\nMy friend's favorite foods are:\")print(friend_foods) 错误示例输出结果如下: 12345My favorite foods are:['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']My friend's favorite foods are:['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream'] - 3.4 元组 Python将不能修改的值称为不可变的,而不可变的列表被称为元组 - 3.4.1 定义元组 元组看起来就像是列表,但元组使用圆括号而不是方括号来标识,定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样: 123dimensions = (200,50)print(dimensions[0])print(dimensions[1]) 输出结果如下: 1220050 如果尝试修改元组中元素的值,将会导致Python返回类型错误消息,由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值: 12dimensions = (200,50)dimensions[0] = 300 将会报错: 1234Traceback (most recent call last): File \"dimensions.py\", line 2, in <module> dimensions[0] = 300TypeError: 'tuple' object does not support item assignment - 3.4.2 遍历元组中所有的值 像列表一样,元组也可以使用for循环来遍历元组中的所有值: 例一:123dimensions = (200,100,50,6)for dimension in dimensions: print(dimension) 输出结果如下: 1234200100506 例二: 123dimensions = (200,100,50,6)for dimension in dimensions[:3]: print(dimension) 输出结果如下: 12320010050 - 3.4.3 修改元组变量 虽然不能修改元组元素,但是可以给储存元组的变量赋值: 123456789dimensions = (200,50)print(\"Original dimensions:\")for dimension in dimensions: print(dimension) dimensions = (400,100)print(\"\\nModified dimensions:\")for dimension in dimensions: print(dimension) 输出结果如下: 1234567Original dimensions:20050Modified dimensions:400100 我们首先定义了一个元组,并将其储存的尺寸打印了出来;然后将一个新元组储存到变量dimensions中,打印新的尺寸;相比于列表,元组是更简单的数据结构。如果需要储存的一组值在程序的整个生命周期内都不变,可使用元组","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"操作列表","slug":"操作列表","permalink":"http://yoursite.com/tags/操作列表/"}]},{"title":"Python3 自学笔记 C02","slug":"Python3 自学笔记C02","date":"2018-09-14T17:41:46.929Z","updated":"2018-09-15T17:09:42.760Z","comments":true,"path":"2018/09/15/Python3 自学笔记C02/","link":"","permalink":"http://yoursite.com/2018/09/15/Python3 自学笔记C02/","excerpt":"","text":"Python3 自学笔记第二章【列表】 - 2.1列表是什么 列表由一系列按特定顺序的元素组成,在 Python 中用方括号( [ ] )来表示列表,并用逗号来分隔其中的元素,例: 12345list1 = ['a','b','c','d','e','f']list2 = ['abc', 'xyz', 2018, 2020]list3 = [1, 2, 3, 4, 5 ,6]list4 = [\"a\", \"b\", \"c\", \"d\"]print(list1, list2, list3 ,list4) 输出结果如下: 1['a', 'b', 'c', 'd', 'e', 'f'] ['abc', 'xyz', 2018, 2020] [1, 2, 3, 4, 5, 6] ['a', 'b', 'c', 'd'] - 2.1.1访问列表元素 列表是有序集合,因此要访问列表的元素,只需要将该元素的位置或索引告诉Python即可,注意:在Python中的第一个列表元素的索引为0,而不是1 12345list = ['a','b','c','d','e','f']print(list[0])print(list[3])print(list[-1]) #Python为访问最后一个列表元素提供了一种特殊语法,通过将索引指定为-1,可以让Python返回最后一个列表元素print(list[-3]) 输出结果如下: 1234adfd - 2.1.2列表切片 1234567891011list = ['a','b','c','d','e','f']print(list[:]) #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表print(list[:3]) #省略起始位置的索引,默认起始位置从头开始,结束位置索引为2print(list[3:]) #省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3print(list[1:4]) #开始位置索引为1,结束位置索引为3,顾头不顾尾print(list[4:1]) #从左到右索引,因此为空值print(list[-1:-3]) #从左到右索引,因此为空值print(list[-3:-1]) #开始位置索引为倒数第三个,结束位置索引为倒数第二个print(list[1:5:2]) #开始位置索引为1,结束位置索引为4,间隔2print(list[5:1:-1]) #反向取值,开始位置索引为5,结束位置索引为2print(list[::-1]) #反向取值,反向输出列表 输出结果如下: 12345678910['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c']['d', 'e', 'f']['b', 'c', 'd'][][]['d', 'e']['b', 'd']['f', 'e', 'd', 'c']['f', 'e', 'd', 'c', 'b', 'a'] - 2.1.3使用列表中的各个值 可像使用其他变量一样使用列表中的各个值,例如,我们可以使用拼接根据列表中的值来创建消息: 123list = ['python', 'c', 'c++', 'java', 'php']message = \"My favorite language is \" + list[0].title() + \"!\"print(message) 输出结果如下: 1My favorite language is Python! - 2.1.4修改元素 修改列表元素的语法与访问列表元素的语法类似,要修改列表元素,可指定列表名和要修改的元素的索引,再次指定该元素的新值: 1234names = ['zhangsan', 'lishi', 'wanger', 'liming', 'xiaowang']print(names)names[1] = 'lifang'print(names) 输出结果如下: 12['zhangsan', 'lishi', 'wanger', 'liming', 'xiaowang']['zhangsan', 'lifang', 'wanger', 'liming', 'xiaowang'] - 2.1.5添加元素 - 使用方法 append() 在列表末尾添加元素 1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)list.append('g')print(list)输出结果如下:12['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c', 'd', 'e', 'f', 'g'] - 使用方法 insert() 在列表指定位置添加元素 1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)list.insert(2,\"h\") #其中括号里的数字表示要插入的位置,此后面的元素将右移一个位置print(list) 输出结果如下: 12['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'h', 'c', 'd', 'e', 'f', 'g'] - 2.1.6删除元素 - 使用 del 语句删除元素 1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)del list[3]print(list) 输出结果如下: 12list = ['a', 'b', 'c', 'd', 'e', 'f']list = ['a', 'b', 'c', 'e', 'f'] - 使用方法 pop() 删除最后一个元素方法 pop() 可以删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像是一个栈,而删除列表末尾的元素就相当于弹出栈顶元素:12345list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)new_list = list.pop()print(list)print(new_list)输出结果如下:123['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c', 'd', 'e']f - 使用方法 pop() 删除任意位置元素可以使用 pop() 来删除列表中任何位置的元素,只需要在括号中指定要删除的元素的索引即可:12345list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)new_list = list.pop(1)print(list)print(new_list)输出结果如下:123['a', 'b', 'c', 'd', 'e', 'f']['a', 'c', 'd', 'e', 'f']b - 使用方法 remove() 删除未知位置元素当我们不知道元素的位置,只知道元素的值的时候,就可以使用方法 remove()1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)list.remove('d')print(list)输出结果如下:12['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c', 'e', 'f'] # - 2.1.7使用方法 index() 查找指定元素位置 12list = [\"a\", \"b\", \"c\", \"d\", \"e\", \"a\"]print(list.index('c')) 输出结果如下: 12 - 2.1.8使用方法 count() 统计指定元素数量 12list = [\"a\", \"b\", \"c\", \"d\", \"e\", \"a\"]print(list.count('a')) 输出结果如下: 12 - 2.1.9清空列表 123list = [\"a\", \"b\", \"c\", \"d\", \"e\", \"a\"]list.clear()print(list) 输出结果如下: 1[] - 2.2组织列表 在创建的列表中,元素的排列顺序常常是无法预测的,因为我们并非总能控制用户提供数据的顺序。有时候,我们希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列表的方式,可根据具体情况选用 - 2.2.1使用方法 sort() 对列表进行永久排序 使用方法 sort() 可以对列表按照特殊符号,数字,大写字母,小写字母顺序进行永久排序: 123cars = ['bmw', 'audi', 'toyota', 'subaru']cars.sort()print(cars) 输出结果如下: 1['audi', 'bmw', 'subaru', 'toyota'] 还可以按与字母顺序相反的顺序排列列表元素,只需要向 sort() 方法传递参数 reverse = True 就可以了: 123cars = ['bmw', 'audi', 'toyota', 'subaru']cars.sort(reverse = True)print(cars) 输出结果如下: 1['toyota', 'subaru', 'bmw', 'audi'] - 2.2.2使用函数 sorted() 对列表进行临时排序 要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序: 123456789cars = ['bmw', 'audi', 'toyota', 'subaru']print(\"Here is the original list:\")print(cars)print(\"\\nHere is the sorted list:\")print(sorted(cars))print(\"\\nHere is the sorted reverse list:\")print(sorted(cars, reverse=True))print(\"\\nHere is the original list again:\")print(cars) 输出结果如下: 1234567891011Here is the original list:['bmw', 'audi', 'toyota', 'subaru']Here is the sorted list:['audi', 'bmw', 'subaru', 'toyota']Here is the sorted reverse list:['toyota', 'subaru', 'bmw', 'audi']Here is the original list again:['bmw', 'audi', 'toyota', 'subaru'] - 2.2.3使用方法 reverse() 对列表进行反向排序 要反转列表元素的排列顺序,可使用方法 reverse() 123cars = ['bmw', 'audi', 'toyota', 'subaru']cars.reverse()print(cars) 输出结果如下: 1['subaru', 'toyota', 'audi', 'bmw'] - 2.2.4确定列表的长度 使用函数 len() 可以快速获悉列表的长度: 123>>>cars = ['bmw', 'audi', 'toyota', 'subaru']>>>len(cars)4 - 2.2.5合并列表 - 使用方法 extend() 合并列表 12345list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1.extend(list2) #将列表list2添加到list1当中去print(list1)print(list2) 输出结果如下: 12[1, 2, 3, 4, 'a', 'b', 'c', 'd']['a', 'b', 'c', 'd'] - 使用 “+” 号合并列表 1234list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']print(list1 + list2)print(list2 + list1) 输出结果如下: 12[1, 2, 3, 4, 'a', 'b', 'c', 'd']['a', 'b', 'c', 'd', 1, 2, 3, 4] - 使用切片合并列表 1234567891011121314list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1[len(list1) : len(list1)] = list2 #len(list1)代表要将list2插入list1中的位置print(list1)list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1[0 :0] = list2print(list1)list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1[1:1] = list2print(list1) 输出结果如下: 123[1, 2, 3, 4, 'a', 'b', 'c', 'd']['a', 'b', 'c', 'd', 1, 2, 3, 4][1, 'a', 'b', 'c', 'd', 2, 3, 4]","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"列表","slug":"列表","permalink":"http://yoursite.com/tags/列表/"}]},{"title":"Python3 自学笔记 C01","slug":"Python3 自学笔记C01","date":"2018-09-10T15:55:00.947Z","updated":"2018-09-15T17:09:09.035Z","comments":true,"path":"2018/09/10/Python3 自学笔记C01/","link":"","permalink":"http://yoursite.com/2018/09/10/Python3 自学笔记C01/","excerpt":"","text":"Python3 自学笔记第一章【变量和简单数据类型】 - 1.1变量的命名和使用 变量名只能包含字母、数字和下划线。变量名可以字母或者下划线打头,但不能以数字开头,例如,可以将变量命名为message_1,但不能将其命名为1_message 变量名不能包含空格,但可使用下划线来分割其中的单词,例如,变量名greeting_message可行,但变量名greeting message会引发错误 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print 变量名应既简短又具有描述性,例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好 慎用小写字母l和大写字母O,因为它们可能被人看错成数字1和0 - 1.2字符串 字符串就是一系列字符,在Python中,用引号括起来的都是字符串,其中的引号可以是单引号也可以双引号: 12\"This is a string.\"'This is also a string.' 这种灵活性让我们能够在字符串中包含引号和撇号: 123'I told my friend,\"Python is my favorite language!\"'\"The language 'Python' is named er Monty Python,not the snake.\"\"One of Python's strengths is i diverse and supportive community.\" - 1.2.1使用方法修改字符串的大小写三种处理方法如下:123title() #将字符串每个单词的首字母都改为大写upper() #将字符串的每个字母都改为大写lower() #将字符串的每个字母都改为小写 例如:1234message = \"I love you!\"print(name.title())print(name.upper())print(name.lower()) 输出结果如下:123I Love You!I LOVE YOU!i love you! - 1.2.2合并(拼接)字符串Python使用加号(+)来合并字符串,举例说明: 12345first_name = \"I\"second_name = \"love\"third_name = \"python\"full_name = first_name + \" \" + second_name + \" \" + third_timeprint(full_name.title() + \"!\") 输出结果如下: 1I Love Python! - 1.2.3使用制表符或换行符来添加空白添加横向制表符: 12>>>print(\"\\tPython\") Python 添加换行符: 12345>>>print(\"C\\nC++\\nPython\\nJavaScript\")CC++PythonJavaScript 附表:Python转义符 - 1.2.4删除空白在Python中可用 lstrip()、rstrip()、strip() 分别删除字符串开头、结尾、全部的空白,举例说明: 123456789>>>message = ' python '>>>message' python '>>>message.lstrip()'python '>>>message.rstrip()' python'>>>message.strip()'python' 如果要永久删除字符串中的空白,必须将删除操作的结果存回到变量中: 1234>>>message = ' python '>>>message = message.strip()>>>message'python' - 1.3数字在编程中,经常使用数字来记录游戏得分、表示可视化数据、储存Web应用信息等。Python根据数字的用法以不同的方式处理它们 - 1.3.1整数在Python中,可对整数执行加(+)减(-)乘(*)除(/)乘方(**)运算,同时也支持运算次序: 12345678910111213141516>>>3 + 25>>>3 - 21>>>3 * 26>>>3 \\ 21.5>>>3 ** 29>>>3 ** 327>>>2 + 3 * 414>>>(2 + 3) * 420 - 1.3.2浮点数Python将带小数点的数字都称为浮点数: 1234>>>0.1 + 0.10.2>>>2 * 0.20.4 需要注意的是,结果包含的小数位可能是不确定的,就现在而言,暂时忽略多余的小数位即可: 1234>>>0.2 + 0.10.30000000000000004>>>3 * 0.10.30000000000000004 - 1.3.3使用函数 str() 避免错误错误例子: 123age = 23message = \"Happy \" + age + \"rd Birthday!\"print(message) 运行时会报错: 1234Traceback (most recent call last): File \"birthday.py\", line 2, in <module> message = \"Happy \" + age + \"rd Birthday!\"TypeError: must be str, not int 这是一个类型错误,意味着Python无法识别我们使用的信息。在这个例子中,Python发现我们使用了一个值为整数(int)的变量,但它不知道该如何解读这个值,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样的字符串中使用整数时,需要显式地指出我们希望Python将这个整数用作字符串。为此,可调用函数 str(),它让Python将非字符串值表示为字符串: 123age = 23message = \"Happy \" + str(age) + \"rd Birthday!\"print(message) 输出结果如下: 1Happy 23rd Birthday! - 1.4注释注释让我们能够使用自然语言在程序中添加说明,Python中注释有三种方法: 123456789print(\"Hello Python!\")#这是单行注释'''这是多行注释这是多行注释'''\"\"\"这也是多行注释这也是多行注释\"\"\"","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"数据类型","slug":"数据类型","permalink":"http://yoursite.com/tags/数据类型/"},{"name":"变量","slug":"变量","permalink":"http://yoursite.com/tags/变量/"}]},{"title":"VMware Pro 14 安装 Ubuntu 18.04 详细教程","slug":"VMware Pro 14 安装 Ubuntu 18.04 详细教程","date":"2018-09-09T13:14:29.532Z","updated":"2018-09-09T13:23:38.708Z","comments":true,"path":"2018/09/09/VMware Pro 14 安装 Ubuntu 18.04 详细教程/","link":"","permalink":"http://yoursite.com/2018/09/09/VMware Pro 14 安装 Ubuntu 18.04 详细教程/","excerpt":"","text":"1.下载安装 VMware Workstation Pro 14 进入 VMware 官网或者在软件商店下载最新版VMware虚拟机并安装 2.下载 Ubuntu 18.04 系统 进入 Ubuntu 官网,下载最新版 Ubuntu 系统镜像 3.在 VMware 中创建虚拟机打开安装好的 VMware Workstation Pro 14,选择创建新的虚拟机 在新建虚拟机向导中选择自定义(高级) 默认直接下一步,直到出现下图,再选择稍后安装操作系统 选择客户机操作系统为 Linux ,如果你电脑是32位就选择 Ubuntu 版本,64位就选择 Ubuntu 64 位版本 更改虚拟机名称及存放位置 为虚拟机指定处理器数量,默认即可 为虚拟机分配内存,太大了可能会导致卡顿,太小了也不好,推荐内存大小即可 以下均选择默认即可 选择创建新虚拟磁盘 选择将虚拟磁盘储存为单个文件 默认下一步 点击完成 此时我们就可以在虚拟机左侧“我的计算机”下面看到刚刚创建的虚拟机 Ubuntu 64 位,单击 Ubuntu 64 位,选择“编辑虚拟机设置”, 再选择“CD/DVD(SATA)”,选择“使用ISO映像文件”,点击“浏览”,找到先前我们下载好的 Ubuntu 64 位镜像文件,点击“确定” 4.在虚拟机上安装 Ubuntu 系统单击 Ubuntu 64 位,选择“开启此虚拟机” 来到欢迎界面,选择好语言,点击“安装 Ubuntu” 选择键盘布局为“汉语” 更新和其他软件默认选择即可 安装类型选择“清除整个磁盘并安装 Ubuntu”,PS: 因为我们是新安装的系统,且在虚拟机中,所以可以选择清除整个磁盘,这个操作不会清除你原来电脑里面的东西 地区随便,在中国就行,默认即可 之后设置计算机名,密码 点击继续稍等一会就安装完成啦 安装过程中可能会出现的一些问题 1.在虚拟机上安装 Ubuntu 系统的过程中卡死不动 解决方法:关闭网络,重新安装即可 2.Ubuntu 不能全屏显示解决方法:方法①:安装 open-vm-tools: 1sudo apt-get install open-vm-tools 然后执行: 1sudo apt-get install open-vm* 重启即可全屏显示 方法②:在终端输入xrandr,并回车,我们就可以看到很多可以修改的分辨率,选择好分辨率后,比如我们要修改分辨率为 1920x1440 ,则在终端输入 xrandr -s 1920x1440,回车即可,注意 1920x1440 中间是小写字母 x,本人亲测此方法并不是很完美,不能完全适应屏幕 方法③:安装 VMware Tools:1、进入 Ubuntu 系统后,点击虚拟机上的【虚拟机】—>【安装 VMware Tools】,回到桌面即可看到一个 VMware Tools 的 图标2、复制 VMwareTools-10.0.10-4301679.tar.gz(版本根据自己的实际情况而定)到 home 目录下, 用命令 tar -xzvf VMwareTools-10.0.10-4301679.tar.gz 进行解压3、解压后 cd vmware_tools_distrib,打开终端4、输入“sudo ./vmware-install.pl”,输入用户密码后开始安装5、接下来会有很多地方需要你按 Enter或者 Yes6、当你看到出现 —the vmware team 的字样后就可以关闭窗口了,此时窗口就会自动全屏了,如果没有全屏,重启过后就可以了7、若还没有全屏显示,则将虚拟机的【查看】—>【自动调整大小】—>【自适应客户机】,都选上,即可实现全屏","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"VMware","slug":"VMware","permalink":"http://yoursite.com/tags/VMware/"},{"name":"Ubuntu","slug":"Ubuntu","permalink":"http://yoursite.com/tags/Ubuntu/"}]},{"title":"主流 Markdown 编辑器推荐","slug":"主流 Markdown 编辑器推荐","date":"2018-08-29T15:02:46.857Z","updated":"2018-08-30T15:05:11.494Z","comments":true,"path":"2018/08/29/主流 Markdown 编辑器推荐/","link":"","permalink":"http://yoursite.com/2018/08/29/主流 Markdown 编辑器推荐/","excerpt":"","text":"Markdown ,2004年由 John Gruberis 设计和开发,是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,以下将介绍目前比较流行的一些 Markdown 编辑器(排名不分先后) - MarkdownPad 目前分为 MarkdownPad2 和 MarkdownPad Pro 版本,后者收费,我们使用前者足矣,用户可以通过键盘快捷键和工具栏按钮来使用或者移除 Markdown 各种语法格式,支持自定义配色方案、字体、大小和布局 、即时HTML预览、HTML和PDF导出,被很多人称赞为 Windows 平台最好用的 Markdown 编辑器,实用性强,仅支持 Windows 系统,个人觉得在 Windows 10 系统上界面并不是很好看,有时候添加音乐什么的,资源多了,实时预览会显示资源加载失败,点击此处访问 MarkdownPad 官网 - BookPad 无意间在 Microsoft Store 上发现的,完美搭配 Win10 系统,界面非常简洁漂亮,2017年9月份发布,大小30.82 MB,官方网站:https://sosfos.wordpress.com/ ,收费13人民币,可免费使用7天,各种功能应有尽有,和其他编辑器不相上下,本来想着百度百度看看有没有破解版,结果全网看不见 BookPad 的影子,估计是新出来的还不为人所知吧,可以直接在 Microsoft Store 搜索下载,或者点击链接获取:https://www.microsoft.com/store/apps/9N6P5ZH2SJSX - 小书匠 分为免费版和收费版,收费版¥20/年,其实免费版的功能已经足够强大了,多种编辑模式、多种主题选择、多种编辑器实现、丰富的语法支持、第三方同步、强大的文件管理功能,让人使用一次就爱上了它,支持 Windows 和 Web,推荐使用,点击此处访问小书匠官网 - Sublime Text 3Sublime Text 3 是基于 Vim 开发的跨平台代码编辑器,收费80美元,好像可以免费试用,支持 OS X、Windows、Ubuntu 等 UNIX 及 Linux 操作系统,由于其功能的多样性而广受好评,界面简约大方,定位专业,原生支持的编程语言就多达十几种,通过第三方插件,还能实现更多语法的支持,其中就包括 Markdown ,但也有个缺点,就是不能实时预览,但是用户可以通过 Markdown Preview 的插件实现对 Markdown 的预览,具体教程请点击此处查看,点击此处访问 Sublime Text 官网 - Mou Mou 是一款由国人独立开发者罗晨开发的实时预览型 Markdown 编辑器,仅支持 OS X操作系统,是目前同类应用中对汉字兼容性最好的作品,也是目前最好用的免费 Markdown 编辑器,提供语法高亮、在线预览、同步滚动、全屏模式,支持自定保存、自动匹配,允许自定义主题,支持 CSS,HTML 和 PDF 导出等功能,点击此处访问 Mou 官网 - AtomAtom 是 Github 专门为程序员推出的一个跨平台文本编辑器,具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言,当然也支持 Markdown ,支持宏,自动完成分屏功能,集成了文件管理器,点击此处访问 Atom 官网 - Smark国人编写的开源软件,Windows / Linux 等主流系统跨平台支持,完美支持 LaTex 数学公式、脚注、尾注等,支持使用本地 MathJax 调用,不需要在线访问 MathJax CDN,用户可配置的 Markdown 语法高亮显示,美观整洁,多种格式文件导出支持,简洁友好的界面布局,完备的各类快捷键,能极大地提高工作效率,点击此处访问 Smark 官网 - HaroopadHaroopad 覆盖三大主流桌面系统,支持 Windows、OS X 和 Linux,多种主题样式供你选择,语法标亮支持 54 种编程语言,该工具重点推荐 Ubuntu/Linux 用户使用,点击此处访问 Haroopad 官网 - TyporaTypora 同样支持 Windows、OS X 和 Linux,Typora 支持即时渲染技术,这也是与其他 Markdown 编辑器最显著的区别,支持数学编辑,可与 Word 直接格式转换,在 Pandoc 的支持下进行多种文档格式转换,Typora 适合那些对码字手速和排版顺畅度有要求的人群,譬如码农、网站小编等,点击此处访问 Typora 官网 - CuteMarkEdCuteMarkEd 是一个基于qt5的跨平台的 Markdown 编辑器,开源的, 提供实时 HTML 预览、数学表达式、源码高亮和PDF导出,点击此处 访问 CuteMarkEd 官网 - MarkPadMarkPad 是款开源的 Markdown 编辑器,与 Window 8 风格和谐友好的界面,可以直接在你的博客或者 GitHub 中打开、保存文档,直接将图片粘贴到 Markdown 文档中,点击此处访问 MarkPad 官网 - Cmd Markdown作业部落出品,是一款不错的工具和博客平台兼顾的产品,同时支持 Linux、Mac 和 Windows 操作系统,此外还提供 Web 在线创作,社交化批注、智能云同步,最简单的方法,满足多种写作需要,点击此处访问 Cmd Markdown 官网 - FarBox同样是一款不错的 Markdown 编辑器和博客平台兼顾的产品,让用户通过Dropbox(现在默认是自己的同步服务器)直接建立个人网站。FarBox编辑器免费,同时支持 Linux、Mac 和 Windows 操作系统,Farbox服务可以免费试用,在本地编辑器内写作自动同步发布在个人博客,对于希望有个人博客但却不愿折腾的小白来说,是个不错的选择,点击此处访问 FarBox 官网 - MiuMiu 是一款 Windows 下的 Markdown 编辑器,支持 Markdown 高亮、代码高亮、即时预览,以及可以快速发布到 Github Gist,小众软件,界面美观,已经找不到官网了,小众软件网有提供百度云下载,Miu 下载地址 - MacDownMacDown 引用了许多 Mou 的设计方式,仅支持 Mac ,开源免费,点击此处访问 MacDown 官网 - Ulysses一款由国外开发商 The Soulmen 制作的 Markdown 编辑器。与其它同类应用相比,Ulysses 最大的不同在于,它能根据内置的文件管理器,以及与 iCloud 云服务器的实时同步方案,达到最快捷的文章整理效率,支持OS X , iPad,26人民币每月,14天免费试用,点击此处访问 Ulysses 官网 - Byword一款轻量级的 Markdown 编辑器,支持Mac,iPhone和iPad,界面极简,功能强大,貌似要付费使用,点击此处 访问 Byword 官网 - Visual Studio CodeVisual Studio Code 是微软推出一款轻量级的文本编辑工具,类似于 Sublime,它已经默认集成 Markdown 文档编辑插件,原生就支持高亮 Markdown 的语法,但想要实时预览还需要选择 Markdown: Open Preview to the Side 命令实现,相关教程请点击此处,点击此处 访问 Visual Studio Code 官网 - MarxicoMarxico 中文名马克飞象,提供桌面客户端以及离线 Chrome App,支持移动端 Web,可以直接把文本存到印象笔记,点击此处访问 Marxico,点击此处访问 马克飞象 - MaHua一个在线编辑 Markdown 文档的编辑器,小众软件,VIM 快捷键支持,完美兼容 Github 的 Markdown 语法,界面稍许简陋,点击此处访问 MaHua - Dillinger来自国外的 Markdown 编辑器,漂亮强大,支持md、 html、pdf 文件导出,支持Dropbox、Github、Google Drive、Onedrive 一键保存,点击此处访问 Dillinger - 简书简书是一个优质的创作社区,你可以在线创作并发表到社区,是国内优质原创内容输出平台,简书从一开始就已经支持 Markdown 和富文本编辑,是一个为专门为作者打造的平台,点击此处访问简书官网 要细数 Markdown 编辑器的话,可能永远也数不尽,但最有质量的也就那么几个,而且每个人的看法也不同,正所谓萝卜白菜各有所爱,什么编辑器不是最重要的,重要的是我们能写出优质的文章,不断学习进步!不断提升自我! 参考资料:《好用的Markdown编辑器一览》(By:月光)《10款流行的Markdown编辑器,总有一款适合你》(By:xiaoxiao_engineer)《解决作者们的焦虑:7 款优秀 Markdown 编辑工具推荐》(By:JailJT)","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"Markdown","slug":"Markdown","permalink":"http://yoursite.com/tags/Markdown/"},{"name":"编辑器","slug":"编辑器","permalink":"http://yoursite.com/tags/编辑器/"}]},{"title":"Hexo 博客主题个性化","slug":"Hexo 博客主题个性化","date":"2018-08-27T13:25:24.452Z","updated":"2018-10-19T15:23:49.943Z","comments":true,"path":"2018/08/27/Hexo 博客主题个性化/","link":"","permalink":"http://yoursite.com/2018/08/27/Hexo 博客主题个性化/","excerpt":"","text":"本文将讲述一些博客主题的美化、实用功能的添加,不同主题可能方法有些不同(本文以作者 luuman 的 spfk 主题为例) – 添加评论系统 主流的评论系统有很多,比如:网易云跟帖、多说、友言、畅言、来必力(LiveRe)、Disqus、Valine、Gitment等等,目前网易云跟帖、多说、友言都已经关闭了,还有些可能需要翻墙,比较麻烦,百度了一下,最后还是选择了来必力评论系统 进入来必力官网,注册一个账号(注册时可能需要翻墙) 注册完毕之后,登录,进入安装页面,选择 City 免费版安装,安装之后你会得到一段代码 我们打开主题文件下的 _config.yml 文件,添加如下代码: 在 \\themes\\hexo-theme-spfk\\layout\\_partial\\comments 文件夹下新建一个 livere.ejs 的文件,在里面填写来必力提供的代码: 123456789101112131415161718<!-- 来必力City版安装代码 --><div id=\"lv-container\" data-id=\"city\" data-uid=\"这里是你的uid\"> <script type=\"text/javascript\"> (function(d, s) { var j, e = d.getElementsByTagName(s)[0]; if (typeof LivereTower === 'function') { return; } j = d.createElement(s); j.src = 'https://cdn-city.livere.com/js/embed.dist.js'; j.async = true; e.parentNode.insertBefore(j, e); })(document, 'script'); </script> <noscript>为正常使用来必力评论功能请激活JavaScript</noscript></div><!-- City版安装代码已完成 --> 打开 \\themes\\hexo-theme-spfk\\layout\\_partial\\article.ejs 文件,在适当位置添加如下红框中的代码: 完成以上操作之后,我们就可以使用来必力评论系统了 – 添加卡通人物 我在逛别人博客的时候偶然发现右下角居然有一个萌萌的卡通人物,还能根据你鼠标位置摇头,瞬间被吸引到了,赶紧也给自己博客添加一个吧!点击此处进入该项目地址 输入如下命令获取 live2d : 1$ npm install --save hexo-helper-live2d 输入以下命令,下载相应的模型,将 packagename 更换成模型名称即可,更多模型选择请点击此处,各个模型的预览请访问原作者的博客 1$ npm install packagename 打开站点目录下的 _config.yml 文件,添加如下代码: 1234567891011live2d: enable: true scriptFrom: local model: use: live2d-widget-model-haruto #模型选择 display: position: right #模型位置 width: 150 #模型宽度 height: 300 #模型高度 mobile: show: false #是否在手机端显示 设置好过后我们就拥有了一个卡通人物 – 添加鼠标点击爱心效果 在 /themes/hexo-theme-spfk/source/js 下新建文件 love.js,在 love.js 文件中添加以下代码: 1!function(e,t,a){function n(){c(\".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 500%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}\"),o(),r()}function r(){for(var e=0;e<d.length;e++)d[e].alpha<=0?(t.body.removeChild(d[e].el),d.splice(e,1)):(d[e].y--,d[e].scale+=.004,d[e].alpha-=.013,d[e].el.style.cssText=\"left:\"+d[e].x+\"px;top:\"+d[e].y+\"px;opacity:\"+d[e].alpha+\";transform:scale(\"+d[e].scale+\",\"+d[e].scale+\") rotate(45deg);background:\"+d[e].color+\";z-index:99999\");requestAnimationFrame(r)}function o(){var t=\"function\"==typeof e.onclick&&e.onclick;e.onclick=function(e){t&&t(),i(e)}}function i(e){var a=t.createElement(\"div\");a.className=\"heart\",d.push({el:a,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:s()}),t.body.appendChild(a)}function c(e){var a=t.createElement(\"style\");a.type=\"text/css\";try{a.appendChild(t.createTextNode(e))}catch(t){a.styleSheet.cssText=e}t.getElementsByTagName(\"head\")[0].appendChild(a)}function s(){return\"rgb(\"+~~(255*Math.random())+\",\"+~~(255*Math.random())+\",\"+~~(255*Math.random())+\")\"}var d=[];e.requestAnimationFrame=function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)}}(),n()}(window,document); 在 \\themes\\hexo-theme-spfk-x\\layout\\layout.ejs 文件末尾添加以下代码: 12<!-- 页面点击小红心 --><script type=\"text/javascript\" src=\"/js/love.js\"></script> 完成以上操作后,当我们点击鼠标的时候就可以看见爱心的特效了 – 添加字数统计和阅读时长 先在博客目录下执行以下命令安装 hexo-wordcount 插件: 1$ npm i --save hexo-wordcount 之后在 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\post 目录下创建 word.ejs 文件,在 word.ejs 文件中写入以下代码: 123456789101112131415161718<div style=\"margin-top:10px;\"> <span class=\"post-time\"> <span class=\"post-meta-item-icon\"> <i class=\"fa fa-keyboard-o\"></i> <span class=\"post-meta-item-text\"> 字数统计: </span> <span class=\"post-count\"><%= wordcount(post.content) %>字</span> </span> </span> <span class=\"post-time\"> &nbsp; | &nbsp; <span class=\"post-meta-item-icon\"> <i class=\"fa fa-hourglass-half\"></i> <span class=\"post-meta-item-text\"> 阅读时长: </span> <span class=\"post-count\"><%= min2read(post.content) %>分</span> </span> </span></div> 然后在 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\article.ejs 中适当位置添加以下代码: 最后在主题目录下的 _config.yml 添加以下配置 1word_count: true 如果显示的位置不好,可以自行更改其位置,成功配置后的效果如下: – 添加背景音乐 打开网页版网易云音乐,选择你准备添加的背景音乐,点击生成外链播放器,前提是要有版权,不然是无法生成外链播放器的,复制底下的HTML代码 然后将此代码放到你想要放的地方,比如放在博客的左侧,则打开 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\left-col.ejs 文件,将复制的HTML代码粘贴进去,再进行适当的位置设置让播放器更美观,其中 auto=1 表示打开网页自动播放音乐,auto=0 表示关闭自动播放音乐 最后效果如下: – 添加网站运行时间 一个比较好的小功能,可以看见自己的博客运行多久了,时间一天天的增加,成就感也会一天天增加的在 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\footer.ejs 文件下添加以下代码: 1234567891011121314151617<span id=\"timeDate\">载入天数...</span><span id=\"times\">载入时分秒...</span><script> var now = new Date(); function createtime() { var grt= new Date(\"08/10/2018 17:38:00\");//在此处修改你的建站时间 now.setTime(now.getTime()+250); days = (now - grt ) / 1000 / 60 / 60 / 24; dnum = Math.floor(days); hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum); hnum = Math.floor(hours); if(String(hnum).length ==1 ){hnum = \"0\" + hnum;} minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum); mnum = Math.floor(minutes); if(String(mnum).length ==1 ){mnum = \"0\" + mnum;} seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum); snum = Math.round(seconds); if(String(snum).length ==1 ){snum = \"0\" + snum;} document.getElementById(\"timeDate\").innerHTML = \"本站已安全运行 \"+dnum+\" 天 \"; document.getElementById(\"times\").innerHTML = hnum + \" 小时 \" + mnum + \" 分 \" + snum + \" 秒\"; } setInterval(\"createtime()\",250);</script> 最后效果如下: – 添加百度统计 百度统计是百度推出的一款免费的专业网站流量分析工具,能够告诉用户访客是如何找到并浏览用户的网站,在网站上做了些什么,非常有趣,接下来我们把百度统计添加到自己博客当中 访问百度统计首页,注册一个账号后登陆,添加你的博客网站 接着点击代码获取,复制该代码 然后到目录 \\Hexo\\themes\\hexo-theme-spfk\\layout\\_partial 下新建一个 baidu-analytics.ejs 文件,里面粘贴你刚刚复制的代码 修改主题文件夹下的 _config.yml 文件,将你的key(图中涂掉部分)填写进去: 所有操作完成后可以在百度统计管理页面检查代码是否安装成功,如果代码安装正确,一般20分钟后,可以查看网站分析数据 – 浏览器网页标题恶搞 当用户访问你的博客时点击到了其他网页,我们可以恶搞一下网页标题,呼唤用户回来,首先在目录 \\Hexo\\themes\\hexo-theme-spfk\\source\\js 下新建一个 FunnyTitle.js 文件,在里面填写如下代码: 1234567891011121314151617<!--浏览器搞笑标题--> var OriginTitle = document.title; var titleTime; document.addEventListener('visibilitychange', function () { if (document.hidden) { $('[rel=\"icon\"]').attr('href', \"/img/trhx2.png\"); document.title = 'ヽ(●-`Д´-)ノ你丑你就走!'; clearTimeout(titleTime); } else { $('[rel=\"icon\"]').attr('href', \"/img/trhx2.png\"); document.title = 'ヾ(Ő∀Ő3)ノ你帅就回来!' + OriginTitle; titleTime = setTimeout(function () { document.title = OriginTitle; }, 2000); } }); 然后在 \\Hexo\\themes\\hexo-theme-spfk-x\\layout\\layout.ejs 文件中添加如下代码: 12<!--浏览器搞笑标题--><script type=\"text/javascript\" src=\"\\js\\FunnyTitle.js\"></script> 再次部署博客后就可以看见标题搞笑的效果了: # 未完待续…… #","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"主题个性化","slug":"主题个性化","permalink":"http://yoursite.com/tags/主题个性化/"},{"name":"Hexo","slug":"Hexo","permalink":"http://yoursite.com/tags/Hexo/"}]},{"title":"Markdown 语法&技巧总结","slug":"Markdown 语法&技巧总结","date":"2018-08-25T09:57:16.879Z","updated":"2018-10-19T14:44:25.481Z","comments":true,"path":"2018/08/25/Markdown 语法&技巧总结/","link":"","permalink":"http://yoursite.com/2018/08/25/Markdown 语法&技巧总结/","excerpt":"","text":"在写博客的时候,我们不希望都是千篇一律的没有色彩,多了解一些 Markdown 语法技巧有利于丰富我们的博客,看起来更有 feel ! – 插入图片 如果你使用 MarkdownPad 的话就比较方便,可以直接选择插入本地图片或者是网络图片,实质是通过以下代码实现的,小括号里面就是你的图片地址,中括号里面是图片的替代文字,比如上面的图片代码如下: 1![车](https://i.imgur.com/UyEXrBi.jpg) – 插入音乐 打开网页版网易云音乐,选择你准备插入的音乐,点击生成外链播放器,前提是要有版权,不然是无法生成外链播放器的,复制底下的HTML代码 然后将此HTML代码粘贴到你想要放的地方,可自行调节播放器的大小,其中 auto=1 表示打开网页自动播放音乐,auto=0 表示关闭自动播放音乐,比如See You Again (中英文版) - 罗艺恒这首歌曲代码如下: 1<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=330 height=86 src=\"//music.163.com/outchain/player?type=2&id=32405683&auto=1&height=66\"></iframe> – 插入视频 高考毕业了我们为下一届的学弟学妹们录制高考加油视频,我担任后期制作,在这里就以该视频为例٩(๑❛ᴗ❛๑)۶,在腾讯视频播放页面找到分享按钮,复制该视频的通用代码(其他视频播放平台也一样),粘贴到文章中对应位置即可,可根据情况调整视频播放器的大小 1<iframe frameborder=\"0\" width=\"1040\" height=\"700\" src=\"https://v.qq.com/txp/iframe/player.html?vid=x0643zvgtf7\" allowFullScreen=\"true\"></iframe> # 未完待续…… #","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"Markdown","slug":"Markdown","permalink":"http://yoursite.com/tags/Markdown/"},{"name":"技巧","slug":"技巧","permalink":"http://yoursite.com/tags/技巧/"}]},{"title":"如何使用 Github Pages 和 Hexo 搭建自己的独立博客","slug":"如何使用Github Pages和Hexo搭建自己独立博客","date":"2018-08-15T13:34:58.325Z","updated":"2018-08-29T15:17:51.644Z","comments":true,"path":"2018/08/15/如何使用Github Pages和Hexo搭建自己独立博客/","link":"","permalink":"http://yoursite.com/2018/08/15/如何使用Github Pages和Hexo搭建自己独立博客/","excerpt":"","text":"– 前言首先感谢您能访问我的博客:TRHX’Blog 这是一篇有关如何使用 Github Pages 和 Hexo 搭建属于自己独立博客的详尽教程,本人是软件工程专业本科生,目前只学习了C和C++编程语言,对网站开发的有关知识几乎为零,这也是我搭建好自己的博客之后写的第一篇博客,刚开始搭建博客的时候自己也是网上各种百度,由于自己属于小白那种,历经了千辛万苦才弄好,所以借这个机会写一篇小白真正能看懂的博客搭建教程,教你一步一步走向成功的彼岸! 推荐文章: 《我为什么写博客》 (By 知明所以) 《为什么你应该(从现在开始就)写博客》 (By 刘未鹏 | Mind Hacks) – 入门 Github Pages Github Pages可以被认为是用户编写的、托管在github上的静态网页。使用Github Pages可以为你提供一个免费的服务器,免去了自己搭建服务器和写数据库的麻烦。此外还可以绑定自己的域名。 Hexo Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 – 安装 Node.js点击此处访问官网,按需下载相应版本,默认安装可以了 注:本人在安装过程中出现了Warning 1909,无法创建快捷方式,这种情况很少出现,如果在安装过程中也有这种情况请参考百度文库(win10系统实测可行):《Win7安装程序警告1909无法创建快捷方式》 – 安装 Git点击此处访问官网,按需下载相应版本,默认安装即可 参考资料:《如何在windows下安装GIT》 (By 俊雨廷休) 《Pro Git(中文版)》 – 检验软件是否安装成功同时按下 Win 键和 R 键打开运行窗口,输入 cmd ,然后输入以下命令,有相应版本信息显示则安装成功,若不正确可以卸载软件重新安装,此外若安装成功,在桌面右键鼠标,可以看到菜单里多了 Git GUI Here 和 Git Bash Here两个选项,第一个是图形界面的Git操作,另一个是命令行 $ git --version $ node -v $ npm -v – Hexo 安装选择一个磁盘,新建一个文件夹,自己重命名文件夹(如:我的文件夹为:E\\TRHX_Blog),博客相关文件将储存在此文件夹下,在该文件夹下右键鼠标,点击 Git Bash Here,输入以下 npm 命令即可安装,第一个命令表示安装 hexo,第二个命令表示安装 hexo 部署到 git page 的 deployer,如图所示即为安装成功 $ npm install hexo-cli -g $ npm install hexo-deployer-git --save – Hexo 初始化配置在刚才新建的文件夹里面再次新建一个 Hexo 文件夹(如:我的文件夹为:E\\TRHX_Blog\\Hexo),进入该 Hexo 文件夹右键鼠标,点击 Git Bash Here,输入以下命令,如图所示则安装成功 $ hexo init Hexo 安装完成后,将会在指定文件夹中新建所需要的文件,Hexo 文件夹下的目录如下: – 本地查看效果执行以下命令,执行完即可登录 http://localhost:4000/ 查看效果 $ hexo generate $ hexo server 显示以下信息说明操作成功: INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop. 登录 http://localhost:4000/ 查看效果: – 将博客部署到 Github Pages 上到目前为止,我们的本地博客就成功搭建了,但是现在我们只能通过本地连接查看博客,我们要做的是让其他人也能够访问我们的博客,这就需要我们将博客部署到Github Pages上 一、注册 Github 账户:点击此处访问 Github 官网,点击 Sign Up 注册账户 二、创建项目代码库:点击 New repository 开始创建,步骤及注意事项见图: 三、配置 SSH 密钥:只有配置好 SSH 密钥后,我们才可以通过 git 操作实现本地代码库与 Github 代码库同步,在你第一次新建的文件夹里面(如:我的文件夹为:E\\TRHX_Blog) Git Bash Here 输入以下命令: $ ssh-keygen -t rsa -C "your email@example.com" //引号里面填写你的邮箱地址,比如我的是tanrenhou@126.com 之后会出现: Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): //到这里可以直接回车将密钥按默认文件进行存储 然后会出现: Enter passphrase (empty for no passphrase): //这里是要你输入密码,其实不需要输什么密码,直接回车就行 Enter same passphrase again: 接下来屏幕会显示: Your identification has been saved in /c/Users/you/.ssh/id_rsa. Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub. The key fingerprint is: 这里是各种字母数字组成的字符串,结尾是你的邮箱 The key's randomart image is: 这里也是各种字母数字符号组成的字符串 运行以下命令,将公钥的内容复制到系统粘贴板上 $ clip < ~/.ssh/id_rsa.pub 四、在 GitHub 账户中添加你的公钥 1.登陆 GitHub,进入 Settings: 2.点击 SSH and GPG Keys: 3.选择 New SSH key: 4.粘贴密钥: 五、测试 输入以下命令:注意:git@github.com不要做任何更改! $ ssh -T git@github.com 之后会显示: 输入 yes 后会显示: 此时表示设置正确 六、配置 Git 个人信息 Git 会根据用户的名字和邮箱来记录提交,GitHub 也是用这些信息来做权限的处理,输入以下命令进行个人信息的设置,把名称和邮箱替换成你自己的,名字可以不是 GitHub 的昵称,但为了方便记忆,建议与 GitHub 一致 $ git config --global user.name "此处填你的用户名" $ git config --global user.email "此处填你的邮箱" 到此为止 SSH Key 配置成功,本机已成功连接到 Github – 将本地的 Hexo 文件更新到 Github 的库中一、登录 Github 打开自己的项目 your name.github.io 二、鼠标移到 Clone or download 按钮,选择 Use SSH 三、一键复制地址 四、打开你创建的 Hexo 文件夹(如:E:\\TRHX_Blog\\Hexo),右键用记事本(或者Notepad++)打开该文件夹下的 _config.yml 文件 五、按下图修改 _config.yml 文件并保存 六、在 Hexo 文件夹下分别执行以下命令 $ hexo g $ hexo d 或者直接执行 $ hexo g -d 执行完之后会让你输入你的 Github 的账号和密码,如果此时报以下错误,说明你的 deployer 没有安装成功 ERROR Deployer not found: git 需要执行以下命令再安装一次: npm install hexo-deployer-git --save 再执行 hexo g -d,你的博客就会部署到 Github 上了 七、访问博客 你的博客地址:https://你的用户名.github.io,比如我的是:https://trhx.github.io ,现在每个人都可以通过此链接访问你的博客了 – 如何在博客上发表文章博客已经成功搭建了,但是我们该怎么写博客呢? 一、新建一个空文章,输入以下命令,会在项目 \\Hexo\\source\\_posts 中生成 文章标题.md 文件,文章标题根据需要命名 $ hexo n "文章标题" 也可以直接在 \\Hexo\\source\\_posts 目录下右键鼠标新建文本文档,改后缀为 .md 即可,这种方法比较方便 二、用编辑器编写文章 md 全称 Markdown, Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用,常用的标记符号屈指可数,几分钟即可学会, .md 文件可以使用支持 Markdown 语法的编辑器编辑,然后保存文件到 \\Hexo\\source\\_posts 文件夹下即可推荐 Windows 上使用 MarkdownPad2 编辑器,macOS 上使用 Mou 编辑器,Linux 上使用 Remarkable编辑器,Web 端上使用简书 当我们用编辑器写好文章后,可以使用以下命令将其推送到服务器上 $ hexo g $ hexo d 或者将两个命令合二为一输入以下命令: $ hexo d -g 现在访问你的博客就可以看见写好的文章啦! 参考资料:《10款流行的Markdown编辑器》 (By xiaoxiao_engineer) 《献给写作者的 Markdown 新手指南》 (By 简书) 《认识与入门 Markdown》 (By Te_Lee) 《markdown简明语法》 (By 不如) 《markdown基本语法》 (By 高鸿祥) 《Markdown 公式指导手册》 (By Harries) – 如何为博客更换自己喜欢的主题博客也搭建好了,文章也会写了,但是!!!默认的主题并不喜欢怎么办?现在,我们就来为自己的博客更换自己喜欢的主题 点击此处进入 Hexo 官网的主题专栏,我们可以看见有许多的主题供我们选择 我们要做的就是把主题克隆过来,在此我们以主题 Aero-Dual 为例,点进去我们就可以看见该主题作者的博客,鼠标滑到底,我们可以看见 Theme By Levblanc 的字样(其他主题类似),点击作者 Levblanc ,页面就会跳转到该主题所有的相关文件在 Github 上的地址,复制该地址 再打开 Hexo 文件夹下的 themes 目录(如:E:\\TRHX_Blog\\Hexo\\themes),右键 Git Bash Here,输入以下命令: $ git clone 此处填写你刚才复制的主题地址 比如要安装 Aero-Dual 主题,则输入命令: $ git clone https://github.com/levblanc/hexo-theme-aero-dual 等待下载完成后即可在 themes 目录下生成 hexo-theme-aero-dual 文件夹,然后打开 Hexo 文件夹下的配置文件 _config.yml ,找到关键字 theme,修改参数为:theme:hexo-theme-aero-dual (其他主题修改成相应名称即可),再次注意冒号后面有一个空格! 返回 Hexo 目录,右键 Git Bash Here ,输入以下命令开始部署主题: $ hexo g $ hexo s 此时打开浏览器,访问 http://localhost:4000/ 就可看见我们的主题已经更换了,如果感觉效果满意,我们就可以把它部署到Github上了 打开 Hexo 文件夹,右键 Git Bash Here ,输入以下命令: $ hexo clean //该命令的作用是清除缓存,若不输入此命令,服务器有可能更新不了主题 $ hexo g -d 此时访问自己的博客即可看见更换后的主题,但我们仍然需要对主题的相关配置进行修改,比如网站标题,图标等等,Hexo 中有两份主要的配置文件,名称都是 _config.yml ,它们均是用于站点配置使用的。其中,一份位于站点根目录下(比如我的:E:\\TRHX_Blog\\Hexo\\_config.yml),主要包含 Hexo 本身整站的配置;另一份位于主题目录下(比如我的:E:\\TRHX_Blog\\Hexo\\themes\\hexo-theme-aero-dual\\_config.yml),这份配置由主题作者提供,主要用于配置主题相关的选项,一般 _config.yml 文件里都有相关注释,按需修改即可 参考资料:《有哪些好看的 Hexo 主题?》 (知乎) 《Hexo | 配置》 (Hexo官方文档) 《hexo常用命令笔记》 (By 小弟调调) – 为你的 Hexo 博客配置个性域名本人在配置域名的时候问题百出,百度的各种方法都不管用,打开网站总是 404,可能是我太笨了 o(╥﹏╥)o ,不过好在后来终于解决了这个问题 首先我们要购买域名,阿里云,腾讯云都可以,也不贵,一年几十块钱,最便宜几块钱也能买到,以阿里云为例,我购买的域名是 trhx.top,购买过程就不赘述了,选择阿里云的解析平台,来到阿里云的管理控制台,点击进入域名解析列表或者直接点击域名后面的解析 点击添加记录,需要添加两个记录,两个记录类型都是 CNAME ,记录值都是填你自己的博客地址(比如我的是:trhx.github.io),第一个主机记录为 @ ,第二个主机记录为 www ,保存之后域名解析就完成了! 【注:百度大多数方法是这样的:两个记录类型为 A ,记录值都为博客的 IP 地址,IP 地址可以 cmd 中输入 ping 你的博客地址 获得(比如我的:ping trhx.github.io),但我尝试这种方法并没有成功,目前也不知道具体原因,强调一下,我还是这方面小白!小白!小白!所以不太懂,欢迎大佬来指点!】 为了使 GitHub 接收我们的域名,还需要在博客的根目录下添加一个名为 CNAME 的文件(注意不要加.txt,没有任何后缀名!),这个文件放到 Hexo 文件夹的 source 里面,(比如我的是:E:\\TRHX_Blog\\Hexo\\source),文件里面填写你的域名(去掉www),比如要填写我的域名,文件里面就放一句话:trhx.top,经过以上操作,别人就可以通过 www.trhx.top 、trhx.top 、trhx.github.io 三个当中任意一个访问我的博客了!你的也一样! 如果你在其他平台购买域名,或者选择 DNSPod 等其他域名解析,操作方法大同小异,遇到问题可自行百度解决! 参考资料:《推荐几家域名注册服务商》 (By Jelly Bool) 《盘点十大免费DNS域名解析服务:稳定、可靠》 – 结语一顿操作下来虽然有点儿累,但看见拥有了自己的博客还是非常有成就感的,人生就是需要折腾,那么现在就开始你的创作之旅吧!文章的不断积累,你会从中受益很多的!另外,这是一篇小白写的适用于小白的博客搭建教程,比较详细,有这方面基础的可以百度有简略一点儿的教程,文中如有错误还请大佬指出改正!文中涉及参考资料如有侵权请联系我删除!","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"Hexo","slug":"Hexo","permalink":"http://yoursite.com/tags/Hexo/"},{"name":"Github Pages","slug":"Github-Pages","permalink":"http://yoursite.com/tags/Github-Pages/"}]},{"title":"Hello World!","slug":"Hello World","date":"2018-08-10T09:38:00.000Z","updated":"2018-10-27T11:20:27.019Z","comments":true,"path":"2018/08/10/Hello World/","link":"","permalink":"http://yoursite.com/2018/08/10/Hello World/","excerpt":"","text":"人类的幸福和欢乐在于奋斗,而最有价值的是为理想而奋斗! ——— 苏格拉底Human happiness and joy lie in struggle, and what is most valuable is striving for ideals! ——— Socrates","categories":[{"name":"Hello World","slug":"Hello-World","permalink":"http://yoursite.com/categories/Hello-World/"}],"tags":[{"name":"Life","slug":"Life","permalink":"http://yoursite.com/tags/Life/"},{"name":"Dream","slug":"Dream","permalink":"http://yoursite.com/tags/Dream/"}]}]} \ No newline at end of file +{"meta":{"title":"TRHX's Blog - Live for code!","subtitle":"路漫漫其修远兮,吾将上下而求索!","description":"一个大学生用于自学的个人博客","author":"TRHX","url":"http://yoursite.com"},"pages":[{"title":"友情链接 & 留言板","date":"2018-10-19T13:57:08.140Z","updated":"2018-10-19T13:57:08.140Z","comments":true,"path":"Message Board/index.html","permalink":"http://yoursite.com/Message Board/index.html","excerpt":"","text":"hojun’s Blog: https://www.hojun.cnNice’s Blog: https://luotaocheng.github.ioFangzh’s Blog: http://fangzh.top/Terry’s Blog: http://terrylovessmiles.cn/SimonKing’s Blog: http://nicooo.ooo/欧阳博客:https://5658.pw 天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣! 山河不足重,重在遇知已!欢迎在下方留言,好好学习天天向上!"},{"title":"About TRHX","date":"2018-08-19T13:50:37.000Z","updated":"2018-09-10T16:26:43.558Z","comments":true,"path":"About TRHX/index.html","permalink":"http://yoursite.com/About TRHX/index.html","excerpt":"","text":"About TRHX ▲ TRHX 武汉某二本院校大二学生,软件工程专业,平时爱捣鼓一切与IT有关的东西,对一切高科技产品非常感兴趣;▲ 爱编程,但又没技术,渴望成为技术大佬,但暂时看起来还是天方夜谭,在校学习C、C++、Java,准备自学Python;▲ 爱骑行,混迹于骑行界超过五年,走遍许多城市,梦想能去一次西藏▲ 爱嗨歌、爱说唱,尤其喜欢一边听歌一边搞学(che)习(dan),一边放低音炮一边骑车飞(zhuang)奔(bi);▲ 性格正直,看不惯一切恶势力;▲ 爱吃辣,无辣不欢;不知道写什么,以后慢慢写吧,反正写着玩儿,也没人看。 近期计划 ▲ 学好Python▲ 坚持写博客▲ 大二学好Java"},{"title":"Tags","date":"2018-09-07T13:45:26.000Z","updated":"2018-09-07T13:45:26.400Z","comments":true,"path":"tags/index.html","permalink":"http://yoursite.com/tags/index.html","excerpt":"","text":""},{"title":"Categories","date":"2018-09-15T17:17:23.000Z","updated":"2018-09-15T17:17:23.204Z","comments":true,"path":"categories/index.html","permalink":"http://yoursite.com/categories/index.html","excerpt":"","text":""}],"posts":[{"title":"Python3 自学笔记 C06","slug":"Python3 自学笔记C06","date":"2018-10-30T05:38:20.264Z","updated":"2018-10-30T05:38:20.287Z","comments":true,"path":"2018/10/30/Python3 自学笔记C06/","link":"","permalink":"http://yoursite.com/2018/10/30/Python3 自学笔记C06/","excerpt":"","text":"Python3 自学笔记第六章【用户输入和 while 循环】 - 6.1 函数 input() 的工作原理 函数 input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其储存在一个变量当中,以方便你使用;函数 input() 返回为 string 类型 12message = input(\"Please tell me your name:\")print(\"Hello , \" + message + \"!\") 输出结果如下: 12Please tell me your name:anliyHello , anliy! 进阶: 1234message = \"Please tell me your name so that we can personalize the messages you see.\"message += \"\\nWhat's your first name?\"name = input(message)print(\"\\nHello , \" + name + \"!\") 输出结果如下: 1234Please tell me your name so that we can personalize the messages you see.What's your first name?trhxHello , trhx! - 6.1.1 使用 int() 来获取数值输入 使用函数 input() 时,Python会将用户输入解读为字符串: 1234>>> age = input(\"How old are you?\")How old are you?19>>> age'19' 为了解决这个问题,可以使用函数 int() ,它让Python将输入视为数值: 12345>>> age = input(\"How old are you?\")How old are you?19>>> age = int(age)>>> age19 实例: 123456age = input(\"Please tell me your age:\")age = int(age)if age >= 18: print(\"You are old enough to go to the Internet bar!\")else: print(\"You are not old enough to go to Internet bar!\") 输出结果如下: 12Please tell me your age:17You are not old enough to go to Internet bar! - 6.1.2 求模运算符 处理数值信息时,求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数: 12345678>>> 4 % 31>>> 5 % 32>>> 8 % 20>>> 7 % 31 - 6.1.3 在 Python 2.7 中获取输入 如果使用 Python 2.7,应该使用函数 raw_input() 来提示用户输入,这个函数与 Python 3 中的 input() 一样,也将输入解读为字符串;Python 2.7 也包含函数 input(),但它将用户输入解读为Python代码,并尝试运行它们 - 6.2 while 循环 for 循环用于针对集合中的每一个元素的一个代码块,而 while 循环不断地运行,直到指定的条件不满足为止 - 6.2.1 使用 while 循环 一个简单的 while 循环: 1234num = 1while num < 5: print(num) num += 1 输出结果如下: 12341234 - 6.2.2 让用户选择退出循环 123456prompt = \"\\nTell me something, and I will repeat it back to you:\"prompt += \"\\nEnter 'quit' to end the program.\"message = \" \"while message != 'quit': message = input(prompt) print(message) 运行程序: 123456789101112Tell me something, and I will repeat it back to you:Enter 'quit' to end the program.Hello everyone!Hello everyone!Tell me something, and I will repeat it back to you:Enter 'quit' to end the program.Hello again!Hello again!Tell me something, and I will repeat it back to you:Enter 'quit' to end the program.quitquit - 6.2.3 使用标志 在要求很多条件都满足才继续运行的程序中,可以定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志 123456789prompt = \"\\nTell me something, and I will repeat it back to you:\"prompt += \"\\nEnter 'quit' to end the program.\"active = Truewhile active: message = input(prompt) if message == 'quit': active = False else: print(message) 运行结果与6.2.2一致 - 6.2.4 使用 break 退出循环 要立即退出 while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用 break 语句,break 语句用于控制程序流程,可使用它来控制哪些代码将执行,哪些代码不执行 123456789prompt = \"\\nPlease enter the name of a city you have visited:\"prompt += \"\\nEnter 'quit' when you are finished.\"active = Truewhile active: city = input(prompt) if city == 'quit': break else: print(\"I'd love to go to \" + city.title() + \"!\") 运行程序: 1234567891011Please enter the name of a city you have visited:Enter 'quit' when you are finished.ShanghaiI'd love to go to Shanghai!Please enter the name of a city you have visited:Enter 'quit' when you are finished.BeijingI'd love to go to Beijing!Please enter the name of a city you have visited:Enter 'quit' when you are finished.quit 在任何Python循环中都可以使用break语句,例如,可以使用break语句来退出遍历列表或字典 - 6.2.5 在循环中使用 continue 要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用 continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环,例如,从1到10只打印其中奇数: 123456number =0while number < 10: number += 1 if number % 2 == 0: continue print(number) 输出结果如下:1234513579 - 6.3 使用 while 循环来处理列表和字典 for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素,要在遍历列表的同时对其进行修改,可使用while循环 - 6.3.1 在列表之间移动元素 123456789unconfirmed_users = ['alice' , 'brian' , 'candace']confirmed_users = []while unconfirmed_users: current_user = unconfirmed_users.pop() print(\"Verifying user: \" + current_user.title()) confirmed_users.append(current_user)print(\"\\nThe following users have been confirmed:\")for confirmed_user in confirmed_users: print(confirmed_user.title()) 首先创建一个未验证用户列表,其中包含用户Alice、Brian和Candace,还创建了一个空列表,用于存储已验证的用户,程序中的 while 循环将不断地运行,直到列表 unconfirmed_users 变成空的。在这个循环中,函数pop() 以每次一个的方式从列表 unconfirmed_users 末尾删除未验证的用户。由于Candace位于列表 unconfirmed_users 的末尾,因此其名字将首先被删除、存储到变量 current_user 中并加入到列表 confirmed_users 中。接下来是Brian,然后是Alice 为模拟用户验证过程,我们打印一条验证消息并将用户加入到已验证用户列表中。未验证用户列表越来越短,而已验证用户列表越来越长。未验证用户列表为空后结束循环,再打印已验证用户列表: 12345678Verifying user: CandaceVerifying user: BrianVerifying user: AliceThe following users have been confirmed:CandaceBrianAlice - 6.3.2 删除包含特定值的所有列表元素 可以使用方法 remove() 来删除列表中特定的值,但如果要删除的值在列表中出现了多次,方法 remove() 就不管用了,如果要删除列表中所有包含特定值的元素则可以使用 while 循环: 12345names = ['alice' , 'candace' , 'alice' , 'brian' , 'alix' , 'candace' , 'heliy']print(names)while 'candace' in names: names.remove('candace')print(names) 输出结果如下: 12['alice', 'candace', 'alice', 'brian', 'alix', 'candace', 'heliy']['alice', 'alice', 'brian', 'alix', 'heliy'] 使用方法 remove() 做对比: 1234names = ['alice' , 'candace' , 'alice' , 'brian' , 'alix' , 'candace' , 'heliy']print(names)names.remove('candace')print(names) 输出结果如下: 12['alice', 'candace', 'alice', 'brian', 'alix', 'candace', 'heliy']['alice', 'alice', 'brian', 'alix', 'candace', 'heliy'] - 6.3.3 使用用户输入来填充字典 12345678910111213141516171819202122responses = {}#设置一个标志,指出调查是否继续polling_active = Truewhile polling_active: #提示输入被调查者的姓名和回答 name = input(\"\\nWhat's your name?\") response = input(\"What kind of fruit do you like?\") #将答卷储存在字典中 responses[name] = response #询问是否还有其他人要参与回答 repeat = input(\"Would you like to let another person respond?(Yes/No)\") if repeat == 'No': polling_active = False#调查结束,显示结果print(\"\\n------ Poll Results ------\")for name , response in responses.items(): print(name + \" like \" + response + \".\") 运行程序: 1234567891011What's your name?TRHXWhat kind of fruit do you like?appleWould you like to let another person respond?(Yes/No)YesWhat's your name?TRHXCCWhat kind of fruit do you like?bananaWould you like to let another person respond?(Yes/No)No------ Poll Results ------TRHX like apple.TRHXCC like banana.","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"input()函数","slug":"input-函数","permalink":"http://yoursite.com/tags/input-函数/"},{"name":"while循环","slug":"while循环","permalink":"http://yoursite.com/tags/while循环/"}]},{"title":"Python3 自学笔记 C05","slug":"Python3 自学笔记C05","date":"2018-10-27T10:46:22.942Z","updated":"2018-10-27T10:46:23.044Z","comments":true,"path":"2018/10/27/Python3 自学笔记C05/","link":"","permalink":"http://yoursite.com/2018/10/27/Python3 自学笔记C05/","excerpt":"","text":"Python3 自学笔记第五章【字典】 - 5.1 一个简单的字典 123fruits = {'apple' : 'red' , 'number' : 5}print(fruits['apple'])print(fruits['number']) 输出结果如下: 12red5 在Python中,字典是一系列键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何Python对象用作字典中的值。键-值对是两个相关联的值。在指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键-值对之间用逗号分隔。在字典中,想储存多少个键-值对都可以 - 5.1.1 访问字典中的值 要获取与键相关联的值,可依次指定字典名和放在方括号内的键: 123fruits = {'apple' : 'red' , 'number' : 5}number_fruits = fruits['number']print(\"The number of apple is \" + str(number_fruits) + \"!\") 输出结果如下: 1The number of apple is 5! - 5.1.2 添加键-值对 字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名、用方括号括起来的键和相关联的值 12345fruits = {'apple' : 'red' , 'number1' : 5}print(fruits)fruits['banana'] = 'yellow'fruits['number2'] = 13print(fruits) 输出结果如下: 12{'apple': 'red', 'number1': 5}{'apple': 'red', 'number1': 5, 'banana': 'yellow', 'number2': 13} 注意:键-值对的排列顺序与添加顺序不同。Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系 有时候为了方便也可以先使用一对空的花括号定义一个字典,再分行添加各个键-值对: 1234fruits = {}fruits['banana'] = 'yellow'fruits['number2'] = 13print(fruits) 输出结果如下: 1{'banana': 'yellow', 'number2': 13} - 5.1.3 修改字典中的值 要修改字典中的值,可依次指定字典名、用方括号括起来的键以及与该键相关联的新值 1234fruits = {'color' : 'red'}print(\"The color of the fruits is \" + fruits['color'] + \"!\")fruits['color'] = 'yellow'print(\"The color of the fruits is \" + fruits['color'] + \" now!\") 输出结果如下: 12The color of the fruits is red!The color of the fruits is yellow now! 进阶:对一个能够以不同速度移动的外星人的位置进行跟踪,为此,我们将储存该外星人的当前速度,并据此确定该外星人将向右移动多远: 1234567891011121314alien = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}print(\"Original x-position: \" + str(alien['x_position']))#向右移动外星人,据外星人当前速度决定将其移动多远if alien['speed'] == 'slow': x_increment = 1elif alien['speed'] == 'medium': x_increment = 2else: x_increment = 3#新位置等于老位置加上增量alien['x_position'] = alien['x_position'] + x_incrementprint(\"New x_position: \" + str(alien['x_position'])) 输出结果如下: 12Original x-position: 0New x_position: 2 - 5.1.4 删除键-值对 对于字典中不再需要的信息,可使用del语句将相应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键 1234fruits = {'apple' : 'red' , 'number' : 5}print(fruits)del fruits['number']print(fruits) 输出结果如下: 12{'apple': 'red', 'number': 5}{'apple': 'red'} - 5.1.5 由类似对象组成的字典 字典储存的可以是一个对象的多种信息,也可以储存众多对象的同一种信息,例如要调查很多人最喜欢的编程语言: 1234567favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }print(\"Sarah's favorite languages is \" + favorite_languages['sarah'].title() + \"!\") 输出结果如下: 1Sarah's favorite languages is C! - 5.2 遍历字典 - 5.2.1 方法 items() 遍历所有的键-值对 使用for循环来遍历字典:12345678name = { 'username' : 'efermi' , 'first' : 'enrico' , 'last' : 'fermi' , }for key , value in name.items(): print(\"\\nKey: \" + key) print(\"Value: \" + value) 输出结果如下:123456789Key: usernameValue: efermiKey: firstValue: enricoKey: lastValue: fermi for语句的第二部分包含字典和方法items(),它返回一个键-值对列表。接下来,for循环依次将每个键-值对储存到指定的两个变量中 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for name, language in favorite_languages.items(): print(name.title() + \"'s favorite language is \" + language.title() + \".\") 输出结果如下: 1234Jen's favorite language is Python.Sarah's favorite language is C.Edward's favorite language is Ruby.Phil's favorite language is Java. - 5.2.2 方法 keys() 遍历字典中所有的键 在不需要使用字典中的值时,方法key()很有用,下面来遍历字典favorite_languages,并将每个被调查者的名字都打印出来: 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for name in favorite_languages.keys(): print(name.title()) 输出结果如下: 1234JenSarahEdwardPhil 遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的for name in favorite_languages.keys():替换为for name in favorite_languages:输出结果将不变进阶: 1234567891011favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }friends = ['phil', 'sarah']for name in favorite_languages.keys(): print(name.title()) if name in friends: print(\"Hi \" + name + \", I see your favorite languages is \" + favorite_languages[name].title() + \"!\") 输出结果如下: 123456JenSarahHi sarah, I see your favorite languages is C!EdwardPhilHi phil, I see your favorite languages is Java! - 5.2.3 函数 sorted() 按顺序遍历字典中的所有键 字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的,要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序,为此,可以使用函数sorted()来获得按特定顺序排列的键列表的副本: 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for name in sorted(favorite_languages.keys()): print(name.title()) 输出结果如下: 1234EdwardJenPhilSarah - 5.2.4 方法 values() 遍历字典中的所有值 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'java' , }for languages in favorite_languages.values(): print(languages.title()) 输出结果如下: 1234PythonCRubyJava 这种做法提取字典中所有的值,而没有考虑是否重复,为剔除重复项,可使用集合(set),集合类似于列表,但每个元素都必须是独一无二的: 12345678favorite_languages = { 'jen' : 'python' , 'sarah' : 'c' , 'edward' : 'ruby' , 'phil' : 'python' , }for languages in set(favorite_languages.values()): print(languages.title()) 输出结果如下: 123CPythonRuby - 5.3 嵌套 有时候,需要将一系列字典储存在列表中,或将列表作为值储存在字典中,这称为嵌套。可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典 - 5.3.1 字典列表 下面代码创建三个字典,每个字典都表示一个个学生,将这三个字典都放到一个名为students的列表当中,遍历列表将每个学生都打印出来: 123456student_0 = {'name' : 'anily' , 'class' : 2}student_1 = {'name' : 'nikey' , 'class' : 5}student_2 = {'name' : 'heyk' , 'class' : 3}students = [student_0 , student_1 , student_2]for student in students: print(student) 输出结果如下: 123{'name': 'anily', 'class': 2}{'name': 'nikey', 'class': 5}{'name': 'heyk', 'class': 3} 进阶:使用 range() 自动生成三十个外星人: 123456789101112131415#创建一个用于存储外星人的空列表aliens = []#创建三十个绿色的外星人for alien_number in range(30): new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'} aliens.append(new_alien)#显示前五个外星人for alien in aliens[:5]: print(alien)print(\"......\")#显示创建了多少外星人print(\"Total number of aliens: \" + str(len(aliens))) 输出结果如下: 1234567{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}......Total number of aliens: 30 在上述例子中,虽然每个外星人都具有相同特征,但在Python看来,每个外星人都是独立的,我们可以独立地修改每个外星人: 12345678910111213aliens = []for alien_number in range(30): new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'} aliens.append(new_alien)for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['points'] = 10 alien['speed'] = 'medium'for alien in aliens[:5]: print(alien)print(\"......\")print(\"Total number of aliens: \" + str(len(aliens))) 输出结果如下: 1234567{'color': 'yellow', 'points': 10, 'speed': 'medium'}{'color': 'yellow', 'points': 10, 'speed': 'medium'}{'color': 'yellow', 'points': 10, 'speed': 'medium'}{'color': 'green', 'points': 5, 'speed': 'slow'}{'color': 'green', 'points': 5, 'speed': 'slow'}......Total number of aliens: 30 - 5.3.2 在字典中存储列表 有时候需要将列表储存在字典中,而不是将字典储存在列表中:例一: 12345678910#储存所点比萨的信息pizza = { 'crust' : 'thick' , 'toppings' : ['mushrooms' , 'extra chees'] , }#概述所点的比萨print(\"You ordered a \" + pizza['crust'] + \"-crust pizza\" + \"with the following toppings :\" )for topping in pizza['toppings']: print(\"\\t\" + topping) 输出结果如下: 123You ordered a thick-crust pizzawith the following toppings : mushrooms extra chees 例二: 12345678910favorite_languages = { 'jen' : ['python' , 'ruby'] , 'sarah' : ['c'] , 'edward' : ['go' , 'ruby'] , 'phil' : ['python' , 'java'] , }for name , languages in favorite_languages.items(): print(\"\\n\" + name.title() + \"'s favorite languages are:\") for language in languages: print(\"\\t\" + language.title()) 输出结果如下: 123456789101112131415Jen's favorite languages are: Python RubySarah's favorite languages are: CEdward's favorite languages are: Go RubyPhil's favorite languages are: Python Java - 5.3.3 在字典中存储字典 123456789101112131415161718users = { 'aeinstein' : { 'first' : 'albert' , 'last' : 'einstein' , 'location' : 'princeton' , } , 'mcurie' : { 'first' : 'marie' , 'last' : 'curie' , 'location' : 'paris' , } , }for username , user_info in users.items(): print(\"\\nUsername : \" + username) full_name = user_info['first'] + \" \" + user_info['last'] location = user_info['location'] print(\"\\tFull name : \" + full_name.title()) print(\"\\tlocation : \" + location .title()) 输出结果如下: 12345678Username : aeinstein Full name : Albert Einstein location : PrincetonUsername : mcurie Full name : Marie Curie location : Paris","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"字典","slug":"字典","permalink":"http://yoursite.com/tags/字典/"}]},{"title":"Python3 自学笔记 C04","slug":"Python3 自学笔记C04","date":"2018-10-23T14:52:48.396Z","updated":"2018-10-23T15:05:23.396Z","comments":true,"path":"2018/10/23/Python3 自学笔记C04/","link":"","permalink":"http://yoursite.com/2018/10/23/Python3 自学笔记C04/","excerpt":"","text":"Python3 自学笔记第四章【if语句】 - 4.1 一个简单的数列 给定一个汽车列表,将其中每一辆汽车的名称打印出来,要求打印 ‘bmw’ 时所有字母都要大写,其余名称只需要首字母大写: 123456cars = ['audi' , 'bmw' , 'subaru' , 'toyota']for car in cars: if car == 'bmw': print(car.upper())else: print(car.title()) 输出结果如下: 1234AudiBMWSubaruToyota - 4.1.1 检查特定值是否包含在列表当中 要判断特定的值是否已包含在列表当中,可使用关键字 in 1234user_names = ['andia' , 'david' , 'liwa']user = 'andia'if user in user_names: print(user.title() + \"is in user_name.\") 输出结果如下: 1Andiais in user_name. 要判断特定的值是否不包含在列表当中,可使用关键字 not in 1234user_names = ['andia' , 'david' , 'liwa']user = 'kivle'if user not in user_names: print(user.title() + \"is not in user_name.\") 输出结果如下: 1Kivleis not in user_name. - 4.2 if-else 语句 1234567age = input(\"请输入你的年龄查看是否可以去网吧:\")if int(age) >= 18: print(\"You are old enough to go to the net bar!\") print(\"You should go to net bar less,study more!\")else: print(\"You are too young to go to the net bar!\") print(\"Wait until you are 18 to go to the net bar!\") 分别输入19和15,输出结果如下: 123请输入你的年龄查看是否可以去网吧:19You are old enough to go to the net bar!You should go to net bar less,study more! 123请输入你的年龄查看是否可以去网吧:15You are too young to go to the net bar!Wait until you are 18 to go to the net bar! - 4.3 if-elif-else 结构 12345678age = 12if age < 4: price = 0elif age < 18: price = 5else: price = 10print(\"Your admission cost is $\" + str(price) + \".\") 输出结果如下: 1Your admission cost is $5. - 4.3.1 使用多个 elif 代码块 12345678910age = 20if age < 4: price = 0elif age < 18: price = 5elif age < 65: price = 15else: price = 10print(\"Your admission cost is $\" + str(price) + \".\") 输出结果如下: 1Your admission cost is $15. - 4.3.2 省略 else 代码块 Python并不要求 if-elif 结构后面必须有 else 代码块: 12345678910age = 20if age < 4: price = 0elif age < 18: price = 5elif age < 65: price = 15elif age >= 65: price = 10print(\"Your admission cost is $\" + str(price) + \".\") 输出结果仍与3.3.1一样 - 4.4 测试多个条件 if-elif-else结构功能强大,但仅适用于只有一个条件满足的情况:遇到通过了的测试后,Python就会跳过余下的测试: 12345678 names = ['Zhangshan' , 'Wanger']if 'Zhangshan' in names: print(\"Zhangshan is here!\")if 'Wanger' in names: print(\"Wanger is here!\")if 'Xiaoming' in names: print(\"Xiaoming is here!\")print(\"All the students are here!\") 输出结果如下: 123Zhangshan is here!Wanger is here!All the students are here! 相同的程序,如果使用 if-elif-else 结构,代码将不能正确运行: 12345678names = ['Zhangshan' , 'Wanger']if 'Zhangshan' in names: print(\"Zhangshan is here!\")elif 'Wanger' in names: print(\"Wanger is here!\")elif 'Xiaoming' in names: print(\"Xiaoming is here!\")print(\"All the students are here!\") 输出结果如下:12Zhangshan is here!All the students are here! 总之,如果我们只想执行一个代码块,就使用 if-elif-else 结构;如果要运行多个代码块,就必须使用一系列独立的 if 语句! - 4.5 使用 if 语句处理列表 - 4.5.1 检查特殊元素对3.4例子改版,加入姓名 ‘Xiaoming’,当检索到Xiaoming时告诉他,他妈妈叫他回家吃饭1234567names = ['Zhangshan' , 'Wanger' , 'Xiaoming']for name in names: if name == 'Xiaoming': print(\"Xiaoming,Your mother told you to go home for dinner!\") else: print(name +\"is here!\")print(\"All the students are here!\") 输出结果如下: 1234Zhangshanis here!Wangeris here!Xiaoming,Your mother told you to go home for dinner!All the students are here! - 4.5.2 确定列表不是空的 在检索姓名前检查姓名是否为空,不为空则打印出所有姓名,为空则提示没有姓名: 1234567names = []if names: for name in names: print(name +\" is here!\") print(\"All the students are here!\")else: print(\"There is no students!\") 输出结果如下: 1There is no students! 在if语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回Ture,并在列表为空时返回False - 4.5.3 使用多个列表 两个列表names_1和names_2,要求输出既在names_2中又在names_1中的元素: 123456names_1 = ['Zhangshan' , 'Liyang' , 'Wanger' , 'Tangyang' , 'Xiaoming']names_2 = ['Liyang' , 'Zhangwei' , 'Tangyang']for names in names_2: if names in names_1: print(names +\" is here!\")print(\"All the students are here!\") 输出结果如下: 123Liyang is here!Tangyang is here!All the students are here!","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"if语句","slug":"if语句","permalink":"http://yoursite.com/tags/if语句/"}]},{"title":"Python3 自学笔记 C03","slug":"Python3 自学笔记C03","date":"2018-10-11T14:49:52.286Z","updated":"2018-10-11T14:49:52.314Z","comments":true,"path":"2018/10/11/Python3 自学笔记C03/","link":"","permalink":"http://yoursite.com/2018/10/11/Python3 自学笔记C03/","excerpt":"","text":"Python3 自学笔记第三章【操作列表】 - 3.1遍历整个列表 使用 for 循环来遍历整个列表: 123names = ['alice' , 'david' , 'liwei']for name in names:print(name) 输出结果如下: 123alicedavidliwei for循环让Python从列表names中取出一个名字,并将其储存在变量name中,最后 让Python打印前面储存到变量name中的名字,对于列表中的每个名字,Python都将 重复执行后两行代码,将列表names中的每个名字都打印出来 - 3.1.1在for循环中执行更多的操作 在for循环中,可对每个元素执行任何操作,下面对前面的示例进行扩展: 例一:123names = ['alice' , 'david' , 'liwei']for name in names: print(name.title() + \", that was a good man!\") 输出结果如下: 123Alice, that was a good man!David, that was a good man!Liwei, that was a good man! 例二: 12345names = ['alice' , 'david' , 'liwei']for name in names: print(name.title() + \", that was a good man!\") print(\"I can't wait to see you again,\" + name.title() + \".\\n\")print(\"Nice to meet you!\") 输出结果如下: 12345678910Alice, that was a good man!I can't wait to see you again,Alice.David, that was a good man!I can't wait to see you again,David.Liwei, that was a good man!I can't wait to see you again,Liwei.Nice to meet you! - 3.2 range()函数 Python使用range()函数能够轻松地生成一系列的数字 Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表; Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表; Python2 range() 函数返回的是列表 例一:12for i in range(1,5): print(i) 输出结果如下: 12341234 例二:12for i in range(5): print(i) 输出结果如下:1234501234 例三:123456789101112>>> list(range(5))[0, 1, 2, 3, 4]>>> list(range(0))[]>>>list(range(0, 30, 5))[0, 5, 10, 15, 20, 25]>>> list(range(0, 10, 2))[0, 2, 4, 6, 8]>>> list(range(0, -10, -1))[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> list(range(1, 0))[] 例四: 12345squares = []for value in range(1,11): square = value ** 2 squares.append(square)print(squares) 输出结果如下: 1[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] - 3.2.1 对数字列表执行简单的统计计算 1234567>>> digits = [1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0]>>> min(digits)0>>>max(digits)9>>>sum(digits)45 - 3.2.2 列表解析 列表解析能够让比如3.2中的例四更加简化,只需要一行代码就能生成这样的列表,列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素: 12squares = [value ** 2 for value in range(1,11)]print(squares) 在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value ** 2输出结果如下: 1[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] - 3.3 使用列表的一部分 处理列表的部分元素——Python称之为切片 - 3.3.1 切片 1234567891011list = ['a','b','c','d','e','f']print(list[:]) #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表print(list[:3]) #省略起始位置的索引,默认起始位置从头开始,结束位置索引为2print(list[3:]) #省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3print(list[1:4]) #开始位置索引为1,结束位置索引为3,顾头不顾尾print(list[4:1]) #从左到右索引,因此为空值print(list[-1:-3]) #从左到右索引,因此为空值print(list[-3:-1]) #开始位置索引为倒数第三个,结束位置索引为倒数第二个print(list[1:5:2]) #开始位置索引为1,结束位置索引为4,间隔2print(list[5:1:-1]) #反向取值,开始位置索引为5,结束位置索引为2print(list[::-1]) #反向取值,反向输出列表 - 3.3.2 遍历列表 1234players = ['charles' , 'martina' , 'michael' , 'florence' , 'eli']print(\"Here are the first three players on my team:\")for player in players[:3]: print(player.title()) 输出结果如下: 1234Here are the first three players on my team:CharlesMartinaMichael - 3.3.3 复制列表 要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:]),这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表: 123456my_foods = ['pizza' , 'falafel' , 'carrot cake']friend_foods = my_foods[:]print(\"My favorite foods are:\")print(my_foods)print(\"\\nMy friend's favorite foods are:\")print(friend_foods) 输出结果如下: 12345My favorite foods are:['pizza', 'falafel', 'carrot cake']My friend's favorite foods are:['pizza', 'falafel', 'carrot cake'] 为核实我们的确有两个列表,下面在每个列表中都添加一种食品,并核实每个列表都记录了相应人员喜欢的食品:12345678910my_foods = ['pizza' , 'falafel' , 'carrot cake']friend_foods = my_foods[:]my_foods.append('cannoli')friend_foods.append('ice cream')print(\"My favorite foods are:\")print(my_foods)print(\"\\nMy friend's favorite foods are:\")print(friend_foods) 输出结果如下: 12345My favorite foods are:['pizza', 'falafel', 'carrot cake', 'cannoli']My friend's favorite foods are:['pizza', 'falafel', 'carrot cake', 'ice cream'] 输出结果表明,’cannoli’包含在我喜欢的食品列表中,而’ice cream’没有;’ice cream’包含在我朋友喜欢的食品中,而’cannoli’没有,假如我们只是简单的将my_foods赋给friend_foods,就不能得到两个列表。下面是错误示例: 12345678910my_foods = ['pizza' , 'falafel' , 'carrot cake']friend_foods = my_foods #错误写法my_foods.append('cannoli')friend_foods.append('ice cream')print(\"My favorite foods are:\")print(my_foods)print(\"\\nMy friend's favorite foods are:\")print(friend_foods) 错误示例输出结果如下: 12345My favorite foods are:['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']My friend's favorite foods are:['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream'] - 3.4 元组 Python将不能修改的值称为不可变的,而不可变的列表被称为元组 - 3.4.1 定义元组 元组看起来就像是列表,但元组使用圆括号而不是方括号来标识,定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样: 123dimensions = (200,50)print(dimensions[0])print(dimensions[1]) 输出结果如下: 1220050 如果尝试修改元组中元素的值,将会导致Python返回类型错误消息,由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值: 12dimensions = (200,50)dimensions[0] = 300 将会报错: 1234Traceback (most recent call last): File \"dimensions.py\", line 2, in <module> dimensions[0] = 300TypeError: 'tuple' object does not support item assignment - 3.4.2 遍历元组中所有的值 像列表一样,元组也可以使用for循环来遍历元组中的所有值: 例一:123dimensions = (200,100,50,6)for dimension in dimensions: print(dimension) 输出结果如下: 1234200100506 例二: 123dimensions = (200,100,50,6)for dimension in dimensions[:3]: print(dimension) 输出结果如下: 12320010050 - 3.4.3 修改元组变量 虽然不能修改元组元素,但是可以给储存元组的变量赋值: 123456789dimensions = (200,50)print(\"Original dimensions:\")for dimension in dimensions: print(dimension) dimensions = (400,100)print(\"\\nModified dimensions:\")for dimension in dimensions: print(dimension) 输出结果如下: 1234567Original dimensions:20050Modified dimensions:400100 我们首先定义了一个元组,并将其储存的尺寸打印了出来;然后将一个新元组储存到变量dimensions中,打印新的尺寸;相比于列表,元组是更简单的数据结构。如果需要储存的一组值在程序的整个生命周期内都不变,可使用元组","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"操作列表","slug":"操作列表","permalink":"http://yoursite.com/tags/操作列表/"}]},{"title":"Python3 自学笔记 C02","slug":"Python3 自学笔记C02","date":"2018-09-14T17:41:46.929Z","updated":"2018-09-15T17:09:42.760Z","comments":true,"path":"2018/09/15/Python3 自学笔记C02/","link":"","permalink":"http://yoursite.com/2018/09/15/Python3 自学笔记C02/","excerpt":"","text":"Python3 自学笔记第二章【列表】 - 2.1列表是什么 列表由一系列按特定顺序的元素组成,在 Python 中用方括号( [ ] )来表示列表,并用逗号来分隔其中的元素,例: 12345list1 = ['a','b','c','d','e','f']list2 = ['abc', 'xyz', 2018, 2020]list3 = [1, 2, 3, 4, 5 ,6]list4 = [\"a\", \"b\", \"c\", \"d\"]print(list1, list2, list3 ,list4) 输出结果如下: 1['a', 'b', 'c', 'd', 'e', 'f'] ['abc', 'xyz', 2018, 2020] [1, 2, 3, 4, 5, 6] ['a', 'b', 'c', 'd'] - 2.1.1访问列表元素 列表是有序集合,因此要访问列表的元素,只需要将该元素的位置或索引告诉Python即可,注意:在Python中的第一个列表元素的索引为0,而不是1 12345list = ['a','b','c','d','e','f']print(list[0])print(list[3])print(list[-1]) #Python为访问最后一个列表元素提供了一种特殊语法,通过将索引指定为-1,可以让Python返回最后一个列表元素print(list[-3]) 输出结果如下: 1234adfd - 2.1.2列表切片 1234567891011list = ['a','b','c','d','e','f']print(list[:]) #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表print(list[:3]) #省略起始位置的索引,默认起始位置从头开始,结束位置索引为2print(list[3:]) #省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3print(list[1:4]) #开始位置索引为1,结束位置索引为3,顾头不顾尾print(list[4:1]) #从左到右索引,因此为空值print(list[-1:-3]) #从左到右索引,因此为空值print(list[-3:-1]) #开始位置索引为倒数第三个,结束位置索引为倒数第二个print(list[1:5:2]) #开始位置索引为1,结束位置索引为4,间隔2print(list[5:1:-1]) #反向取值,开始位置索引为5,结束位置索引为2print(list[::-1]) #反向取值,反向输出列表 输出结果如下: 12345678910['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c']['d', 'e', 'f']['b', 'c', 'd'][][]['d', 'e']['b', 'd']['f', 'e', 'd', 'c']['f', 'e', 'd', 'c', 'b', 'a'] - 2.1.3使用列表中的各个值 可像使用其他变量一样使用列表中的各个值,例如,我们可以使用拼接根据列表中的值来创建消息: 123list = ['python', 'c', 'c++', 'java', 'php']message = \"My favorite language is \" + list[0].title() + \"!\"print(message) 输出结果如下: 1My favorite language is Python! - 2.1.4修改元素 修改列表元素的语法与访问列表元素的语法类似,要修改列表元素,可指定列表名和要修改的元素的索引,再次指定该元素的新值: 1234names = ['zhangsan', 'lishi', 'wanger', 'liming', 'xiaowang']print(names)names[1] = 'lifang'print(names) 输出结果如下: 12['zhangsan', 'lishi', 'wanger', 'liming', 'xiaowang']['zhangsan', 'lifang', 'wanger', 'liming', 'xiaowang'] - 2.1.5添加元素 - 使用方法 append() 在列表末尾添加元素 1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)list.append('g')print(list)输出结果如下:12['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c', 'd', 'e', 'f', 'g'] - 使用方法 insert() 在列表指定位置添加元素 1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)list.insert(2,\"h\") #其中括号里的数字表示要插入的位置,此后面的元素将右移一个位置print(list) 输出结果如下: 12['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'h', 'c', 'd', 'e', 'f', 'g'] - 2.1.6删除元素 - 使用 del 语句删除元素 1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)del list[3]print(list) 输出结果如下: 12list = ['a', 'b', 'c', 'd', 'e', 'f']list = ['a', 'b', 'c', 'e', 'f'] - 使用方法 pop() 删除最后一个元素方法 pop() 可以删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像是一个栈,而删除列表末尾的元素就相当于弹出栈顶元素:12345list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)new_list = list.pop()print(list)print(new_list)输出结果如下:123['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c', 'd', 'e']f - 使用方法 pop() 删除任意位置元素可以使用 pop() 来删除列表中任何位置的元素,只需要在括号中指定要删除的元素的索引即可:12345list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)new_list = list.pop(1)print(list)print(new_list)输出结果如下:123['a', 'b', 'c', 'd', 'e', 'f']['a', 'c', 'd', 'e', 'f']b - 使用方法 remove() 删除未知位置元素当我们不知道元素的位置,只知道元素的值的时候,就可以使用方法 remove()1234list = ['a', 'b', 'c', 'd', 'e', 'f']print(list)list.remove('d')print(list)输出结果如下:12['a', 'b', 'c', 'd', 'e', 'f']['a', 'b', 'c', 'e', 'f'] # - 2.1.7使用方法 index() 查找指定元素位置 12list = [\"a\", \"b\", \"c\", \"d\", \"e\", \"a\"]print(list.index('c')) 输出结果如下: 12 - 2.1.8使用方法 count() 统计指定元素数量 12list = [\"a\", \"b\", \"c\", \"d\", \"e\", \"a\"]print(list.count('a')) 输出结果如下: 12 - 2.1.9清空列表 123list = [\"a\", \"b\", \"c\", \"d\", \"e\", \"a\"]list.clear()print(list) 输出结果如下: 1[] - 2.2组织列表 在创建的列表中,元素的排列顺序常常是无法预测的,因为我们并非总能控制用户提供数据的顺序。有时候,我们希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列表的方式,可根据具体情况选用 - 2.2.1使用方法 sort() 对列表进行永久排序 使用方法 sort() 可以对列表按照特殊符号,数字,大写字母,小写字母顺序进行永久排序: 123cars = ['bmw', 'audi', 'toyota', 'subaru']cars.sort()print(cars) 输出结果如下: 1['audi', 'bmw', 'subaru', 'toyota'] 还可以按与字母顺序相反的顺序排列列表元素,只需要向 sort() 方法传递参数 reverse = True 就可以了: 123cars = ['bmw', 'audi', 'toyota', 'subaru']cars.sort(reverse = True)print(cars) 输出结果如下: 1['toyota', 'subaru', 'bmw', 'audi'] - 2.2.2使用函数 sorted() 对列表进行临时排序 要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序: 123456789cars = ['bmw', 'audi', 'toyota', 'subaru']print(\"Here is the original list:\")print(cars)print(\"\\nHere is the sorted list:\")print(sorted(cars))print(\"\\nHere is the sorted reverse list:\")print(sorted(cars, reverse=True))print(\"\\nHere is the original list again:\")print(cars) 输出结果如下: 1234567891011Here is the original list:['bmw', 'audi', 'toyota', 'subaru']Here is the sorted list:['audi', 'bmw', 'subaru', 'toyota']Here is the sorted reverse list:['toyota', 'subaru', 'bmw', 'audi']Here is the original list again:['bmw', 'audi', 'toyota', 'subaru'] - 2.2.3使用方法 reverse() 对列表进行反向排序 要反转列表元素的排列顺序,可使用方法 reverse() 123cars = ['bmw', 'audi', 'toyota', 'subaru']cars.reverse()print(cars) 输出结果如下: 1['subaru', 'toyota', 'audi', 'bmw'] - 2.2.4确定列表的长度 使用函数 len() 可以快速获悉列表的长度: 123>>>cars = ['bmw', 'audi', 'toyota', 'subaru']>>>len(cars)4 - 2.2.5合并列表 - 使用方法 extend() 合并列表 12345list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1.extend(list2) #将列表list2添加到list1当中去print(list1)print(list2) 输出结果如下: 12[1, 2, 3, 4, 'a', 'b', 'c', 'd']['a', 'b', 'c', 'd'] - 使用 “+” 号合并列表 1234list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']print(list1 + list2)print(list2 + list1) 输出结果如下: 12[1, 2, 3, 4, 'a', 'b', 'c', 'd']['a', 'b', 'c', 'd', 1, 2, 3, 4] - 使用切片合并列表 1234567891011121314list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1[len(list1) : len(list1)] = list2 #len(list1)代表要将list2插入list1中的位置print(list1)list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1[0 :0] = list2print(list1)list1 = [1, 2, 3, 4]list2 = ['a', 'b', 'c', 'd']list1[1:1] = list2print(list1) 输出结果如下: 123[1, 2, 3, 4, 'a', 'b', 'c', 'd']['a', 'b', 'c', 'd', 1, 2, 3, 4][1, 'a', 'b', 'c', 'd', 2, 3, 4]","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"列表","slug":"列表","permalink":"http://yoursite.com/tags/列表/"}]},{"title":"Python3 自学笔记 C01","slug":"Python3 自学笔记C01","date":"2018-09-10T15:55:00.947Z","updated":"2018-09-15T17:09:09.035Z","comments":true,"path":"2018/09/10/Python3 自学笔记C01/","link":"","permalink":"http://yoursite.com/2018/09/10/Python3 自学笔记C01/","excerpt":"","text":"Python3 自学笔记第一章【变量和简单数据类型】 - 1.1变量的命名和使用 变量名只能包含字母、数字和下划线。变量名可以字母或者下划线打头,但不能以数字开头,例如,可以将变量命名为message_1,但不能将其命名为1_message 变量名不能包含空格,但可使用下划线来分割其中的单词,例如,变量名greeting_message可行,但变量名greeting message会引发错误 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print 变量名应既简短又具有描述性,例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好 慎用小写字母l和大写字母O,因为它们可能被人看错成数字1和0 - 1.2字符串 字符串就是一系列字符,在Python中,用引号括起来的都是字符串,其中的引号可以是单引号也可以双引号: 12\"This is a string.\"'This is also a string.' 这种灵活性让我们能够在字符串中包含引号和撇号: 123'I told my friend,\"Python is my favorite language!\"'\"The language 'Python' is named er Monty Python,not the snake.\"\"One of Python's strengths is i diverse and supportive community.\" - 1.2.1使用方法修改字符串的大小写三种处理方法如下:123title() #将字符串每个单词的首字母都改为大写upper() #将字符串的每个字母都改为大写lower() #将字符串的每个字母都改为小写 例如:1234message = \"I love you!\"print(name.title())print(name.upper())print(name.lower()) 输出结果如下:123I Love You!I LOVE YOU!i love you! - 1.2.2合并(拼接)字符串Python使用加号(+)来合并字符串,举例说明: 12345first_name = \"I\"second_name = \"love\"third_name = \"python\"full_name = first_name + \" \" + second_name + \" \" + third_timeprint(full_name.title() + \"!\") 输出结果如下: 1I Love Python! - 1.2.3使用制表符或换行符来添加空白添加横向制表符: 12>>>print(\"\\tPython\") Python 添加换行符: 12345>>>print(\"C\\nC++\\nPython\\nJavaScript\")CC++PythonJavaScript 附表:Python转义符 - 1.2.4删除空白在Python中可用 lstrip()、rstrip()、strip() 分别删除字符串开头、结尾、全部的空白,举例说明: 123456789>>>message = ' python '>>>message' python '>>>message.lstrip()'python '>>>message.rstrip()' python'>>>message.strip()'python' 如果要永久删除字符串中的空白,必须将删除操作的结果存回到变量中: 1234>>>message = ' python '>>>message = message.strip()>>>message'python' - 1.3数字在编程中,经常使用数字来记录游戏得分、表示可视化数据、储存Web应用信息等。Python根据数字的用法以不同的方式处理它们 - 1.3.1整数在Python中,可对整数执行加(+)减(-)乘(*)除(/)乘方(**)运算,同时也支持运算次序: 12345678910111213141516>>>3 + 25>>>3 - 21>>>3 * 26>>>3 \\ 21.5>>>3 ** 29>>>3 ** 327>>>2 + 3 * 414>>>(2 + 3) * 420 - 1.3.2浮点数Python将带小数点的数字都称为浮点数: 1234>>>0.1 + 0.10.2>>>2 * 0.20.4 需要注意的是,结果包含的小数位可能是不确定的,就现在而言,暂时忽略多余的小数位即可: 1234>>>0.2 + 0.10.30000000000000004>>>3 * 0.10.30000000000000004 - 1.3.3使用函数 str() 避免错误错误例子: 123age = 23message = \"Happy \" + age + \"rd Birthday!\"print(message) 运行时会报错: 1234Traceback (most recent call last): File \"birthday.py\", line 2, in <module> message = \"Happy \" + age + \"rd Birthday!\"TypeError: must be str, not int 这是一个类型错误,意味着Python无法识别我们使用的信息。在这个例子中,Python发现我们使用了一个值为整数(int)的变量,但它不知道该如何解读这个值,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样的字符串中使用整数时,需要显式地指出我们希望Python将这个整数用作字符串。为此,可调用函数 str(),它让Python将非字符串值表示为字符串: 123age = 23message = \"Happy \" + str(age) + \"rd Birthday!\"print(message) 输出结果如下: 1Happy 23rd Birthday! - 1.4注释注释让我们能够使用自然语言在程序中添加说明,Python中注释有三种方法: 123456789print(\"Hello Python!\")#这是单行注释'''这是多行注释这是多行注释'''\"\"\"这也是多行注释这也是多行注释\"\"\"","categories":[{"name":"Python","slug":"Python","permalink":"http://yoursite.com/categories/Python/"}],"tags":[{"name":"数据类型","slug":"数据类型","permalink":"http://yoursite.com/tags/数据类型/"},{"name":"变量","slug":"变量","permalink":"http://yoursite.com/tags/变量/"}]},{"title":"VMware Pro 14 安装 Ubuntu 18.04 详细教程","slug":"VMware Pro 14 安装 Ubuntu 18.04 详细教程","date":"2018-09-09T13:14:29.532Z","updated":"2018-09-09T13:23:38.708Z","comments":true,"path":"2018/09/09/VMware Pro 14 安装 Ubuntu 18.04 详细教程/","link":"","permalink":"http://yoursite.com/2018/09/09/VMware Pro 14 安装 Ubuntu 18.04 详细教程/","excerpt":"","text":"1.下载安装 VMware Workstation Pro 14 进入 VMware 官网或者在软件商店下载最新版VMware虚拟机并安装 2.下载 Ubuntu 18.04 系统 进入 Ubuntu 官网,下载最新版 Ubuntu 系统镜像 3.在 VMware 中创建虚拟机打开安装好的 VMware Workstation Pro 14,选择创建新的虚拟机 在新建虚拟机向导中选择自定义(高级) 默认直接下一步,直到出现下图,再选择稍后安装操作系统 选择客户机操作系统为 Linux ,如果你电脑是32位就选择 Ubuntu 版本,64位就选择 Ubuntu 64 位版本 更改虚拟机名称及存放位置 为虚拟机指定处理器数量,默认即可 为虚拟机分配内存,太大了可能会导致卡顿,太小了也不好,推荐内存大小即可 以下均选择默认即可 选择创建新虚拟磁盘 选择将虚拟磁盘储存为单个文件 默认下一步 点击完成 此时我们就可以在虚拟机左侧“我的计算机”下面看到刚刚创建的虚拟机 Ubuntu 64 位,单击 Ubuntu 64 位,选择“编辑虚拟机设置”, 再选择“CD/DVD(SATA)”,选择“使用ISO映像文件”,点击“浏览”,找到先前我们下载好的 Ubuntu 64 位镜像文件,点击“确定” 4.在虚拟机上安装 Ubuntu 系统单击 Ubuntu 64 位,选择“开启此虚拟机” 来到欢迎界面,选择好语言,点击“安装 Ubuntu” 选择键盘布局为“汉语” 更新和其他软件默认选择即可 安装类型选择“清除整个磁盘并安装 Ubuntu”,PS: 因为我们是新安装的系统,且在虚拟机中,所以可以选择清除整个磁盘,这个操作不会清除你原来电脑里面的东西 地区随便,在中国就行,默认即可 之后设置计算机名,密码 点击继续稍等一会就安装完成啦 安装过程中可能会出现的一些问题 1.在虚拟机上安装 Ubuntu 系统的过程中卡死不动 解决方法:关闭网络,重新安装即可 2.Ubuntu 不能全屏显示解决方法:方法①:安装 open-vm-tools: 1sudo apt-get install open-vm-tools 然后执行: 1sudo apt-get install open-vm* 重启即可全屏显示 方法②:在终端输入xrandr,并回车,我们就可以看到很多可以修改的分辨率,选择好分辨率后,比如我们要修改分辨率为 1920x1440 ,则在终端输入 xrandr -s 1920x1440,回车即可,注意 1920x1440 中间是小写字母 x,本人亲测此方法并不是很完美,不能完全适应屏幕 方法③:安装 VMware Tools:1、进入 Ubuntu 系统后,点击虚拟机上的【虚拟机】—>【安装 VMware Tools】,回到桌面即可看到一个 VMware Tools 的 图标2、复制 VMwareTools-10.0.10-4301679.tar.gz(版本根据自己的实际情况而定)到 home 目录下, 用命令 tar -xzvf VMwareTools-10.0.10-4301679.tar.gz 进行解压3、解压后 cd vmware_tools_distrib,打开终端4、输入“sudo ./vmware-install.pl”,输入用户密码后开始安装5、接下来会有很多地方需要你按 Enter或者 Yes6、当你看到出现 —the vmware team 的字样后就可以关闭窗口了,此时窗口就会自动全屏了,如果没有全屏,重启过后就可以了7、若还没有全屏显示,则将虚拟机的【查看】—>【自动调整大小】—>【自适应客户机】,都选上,即可实现全屏","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"VMware","slug":"VMware","permalink":"http://yoursite.com/tags/VMware/"},{"name":"Ubuntu","slug":"Ubuntu","permalink":"http://yoursite.com/tags/Ubuntu/"}]},{"title":"主流 Markdown 编辑器推荐","slug":"主流 Markdown 编辑器推荐","date":"2018-08-29T15:02:46.857Z","updated":"2018-08-30T15:05:11.494Z","comments":true,"path":"2018/08/29/主流 Markdown 编辑器推荐/","link":"","permalink":"http://yoursite.com/2018/08/29/主流 Markdown 编辑器推荐/","excerpt":"","text":"Markdown ,2004年由 John Gruberis 设计和开发,是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,以下将介绍目前比较流行的一些 Markdown 编辑器(排名不分先后) - MarkdownPad 目前分为 MarkdownPad2 和 MarkdownPad Pro 版本,后者收费,我们使用前者足矣,用户可以通过键盘快捷键和工具栏按钮来使用或者移除 Markdown 各种语法格式,支持自定义配色方案、字体、大小和布局 、即时HTML预览、HTML和PDF导出,被很多人称赞为 Windows 平台最好用的 Markdown 编辑器,实用性强,仅支持 Windows 系统,个人觉得在 Windows 10 系统上界面并不是很好看,有时候添加音乐什么的,资源多了,实时预览会显示资源加载失败,点击此处访问 MarkdownPad 官网 - BookPad 无意间在 Microsoft Store 上发现的,完美搭配 Win10 系统,界面非常简洁漂亮,2017年9月份发布,大小30.82 MB,官方网站:https://sosfos.wordpress.com/ ,收费13人民币,可免费使用7天,各种功能应有尽有,和其他编辑器不相上下,本来想着百度百度看看有没有破解版,结果全网看不见 BookPad 的影子,估计是新出来的还不为人所知吧,可以直接在 Microsoft Store 搜索下载,或者点击链接获取:https://www.microsoft.com/store/apps/9N6P5ZH2SJSX - 小书匠 分为免费版和收费版,收费版¥20/年,其实免费版的功能已经足够强大了,多种编辑模式、多种主题选择、多种编辑器实现、丰富的语法支持、第三方同步、强大的文件管理功能,让人使用一次就爱上了它,支持 Windows 和 Web,推荐使用,点击此处访问小书匠官网 - Sublime Text 3Sublime Text 3 是基于 Vim 开发的跨平台代码编辑器,收费80美元,好像可以免费试用,支持 OS X、Windows、Ubuntu 等 UNIX 及 Linux 操作系统,由于其功能的多样性而广受好评,界面简约大方,定位专业,原生支持的编程语言就多达十几种,通过第三方插件,还能实现更多语法的支持,其中就包括 Markdown ,但也有个缺点,就是不能实时预览,但是用户可以通过 Markdown Preview 的插件实现对 Markdown 的预览,具体教程请点击此处查看,点击此处访问 Sublime Text 官网 - Mou Mou 是一款由国人独立开发者罗晨开发的实时预览型 Markdown 编辑器,仅支持 OS X操作系统,是目前同类应用中对汉字兼容性最好的作品,也是目前最好用的免费 Markdown 编辑器,提供语法高亮、在线预览、同步滚动、全屏模式,支持自定保存、自动匹配,允许自定义主题,支持 CSS,HTML 和 PDF 导出等功能,点击此处访问 Mou 官网 - AtomAtom 是 Github 专门为程序员推出的一个跨平台文本编辑器,具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言,当然也支持 Markdown ,支持宏,自动完成分屏功能,集成了文件管理器,点击此处访问 Atom 官网 - Smark国人编写的开源软件,Windows / Linux 等主流系统跨平台支持,完美支持 LaTex 数学公式、脚注、尾注等,支持使用本地 MathJax 调用,不需要在线访问 MathJax CDN,用户可配置的 Markdown 语法高亮显示,美观整洁,多种格式文件导出支持,简洁友好的界面布局,完备的各类快捷键,能极大地提高工作效率,点击此处访问 Smark 官网 - HaroopadHaroopad 覆盖三大主流桌面系统,支持 Windows、OS X 和 Linux,多种主题样式供你选择,语法标亮支持 54 种编程语言,该工具重点推荐 Ubuntu/Linux 用户使用,点击此处访问 Haroopad 官网 - TyporaTypora 同样支持 Windows、OS X 和 Linux,Typora 支持即时渲染技术,这也是与其他 Markdown 编辑器最显著的区别,支持数学编辑,可与 Word 直接格式转换,在 Pandoc 的支持下进行多种文档格式转换,Typora 适合那些对码字手速和排版顺畅度有要求的人群,譬如码农、网站小编等,点击此处访问 Typora 官网 - CuteMarkEdCuteMarkEd 是一个基于qt5的跨平台的 Markdown 编辑器,开源的, 提供实时 HTML 预览、数学表达式、源码高亮和PDF导出,点击此处 访问 CuteMarkEd 官网 - MarkPadMarkPad 是款开源的 Markdown 编辑器,与 Window 8 风格和谐友好的界面,可以直接在你的博客或者 GitHub 中打开、保存文档,直接将图片粘贴到 Markdown 文档中,点击此处访问 MarkPad 官网 - Cmd Markdown作业部落出品,是一款不错的工具和博客平台兼顾的产品,同时支持 Linux、Mac 和 Windows 操作系统,此外还提供 Web 在线创作,社交化批注、智能云同步,最简单的方法,满足多种写作需要,点击此处访问 Cmd Markdown 官网 - FarBox同样是一款不错的 Markdown 编辑器和博客平台兼顾的产品,让用户通过Dropbox(现在默认是自己的同步服务器)直接建立个人网站。FarBox编辑器免费,同时支持 Linux、Mac 和 Windows 操作系统,Farbox服务可以免费试用,在本地编辑器内写作自动同步发布在个人博客,对于希望有个人博客但却不愿折腾的小白来说,是个不错的选择,点击此处访问 FarBox 官网 - MiuMiu 是一款 Windows 下的 Markdown 编辑器,支持 Markdown 高亮、代码高亮、即时预览,以及可以快速发布到 Github Gist,小众软件,界面美观,已经找不到官网了,小众软件网有提供百度云下载,Miu 下载地址 - MacDownMacDown 引用了许多 Mou 的设计方式,仅支持 Mac ,开源免费,点击此处访问 MacDown 官网 - Ulysses一款由国外开发商 The Soulmen 制作的 Markdown 编辑器。与其它同类应用相比,Ulysses 最大的不同在于,它能根据内置的文件管理器,以及与 iCloud 云服务器的实时同步方案,达到最快捷的文章整理效率,支持OS X , iPad,26人民币每月,14天免费试用,点击此处访问 Ulysses 官网 - Byword一款轻量级的 Markdown 编辑器,支持Mac,iPhone和iPad,界面极简,功能强大,貌似要付费使用,点击此处 访问 Byword 官网 - Visual Studio CodeVisual Studio Code 是微软推出一款轻量级的文本编辑工具,类似于 Sublime,它已经默认集成 Markdown 文档编辑插件,原生就支持高亮 Markdown 的语法,但想要实时预览还需要选择 Markdown: Open Preview to the Side 命令实现,相关教程请点击此处,点击此处 访问 Visual Studio Code 官网 - MarxicoMarxico 中文名马克飞象,提供桌面客户端以及离线 Chrome App,支持移动端 Web,可以直接把文本存到印象笔记,点击此处访问 Marxico,点击此处访问 马克飞象 - MaHua一个在线编辑 Markdown 文档的编辑器,小众软件,VIM 快捷键支持,完美兼容 Github 的 Markdown 语法,界面稍许简陋,点击此处访问 MaHua - Dillinger来自国外的 Markdown 编辑器,漂亮强大,支持md、 html、pdf 文件导出,支持Dropbox、Github、Google Drive、Onedrive 一键保存,点击此处访问 Dillinger - 简书简书是一个优质的创作社区,你可以在线创作并发表到社区,是国内优质原创内容输出平台,简书从一开始就已经支持 Markdown 和富文本编辑,是一个为专门为作者打造的平台,点击此处访问简书官网 要细数 Markdown 编辑器的话,可能永远也数不尽,但最有质量的也就那么几个,而且每个人的看法也不同,正所谓萝卜白菜各有所爱,什么编辑器不是最重要的,重要的是我们能写出优质的文章,不断学习进步!不断提升自我! 参考资料:《好用的Markdown编辑器一览》(By:月光)《10款流行的Markdown编辑器,总有一款适合你》(By:xiaoxiao_engineer)《解决作者们的焦虑:7 款优秀 Markdown 编辑工具推荐》(By:JailJT)","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"Markdown","slug":"Markdown","permalink":"http://yoursite.com/tags/Markdown/"},{"name":"编辑器","slug":"编辑器","permalink":"http://yoursite.com/tags/编辑器/"}]},{"title":"Hexo 博客主题个性化","slug":"Hexo 博客主题个性化","date":"2018-08-27T13:25:24.452Z","updated":"2018-10-19T15:23:49.943Z","comments":true,"path":"2018/08/27/Hexo 博客主题个性化/","link":"","permalink":"http://yoursite.com/2018/08/27/Hexo 博客主题个性化/","excerpt":"","text":"本文将讲述一些博客主题的美化、实用功能的添加,不同主题可能方法有些不同(本文以作者 luuman 的 spfk 主题为例) – 添加评论系统 主流的评论系统有很多,比如:网易云跟帖、多说、友言、畅言、来必力(LiveRe)、Disqus、Valine、Gitment等等,目前网易云跟帖、多说、友言都已经关闭了,还有些可能需要翻墙,比较麻烦,百度了一下,最后还是选择了来必力评论系统 进入来必力官网,注册一个账号(注册时可能需要翻墙) 注册完毕之后,登录,进入安装页面,选择 City 免费版安装,安装之后你会得到一段代码 我们打开主题文件下的 _config.yml 文件,添加如下代码: 在 \\themes\\hexo-theme-spfk\\layout\\_partial\\comments 文件夹下新建一个 livere.ejs 的文件,在里面填写来必力提供的代码: 123456789101112131415161718<!-- 来必力City版安装代码 --><div id=\"lv-container\" data-id=\"city\" data-uid=\"这里是你的uid\"> <script type=\"text/javascript\"> (function(d, s) { var j, e = d.getElementsByTagName(s)[0]; if (typeof LivereTower === 'function') { return; } j = d.createElement(s); j.src = 'https://cdn-city.livere.com/js/embed.dist.js'; j.async = true; e.parentNode.insertBefore(j, e); })(document, 'script'); </script> <noscript>为正常使用来必力评论功能请激活JavaScript</noscript></div><!-- City版安装代码已完成 --> 打开 \\themes\\hexo-theme-spfk\\layout\\_partial\\article.ejs 文件,在适当位置添加如下红框中的代码: 完成以上操作之后,我们就可以使用来必力评论系统了 – 添加卡通人物 我在逛别人博客的时候偶然发现右下角居然有一个萌萌的卡通人物,还能根据你鼠标位置摇头,瞬间被吸引到了,赶紧也给自己博客添加一个吧!点击此处进入该项目地址 输入如下命令获取 live2d : 1$ npm install --save hexo-helper-live2d 输入以下命令,下载相应的模型,将 packagename 更换成模型名称即可,更多模型选择请点击此处,各个模型的预览请访问原作者的博客 1$ npm install packagename 打开站点目录下的 _config.yml 文件,添加如下代码: 1234567891011live2d: enable: true scriptFrom: local model: use: live2d-widget-model-haruto #模型选择 display: position: right #模型位置 width: 150 #模型宽度 height: 300 #模型高度 mobile: show: false #是否在手机端显示 设置好过后我们就拥有了一个卡通人物 – 添加鼠标点击爱心效果 在 /themes/hexo-theme-spfk/source/js 下新建文件 love.js,在 love.js 文件中添加以下代码: 1!function(e,t,a){function n(){c(\".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 500%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}\"),o(),r()}function r(){for(var e=0;e<d.length;e++)d[e].alpha<=0?(t.body.removeChild(d[e].el),d.splice(e,1)):(d[e].y--,d[e].scale+=.004,d[e].alpha-=.013,d[e].el.style.cssText=\"left:\"+d[e].x+\"px;top:\"+d[e].y+\"px;opacity:\"+d[e].alpha+\";transform:scale(\"+d[e].scale+\",\"+d[e].scale+\") rotate(45deg);background:\"+d[e].color+\";z-index:99999\");requestAnimationFrame(r)}function o(){var t=\"function\"==typeof e.onclick&&e.onclick;e.onclick=function(e){t&&t(),i(e)}}function i(e){var a=t.createElement(\"div\");a.className=\"heart\",d.push({el:a,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:s()}),t.body.appendChild(a)}function c(e){var a=t.createElement(\"style\");a.type=\"text/css\";try{a.appendChild(t.createTextNode(e))}catch(t){a.styleSheet.cssText=e}t.getElementsByTagName(\"head\")[0].appendChild(a)}function s(){return\"rgb(\"+~~(255*Math.random())+\",\"+~~(255*Math.random())+\",\"+~~(255*Math.random())+\")\"}var d=[];e.requestAnimationFrame=function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)}}(),n()}(window,document); 在 \\themes\\hexo-theme-spfk-x\\layout\\layout.ejs 文件末尾添加以下代码: 12<!-- 页面点击小红心 --><script type=\"text/javascript\" src=\"/js/love.js\"></script> 完成以上操作后,当我们点击鼠标的时候就可以看见爱心的特效了 – 添加字数统计和阅读时长 先在博客目录下执行以下命令安装 hexo-wordcount 插件: 1$ npm i --save hexo-wordcount 之后在 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\post 目录下创建 word.ejs 文件,在 word.ejs 文件中写入以下代码: 123456789101112131415161718<div style=\"margin-top:10px;\"> <span class=\"post-time\"> <span class=\"post-meta-item-icon\"> <i class=\"fa fa-keyboard-o\"></i> <span class=\"post-meta-item-text\"> 字数统计: </span> <span class=\"post-count\"><%= wordcount(post.content) %>字</span> </span> </span> <span class=\"post-time\"> &nbsp; | &nbsp; <span class=\"post-meta-item-icon\"> <i class=\"fa fa-hourglass-half\"></i> <span class=\"post-meta-item-text\"> 阅读时长: </span> <span class=\"post-count\"><%= min2read(post.content) %>分</span> </span> </span></div> 然后在 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\article.ejs 中适当位置添加以下代码: 最后在主题目录下的 _config.yml 添加以下配置 1word_count: true 如果显示的位置不好,可以自行更改其位置,成功配置后的效果如下: – 添加背景音乐 打开网页版网易云音乐,选择你准备添加的背景音乐,点击生成外链播放器,前提是要有版权,不然是无法生成外链播放器的,复制底下的HTML代码 然后将此代码放到你想要放的地方,比如放在博客的左侧,则打开 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\left-col.ejs 文件,将复制的HTML代码粘贴进去,再进行适当的位置设置让播放器更美观,其中 auto=1 表示打开网页自动播放音乐,auto=0 表示关闭自动播放音乐 最后效果如下: – 添加网站运行时间 一个比较好的小功能,可以看见自己的博客运行多久了,时间一天天的增加,成就感也会一天天增加的在 \\themes\\hexo-theme-spfk-x\\layout\\_partial\\footer.ejs 文件下添加以下代码: 1234567891011121314151617<span id=\"timeDate\">载入天数...</span><span id=\"times\">载入时分秒...</span><script> var now = new Date(); function createtime() { var grt= new Date(\"08/10/2018 17:38:00\");//在此处修改你的建站时间 now.setTime(now.getTime()+250); days = (now - grt ) / 1000 / 60 / 60 / 24; dnum = Math.floor(days); hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum); hnum = Math.floor(hours); if(String(hnum).length ==1 ){hnum = \"0\" + hnum;} minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum); mnum = Math.floor(minutes); if(String(mnum).length ==1 ){mnum = \"0\" + mnum;} seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum); snum = Math.round(seconds); if(String(snum).length ==1 ){snum = \"0\" + snum;} document.getElementById(\"timeDate\").innerHTML = \"本站已安全运行 \"+dnum+\" 天 \"; document.getElementById(\"times\").innerHTML = hnum + \" 小时 \" + mnum + \" 分 \" + snum + \" 秒\"; } setInterval(\"createtime()\",250);</script> 最后效果如下: – 添加百度统计 百度统计是百度推出的一款免费的专业网站流量分析工具,能够告诉用户访客是如何找到并浏览用户的网站,在网站上做了些什么,非常有趣,接下来我们把百度统计添加到自己博客当中 访问百度统计首页,注册一个账号后登陆,添加你的博客网站 接着点击代码获取,复制该代码 然后到目录 \\Hexo\\themes\\hexo-theme-spfk\\layout\\_partial 下新建一个 baidu-analytics.ejs 文件,里面粘贴你刚刚复制的代码 修改主题文件夹下的 _config.yml 文件,将你的key(图中涂掉部分)填写进去: 所有操作完成后可以在百度统计管理页面检查代码是否安装成功,如果代码安装正确,一般20分钟后,可以查看网站分析数据 – 浏览器网页标题恶搞 当用户访问你的博客时点击到了其他网页,我们可以恶搞一下网页标题,呼唤用户回来,首先在目录 \\Hexo\\themes\\hexo-theme-spfk\\source\\js 下新建一个 FunnyTitle.js 文件,在里面填写如下代码: 1234567891011121314151617<!--浏览器搞笑标题--> var OriginTitle = document.title; var titleTime; document.addEventListener('visibilitychange', function () { if (document.hidden) { $('[rel=\"icon\"]').attr('href', \"/img/trhx2.png\"); document.title = 'ヽ(●-`Д´-)ノ你丑你就走!'; clearTimeout(titleTime); } else { $('[rel=\"icon\"]').attr('href', \"/img/trhx2.png\"); document.title = 'ヾ(Ő∀Ő3)ノ你帅就回来!' + OriginTitle; titleTime = setTimeout(function () { document.title = OriginTitle; }, 2000); } }); 然后在 \\Hexo\\themes\\hexo-theme-spfk-x\\layout\\layout.ejs 文件中添加如下代码: 12<!--浏览器搞笑标题--><script type=\"text/javascript\" src=\"\\js\\FunnyTitle.js\"></script> 再次部署博客后就可以看见标题搞笑的效果了: # 未完待续…… #","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"主题个性化","slug":"主题个性化","permalink":"http://yoursite.com/tags/主题个性化/"},{"name":"Hexo","slug":"Hexo","permalink":"http://yoursite.com/tags/Hexo/"}]},{"title":"Markdown 语法&技巧总结","slug":"Markdown 语法&技巧总结","date":"2018-08-25T09:57:16.879Z","updated":"2018-10-19T14:44:25.481Z","comments":true,"path":"2018/08/25/Markdown 语法&技巧总结/","link":"","permalink":"http://yoursite.com/2018/08/25/Markdown 语法&技巧总结/","excerpt":"","text":"在写博客的时候,我们不希望都是千篇一律的没有色彩,多了解一些 Markdown 语法技巧有利于丰富我们的博客,看起来更有 feel ! – 插入图片 如果你使用 MarkdownPad 的话就比较方便,可以直接选择插入本地图片或者是网络图片,实质是通过以下代码实现的,小括号里面就是你的图片地址,中括号里面是图片的替代文字,比如上面的图片代码如下: 1![车](https://i.imgur.com/UyEXrBi.jpg) – 插入音乐 打开网页版网易云音乐,选择你准备插入的音乐,点击生成外链播放器,前提是要有版权,不然是无法生成外链播放器的,复制底下的HTML代码 然后将此HTML代码粘贴到你想要放的地方,可自行调节播放器的大小,其中 auto=1 表示打开网页自动播放音乐,auto=0 表示关闭自动播放音乐,比如See You Again (中英文版) - 罗艺恒这首歌曲代码如下: 1<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=330 height=86 src=\"//music.163.com/outchain/player?type=2&id=32405683&auto=1&height=66\"></iframe> – 插入视频 高考毕业了我们为下一届的学弟学妹们录制高考加油视频,我担任后期制作,在这里就以该视频为例٩(๑❛ᴗ❛๑)۶,在腾讯视频播放页面找到分享按钮,复制该视频的通用代码(其他视频播放平台也一样),粘贴到文章中对应位置即可,可根据情况调整视频播放器的大小 1<iframe frameborder=\"0\" width=\"1040\" height=\"700\" src=\"https://v.qq.com/txp/iframe/player.html?vid=x0643zvgtf7\" allowFullScreen=\"true\"></iframe> # 未完待续…… #","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"Markdown","slug":"Markdown","permalink":"http://yoursite.com/tags/Markdown/"},{"name":"技巧","slug":"技巧","permalink":"http://yoursite.com/tags/技巧/"}]},{"title":"如何使用 Github Pages 和 Hexo 搭建自己的独立博客","slug":"如何使用Github Pages和Hexo搭建自己独立博客","date":"2018-08-15T13:34:58.325Z","updated":"2018-08-29T15:17:51.644Z","comments":true,"path":"2018/08/15/如何使用Github Pages和Hexo搭建自己独立博客/","link":"","permalink":"http://yoursite.com/2018/08/15/如何使用Github Pages和Hexo搭建自己独立博客/","excerpt":"","text":"– 前言首先感谢您能访问我的博客:TRHX’Blog 这是一篇有关如何使用 Github Pages 和 Hexo 搭建属于自己独立博客的详尽教程,本人是软件工程专业本科生,目前只学习了C和C++编程语言,对网站开发的有关知识几乎为零,这也是我搭建好自己的博客之后写的第一篇博客,刚开始搭建博客的时候自己也是网上各种百度,由于自己属于小白那种,历经了千辛万苦才弄好,所以借这个机会写一篇小白真正能看懂的博客搭建教程,教你一步一步走向成功的彼岸! 推荐文章: 《我为什么写博客》 (By 知明所以) 《为什么你应该(从现在开始就)写博客》 (By 刘未鹏 | Mind Hacks) – 入门 Github Pages Github Pages可以被认为是用户编写的、托管在github上的静态网页。使用Github Pages可以为你提供一个免费的服务器,免去了自己搭建服务器和写数据库的麻烦。此外还可以绑定自己的域名。 Hexo Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 – 安装 Node.js点击此处访问官网,按需下载相应版本,默认安装可以了 注:本人在安装过程中出现了Warning 1909,无法创建快捷方式,这种情况很少出现,如果在安装过程中也有这种情况请参考百度文库(win10系统实测可行):《Win7安装程序警告1909无法创建快捷方式》 – 安装 Git点击此处访问官网,按需下载相应版本,默认安装即可 参考资料:《如何在windows下安装GIT》 (By 俊雨廷休) 《Pro Git(中文版)》 – 检验软件是否安装成功同时按下 Win 键和 R 键打开运行窗口,输入 cmd ,然后输入以下命令,有相应版本信息显示则安装成功,若不正确可以卸载软件重新安装,此外若安装成功,在桌面右键鼠标,可以看到菜单里多了 Git GUI Here 和 Git Bash Here两个选项,第一个是图形界面的Git操作,另一个是命令行 $ git --version $ node -v $ npm -v – Hexo 安装选择一个磁盘,新建一个文件夹,自己重命名文件夹(如:我的文件夹为:E\\TRHX_Blog),博客相关文件将储存在此文件夹下,在该文件夹下右键鼠标,点击 Git Bash Here,输入以下 npm 命令即可安装,第一个命令表示安装 hexo,第二个命令表示安装 hexo 部署到 git page 的 deployer,如图所示即为安装成功 $ npm install hexo-cli -g $ npm install hexo-deployer-git --save – Hexo 初始化配置在刚才新建的文件夹里面再次新建一个 Hexo 文件夹(如:我的文件夹为:E\\TRHX_Blog\\Hexo),进入该 Hexo 文件夹右键鼠标,点击 Git Bash Here,输入以下命令,如图所示则安装成功 $ hexo init Hexo 安装完成后,将会在指定文件夹中新建所需要的文件,Hexo 文件夹下的目录如下: – 本地查看效果执行以下命令,执行完即可登录 http://localhost:4000/ 查看效果 $ hexo generate $ hexo server 显示以下信息说明操作成功: INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop. 登录 http://localhost:4000/ 查看效果: – 将博客部署到 Github Pages 上到目前为止,我们的本地博客就成功搭建了,但是现在我们只能通过本地连接查看博客,我们要做的是让其他人也能够访问我们的博客,这就需要我们将博客部署到Github Pages上 一、注册 Github 账户:点击此处访问 Github 官网,点击 Sign Up 注册账户 二、创建项目代码库:点击 New repository 开始创建,步骤及注意事项见图: 三、配置 SSH 密钥:只有配置好 SSH 密钥后,我们才可以通过 git 操作实现本地代码库与 Github 代码库同步,在你第一次新建的文件夹里面(如:我的文件夹为:E\\TRHX_Blog) Git Bash Here 输入以下命令: $ ssh-keygen -t rsa -C "your email@example.com" //引号里面填写你的邮箱地址,比如我的是tanrenhou@126.com 之后会出现: Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): //到这里可以直接回车将密钥按默认文件进行存储 然后会出现: Enter passphrase (empty for no passphrase): //这里是要你输入密码,其实不需要输什么密码,直接回车就行 Enter same passphrase again: 接下来屏幕会显示: Your identification has been saved in /c/Users/you/.ssh/id_rsa. Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub. The key fingerprint is: 这里是各种字母数字组成的字符串,结尾是你的邮箱 The key's randomart image is: 这里也是各种字母数字符号组成的字符串 运行以下命令,将公钥的内容复制到系统粘贴板上 $ clip < ~/.ssh/id_rsa.pub 四、在 GitHub 账户中添加你的公钥 1.登陆 GitHub,进入 Settings: 2.点击 SSH and GPG Keys: 3.选择 New SSH key: 4.粘贴密钥: 五、测试 输入以下命令:注意:git@github.com不要做任何更改! $ ssh -T git@github.com 之后会显示: 输入 yes 后会显示: 此时表示设置正确 六、配置 Git 个人信息 Git 会根据用户的名字和邮箱来记录提交,GitHub 也是用这些信息来做权限的处理,输入以下命令进行个人信息的设置,把名称和邮箱替换成你自己的,名字可以不是 GitHub 的昵称,但为了方便记忆,建议与 GitHub 一致 $ git config --global user.name "此处填你的用户名" $ git config --global user.email "此处填你的邮箱" 到此为止 SSH Key 配置成功,本机已成功连接到 Github – 将本地的 Hexo 文件更新到 Github 的库中一、登录 Github 打开自己的项目 your name.github.io 二、鼠标移到 Clone or download 按钮,选择 Use SSH 三、一键复制地址 四、打开你创建的 Hexo 文件夹(如:E:\\TRHX_Blog\\Hexo),右键用记事本(或者Notepad++)打开该文件夹下的 _config.yml 文件 五、按下图修改 _config.yml 文件并保存 六、在 Hexo 文件夹下分别执行以下命令 $ hexo g $ hexo d 或者直接执行 $ hexo g -d 执行完之后会让你输入你的 Github 的账号和密码,如果此时报以下错误,说明你的 deployer 没有安装成功 ERROR Deployer not found: git 需要执行以下命令再安装一次: npm install hexo-deployer-git --save 再执行 hexo g -d,你的博客就会部署到 Github 上了 七、访问博客 你的博客地址:https://你的用户名.github.io,比如我的是:https://trhx.github.io ,现在每个人都可以通过此链接访问你的博客了 – 如何在博客上发表文章博客已经成功搭建了,但是我们该怎么写博客呢? 一、新建一个空文章,输入以下命令,会在项目 \\Hexo\\source\\_posts 中生成 文章标题.md 文件,文章标题根据需要命名 $ hexo n "文章标题" 也可以直接在 \\Hexo\\source\\_posts 目录下右键鼠标新建文本文档,改后缀为 .md 即可,这种方法比较方便 二、用编辑器编写文章 md 全称 Markdown, Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用,常用的标记符号屈指可数,几分钟即可学会, .md 文件可以使用支持 Markdown 语法的编辑器编辑,然后保存文件到 \\Hexo\\source\\_posts 文件夹下即可推荐 Windows 上使用 MarkdownPad2 编辑器,macOS 上使用 Mou 编辑器,Linux 上使用 Remarkable编辑器,Web 端上使用简书 当我们用编辑器写好文章后,可以使用以下命令将其推送到服务器上 $ hexo g $ hexo d 或者将两个命令合二为一输入以下命令: $ hexo d -g 现在访问你的博客就可以看见写好的文章啦! 参考资料:《10款流行的Markdown编辑器》 (By xiaoxiao_engineer) 《献给写作者的 Markdown 新手指南》 (By 简书) 《认识与入门 Markdown》 (By Te_Lee) 《markdown简明语法》 (By 不如) 《markdown基本语法》 (By 高鸿祥) 《Markdown 公式指导手册》 (By Harries) – 如何为博客更换自己喜欢的主题博客也搭建好了,文章也会写了,但是!!!默认的主题并不喜欢怎么办?现在,我们就来为自己的博客更换自己喜欢的主题 点击此处进入 Hexo 官网的主题专栏,我们可以看见有许多的主题供我们选择 我们要做的就是把主题克隆过来,在此我们以主题 Aero-Dual 为例,点进去我们就可以看见该主题作者的博客,鼠标滑到底,我们可以看见 Theme By Levblanc 的字样(其他主题类似),点击作者 Levblanc ,页面就会跳转到该主题所有的相关文件在 Github 上的地址,复制该地址 再打开 Hexo 文件夹下的 themes 目录(如:E:\\TRHX_Blog\\Hexo\\themes),右键 Git Bash Here,输入以下命令: $ git clone 此处填写你刚才复制的主题地址 比如要安装 Aero-Dual 主题,则输入命令: $ git clone https://github.com/levblanc/hexo-theme-aero-dual 等待下载完成后即可在 themes 目录下生成 hexo-theme-aero-dual 文件夹,然后打开 Hexo 文件夹下的配置文件 _config.yml ,找到关键字 theme,修改参数为:theme:hexo-theme-aero-dual (其他主题修改成相应名称即可),再次注意冒号后面有一个空格! 返回 Hexo 目录,右键 Git Bash Here ,输入以下命令开始部署主题: $ hexo g $ hexo s 此时打开浏览器,访问 http://localhost:4000/ 就可看见我们的主题已经更换了,如果感觉效果满意,我们就可以把它部署到Github上了 打开 Hexo 文件夹,右键 Git Bash Here ,输入以下命令: $ hexo clean //该命令的作用是清除缓存,若不输入此命令,服务器有可能更新不了主题 $ hexo g -d 此时访问自己的博客即可看见更换后的主题,但我们仍然需要对主题的相关配置进行修改,比如网站标题,图标等等,Hexo 中有两份主要的配置文件,名称都是 _config.yml ,它们均是用于站点配置使用的。其中,一份位于站点根目录下(比如我的:E:\\TRHX_Blog\\Hexo\\_config.yml),主要包含 Hexo 本身整站的配置;另一份位于主题目录下(比如我的:E:\\TRHX_Blog\\Hexo\\themes\\hexo-theme-aero-dual\\_config.yml),这份配置由主题作者提供,主要用于配置主题相关的选项,一般 _config.yml 文件里都有相关注释,按需修改即可 参考资料:《有哪些好看的 Hexo 主题?》 (知乎) 《Hexo | 配置》 (Hexo官方文档) 《hexo常用命令笔记》 (By 小弟调调) – 为你的 Hexo 博客配置个性域名本人在配置域名的时候问题百出,百度的各种方法都不管用,打开网站总是 404,可能是我太笨了 o(╥﹏╥)o ,不过好在后来终于解决了这个问题 首先我们要购买域名,阿里云,腾讯云都可以,也不贵,一年几十块钱,最便宜几块钱也能买到,以阿里云为例,我购买的域名是 trhx.top,购买过程就不赘述了,选择阿里云的解析平台,来到阿里云的管理控制台,点击进入域名解析列表或者直接点击域名后面的解析 点击添加记录,需要添加两个记录,两个记录类型都是 CNAME ,记录值都是填你自己的博客地址(比如我的是:trhx.github.io),第一个主机记录为 @ ,第二个主机记录为 www ,保存之后域名解析就完成了! 【注:百度大多数方法是这样的:两个记录类型为 A ,记录值都为博客的 IP 地址,IP 地址可以 cmd 中输入 ping 你的博客地址 获得(比如我的:ping trhx.github.io),但我尝试这种方法并没有成功,目前也不知道具体原因,强调一下,我还是这方面小白!小白!小白!所以不太懂,欢迎大佬来指点!】 为了使 GitHub 接收我们的域名,还需要在博客的根目录下添加一个名为 CNAME 的文件(注意不要加.txt,没有任何后缀名!),这个文件放到 Hexo 文件夹的 source 里面,(比如我的是:E:\\TRHX_Blog\\Hexo\\source),文件里面填写你的域名(去掉www),比如要填写我的域名,文件里面就放一句话:trhx.top,经过以上操作,别人就可以通过 www.trhx.top 、trhx.top 、trhx.github.io 三个当中任意一个访问我的博客了!你的也一样! 如果你在其他平台购买域名,或者选择 DNSPod 等其他域名解析,操作方法大同小异,遇到问题可自行百度解决! 参考资料:《推荐几家域名注册服务商》 (By Jelly Bool) 《盘点十大免费DNS域名解析服务:稳定、可靠》 – 结语一顿操作下来虽然有点儿累,但看见拥有了自己的博客还是非常有成就感的,人生就是需要折腾,那么现在就开始你的创作之旅吧!文章的不断积累,你会从中受益很多的!另外,这是一篇小白写的适用于小白的博客搭建教程,比较详细,有这方面基础的可以百度有简略一点儿的教程,文中如有错误还请大佬指出改正!文中涉及参考资料如有侵权请联系我删除!","categories":[{"name":"实用教程","slug":"实用教程","permalink":"http://yoursite.com/categories/实用教程/"}],"tags":[{"name":"Hexo","slug":"Hexo","permalink":"http://yoursite.com/tags/Hexo/"},{"name":"Github Pages","slug":"Github-Pages","permalink":"http://yoursite.com/tags/Github-Pages/"}]},{"title":"Hello World!","slug":"Hello World","date":"2018-08-10T09:38:00.000Z","updated":"2018-10-27T11:20:27.019Z","comments":true,"path":"2018/08/10/Hello World/","link":"","permalink":"http://yoursite.com/2018/08/10/Hello World/","excerpt":"","text":"人类的幸福和欢乐在于奋斗,而最有价值的是为理想而奋斗! ——— 苏格拉底Human happiness and joy lie in struggle, and what is most valuable is striving for ideals! ——— Socrates","categories":[{"name":"Hello World","slug":"Hello-World","permalink":"http://yoursite.com/categories/Hello-World/"}],"tags":[{"name":"Life","slug":"Life","permalink":"http://yoursite.com/tags/Life/"},{"name":"Dream","slug":"Dream","permalink":"http://yoursite.com/tags/Dream/"}]}]} \ No newline at end of file diff --git a/index.html b/index.html index 680d3553c8bf788fb5addfbe49d50fe0b7ff65d7..ce5e858c86eec90237d6553d384f88ec8bb6e876 100644 --- a/index.html +++ b/index.html @@ -146,7 +146,7 @@
@@ -227,6 +227,76 @@
+ + + + + + + + + + +