分类 编程语言 下的文章

对于需要基础运行环境的普通用户当然是很方便了,但是对于开发人员可不见得方便,商店安装的python容易因为路径产生一些不必要的麻烦,比如你使用pip安装了pyinstaller,但是在Windows Terminal执行pyinstaller 你会得到报错提示没有这个命令。手动进入pyinstaller安装目录,你会发现pyinstaller.exe不在python目录里,通常这时候只需要移动这个可执行文件到python目录即可,当然你也可能遇到别的问题。

我认为最保险的做法

为了避免以后安装其他第三方软件包再出类似或者其他问题,我直接卸载了商店版python,然后去华为开源镜像站下载了相同版本(其实官网下载的也可以一键安装,至少3.9.10是这样的)。我没有重启计算机,直接勾上添加到PATH然后一键安装。

重新安装官网版后

问题解决了,pip安装pyinstaller后可以直接执行pyinstaller命令。

运算符描述实例
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

列举部分占位符

%d整数的占位符
%f小数的占位符
%%表示百分号(因为百分号代表了占位符,所以带占位符的字符串中要表示百分号必须写成%%)

一、 使用占位符%格式化

按序罗列式 适用于python2.6前,沿用至今 延用了C语言的输出格式
a=1.1
b=2
print("有两个数,分别是浮点数a= %f 和整数b= %d" %(a,b))

这种写法,必须在后方按照顺序罗列准备用于替换占位符的变量名称,能不能在前面直接指定用于替换的变量名称呢?

二、 使用format格式化

官方推荐 python2.6新增,沿用至今
格式:str.format
a=1.1
b=2
print("有两个数,分别是浮点数a= {}和整数b= {}".format(a,b)) 
# {key}称为索引,索引为空{}时,按照顺序从后方取值,可以使用01234这样的顺序的数字作为索引进行排序。
print("有两个数,分别是浮点数a= {0}和整数b= {1}".format(a,b))
# 也可以直接使用一个特定名称作为索引。
print("有两个数,分别是浮点数a= {num_a}和整数b= {num_b}".format(num_a=a,num_b=b))
# 你也可以把变量a,b替换为一个单引号包括的字符串,如:'1.1'

以上三个print语句都输出:有两个数,分别是浮点数a= 1.1和整数b= 2

三、 f-string格式化

直接指定式 适用于Python >= 3.6
f-string是在字符串前面加上 "f",{}直接使用变量、表达式等。
a=1.1
b=2
print(f"有两个数,分别是浮点数a= {a:.1f}和整数b= {b:d}")
# 为啥加个.1而不是直接写{a:f} ?f前面的.1指的是保留小数点后一位小数,不写.1输出的就是:1.100000

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

我在Linux.cn的一篇文章里找到了这个游戏,试玩了一下略微简陋,但是总的来说感觉还不错。
官网:http://www.minetest.net/ 官方Wiki:https://wiki.minetest.net/Getting_Started/zh-hans
有个小插曲,中文文档里对GNU/Linux安装是这么描述的:sudo apt get install minetest,显然少了个"-",我就跑去IRC里提Bug了,现在已经改为:sudo apt install minetest,这是我今年正经捉的第一个小虫子,也是第一次主动成功使用IRC和别人用英语交流。

兑现承诺:和朋友分享这个游戏

sendpix0.jpg
截图_2021-12-19_03-33-35.png

- 阅读剩余部分 -

正常情况下因为默认数据库utf-8编码无法支持emoji,保存含emoji内容会出现500 Database Query Error.

进入SQL数据库

alter table typecho_contents convert to character set utf8mb4;
alter table typecho_comments convert to character set utf8mb4;
alter table typecho_users convert to character set utf8mb4;
alter table typecho_fields convert to character set utf8mb4;
alter table typecho_metas convert to character set utf8mb4;
alter table typecho_options convert to character set utf8mb4;
alter table typecho_relationships convert to character set utf8mb4;

Typecho_是安装时设置的表前缀,如果你的表前缀不是默认前缀请自行替换。
不知道自己的表前缀往下看。

修改Typecho本地配置文件

默认配置文件是:config.inc.php
红色部分是表前缀,蓝色是你需要修改的,把默认的utf8改为utf8mb4即可
config.inc.php部分截图

Emoji测试

😉

printf()的格式

printf("格式控制字符串",输出参数串)

格式字符串:指定数据的输出格式
输出参数串:待输出的数据,可以是变量,常亮,表达式

scanf()的格式

scanf("格式控制字符串",内存地址1,内存地址2,内存地址...,内存地址n)
scanf("%d",&a)