前言
开学一个月以来,忙于学业,并没有时间去思考很多东西,看书倒是经常的事,只不过不是很常看 Python 的书,更多的是看文学书,我在放假前一天考试完后,翻阅了我的 Python 书,学到了些对我来说算是新东西,便对开学前的工程进行了改善和升级,写了一个坐标移动的程序。
输出预览
其中带 #的部分是我的解释,正式运行是没有的
全部代码
代码分析
分析说明
代码分析将会具体讲述第几行的代码有什么用,其中行数包含了注释所占用的行数。
random 模块
第 9 行中的 import random 代码,将 random 模块引入这个程序,而 random 的作用就在于将字典中的内容进行随机处理,这在 第12行 中就可以显示出来,我在 第11行 书写了字典内容,然后使用 random 进行了随机处理,如果这时候将它输出出来:
# 引入 random 模块
import random
# 定义 spead 内容 并进行随机处理
spead_0 = ['slow', 'medium', 'fast', 'veryfast']
spead_random = random.choice(spead_0)
# 输出数值
print(f"当前速度是{spead_random}")
将会从 spead_0 中抽取任意一个值并进行输出,而不是输出第一个值。
输出内容
在对代码改进前,程序对 random 进行了大量使用 (详见《Python 学习日记 – 法外狂徒的故事》) 改进后,将随机值,更改为了人为输入,更随机 (bushi
但是速度仍然进行了随机处理,因为这有便于计算,而不是进行输入。
人为输入
使用 input 对数值进行输入:
其中 your_坐标类型_position ,这将对应下一组转化逻辑。值得注意的是,我并没有使用如下类似的代码:
a = input("Tell me your X positison:")
输出内容
这是因为使用这样的代码运行后将会变得不美观。优秀的程序,通常是逻辑和美观兼备的。
解决运算问题
在使用 input 进行输入时,原本的方法所输出的值,无法进行正常运算,它会报错
错误代码示范
a = input("Number is ")
b = a + 3
print(f"Now your number is {b}")
报错内容
怎么办呢?我直接进行了 CV (bushi。我去翻阅了我朋友所写的小玩意,发现可以使用 float() 对输入值进行处理,让它变得可运算。也就成了这样
a = input("Number is ")
b= float(a)
c = b + 3
print(f"Now your number is {c}")
输出内容
这样的处理方式我写了两组,分别针对 X 坐标和 Y 坐标输入的值进行处理:
# 转化X坐标
x_position = float(your_x_position)
# 转化Y坐标(+1为初始位置)
y_position = float(your_y_position)
此刻,输入的值就从 your坐标类型position 的浮动值,转为了 坐标类型_position 定值,便可进行后续运算。
输出初始坐标
原本的代码中写到
其中 {坐标类型_position} 就是我们输入的值。在此步中由于我们没有运用计算,因此 {坐标类型_position} 可以替换为 your_坐标类型_position 替换后可以正常显示,但是为了减少字节 (闲的没事,更推荐用 {坐标类型_position} 的方式引用值。
在 print() 中,我们不必书写 \n 对文字进行换行,可以直接 回车 以换行。当然 \n 的写法也能生效。
哦,对了,在 print() 中,如果只输出文字,我们可以使用 print() 以输出:
print("这是一段文字")
输出内容
倘若你想引用某个值,那么就必须在后面加上一个 f 即 format(设置格式),书写出来就是
message = 文字
print(f"这是一段{message}")
输出内容
if-elif-else 语句
先看原本的代码
这里牵扯了计算,因而必须引用我上面所写的 float() 进行转换后再进行计算。
这里的数值可以 任意书写,我保证了它最小数不为负,后实际测试中发现,为不为负都无所谓,不会出现 Bug……
这里最有技术的是 if-elif-else 语句,也不能算是技术,应该说是个逻辑。
我可以翻译一下这整段代码的意思,便不再需要过多阐述。
就是这样,这里的 else 被我认定为速度为 veryfast ,但是逻辑上来说,是除开 slow、medium、fast 以外的所有值,都会执行如此的逻辑,也就是说假设当前速度为 veryslow 它的算法依旧是 X+4,Y+6,但由于字典限制,总共只存在四种情况,就不会出现这种问题了。
输出移动后坐标
这时引用的坐标值,便是进过 if-elif-else 处理后计算得到的,便不必再多说了。
内容介绍
先看代码吧
这里容纳了很多东西。
首先 alien = {……} 部分,是一个字典,其中第一列是速度,第二列是介绍。第一列值我们称为 key ,第二列的值称为 value 。
每个 key 值对应一个 value 值 ,且横向对应。
之后的 print() 是最简单的 print 语句,不必多说。
从 if 开始又是一个逻辑
如果 alien 字典中的类型总数为 4,那么会生成一个新值,即 The_number = 'four',并且输出一段话 There are four cases in total 。
如果不是,那么则直接输出一个单词 NULL
这或许不大好理解,但这就是它的逻辑。
最终将 alien 字典中的值输出出来
# for语句输出
for spead_1, position in alien.items():
print(f"Spead: {spead_1}")
print(f"{position}")
spead_1 对于 key,position 对应 value,将 key 和 value 读取出来,分别赋给 spead_1、position 。
在最后使用 print 输出出来。
for 则为循环,假如值没有被完全输出出来,那么它会不断输出,直到完全输出一遍。
结束
那么,到这就结束了?这可能是我近一年写的最有技术的文章……