用print()打印信息

在现实世界中,我们和别人交流都是与语言或者文字,那在Minecraft中我们也可以使用文字么?今天我们就要来讲讲Python中的字符串。字符串,也就是一串用""或者‘’包裹的文字,在字符串中1、 、#等等不再是它们本身的意义,就像一个对英语一窍不通的人来说,他无法将one和1联系起来,也不会将plus和 联系起来一样,在字符串中,它们仅仅就变成了一个没有意义的符号。但是字符串可以在屏幕中显示出来,这样我们就可以像读书一样读取它们。

在Python中,我们可以用print()命令在运行结果中打印我们的字符串。比如:

print("string")

我的世界教学python(李老师教你用Python玩我的世界)(1)

执行的结果就是打印一个字符串string

下面我们来对比一下以下两个程序:

  1. print(3 2)
  2. print("3 2")

我的世界教学python(李老师教你用Python玩我的世界)(2)

用postToChat()在Minecraft中聊天

我们会发现,print(3 2)这个命令是把3 2作为一个算式,将结果打印在屏幕上,而print("3 2")是将"3 2"作为一个字符串,把它作为一串字符打印在屏幕上。如果我们要把字符打印在Minecraft的世界中,我们需要用下面这个命令:

postToChat()

我们来为我的世界写一句欢迎词吧。

我的世界教学python(李老师教你用Python玩我的世界)(3)

Welcome to Minecraft,have a good time!这个句子就写在了Minecraft的世界里。

我的世界教学python(李老师教你用Python玩我的世界)(4)

那如果是一个动态的信息,我们可以将它也写在Minecraft中么?

我们来尝试将角色的坐标打印在Minecraft的屏幕上。

我们在程序中添加两段:

mc.postToChat(mc.player.getTilePos())

time.sleep(5)

这时,我们可以看到屏幕上显示了角色的坐标信息。只要不用""括住命令,命令就会先执行,再打印结果。

我的世界教学python(李老师教你用Python玩我的世界)(5)

连接字符串

如果我们想在坐标前面加上坐标的提示符,比如x=,y=,z=

那么我们写下程序:

pos=mc.player.getTilePos()

x=pos.x

y=pos.y

z=pos.z

mc.postToChat("x=" x ",y=" y ",z=" z)

这里的 表示把字符串串起来。

这里提示出错了!

我的世界教学python(李老师教你用Python玩我的世界)(6)

错在什么地方呢?原来程序认为x、y、z不是字符串,不能用 和字符串相加,所以我们必须用一个强制格式转化的命令str()将x、y、z的值转化为字符串类型才可以用+号连接。

继续修改程序:

mc.postToChat("x=" str(x) ",y=" str(y) ",z=" str(z))

在刚才的x、y、z前面加上强制格式转化命令str(),就可以用加号相连了。

我的世界教学python(李老师教你用Python玩我的世界)(7)

用input()传递用户数据

相信大家都听过《三只小猪》的故事吧,猪兄弟三个,一个用草盖房子,一个用木头盖房子,最后一个用石头盖房子,前面两个房子都被大灰狼给攻破了,只有勤劳的猪小弟用石头盖房子制服了狡猾的大灰狼。那我们今天也可以通过输入方块的代码去盖任何我们想要的房子,我相信同学们一定会想,那我一定要盖个黄金屋了,哈哈哈~

我们可以用input()命令来获取用户希望的材料,输入命令:

blockType=int(input("请问你想用什么盖房子?"))

变量blockTpye是通过键盘输入的,但是键盘输入的字符python认为它是一个字符串,并不是真正意义上的整数,所以我们用一个强制转化的命令int()将输入的数字转化为整数,就可以在下面的程序中使用它了。

输入程序:

#铲出一块平地,准备盖房

mc.setBlocks(x,y,z,x 50,y 50,z 50,0)

#用你喜欢的材料盖房

mc.setBlocks(x 10,y,z 10,x 10 12,y 12,z 10 20,blockType)

mc.setBlocks(x 10 1,y 1,z 10 1,x 10 12-1,y 12-1,z 10 20-1,0)

mc.setBlocks(x 10,y,z 10 12,x 10,y 5,z 10 12 4,0)

程序执行后在屏幕上出现问题:

我的世界教学python(李老师教你用Python玩我的世界)(8)

输入黄金的代码:41

我的世界教学python(李老师教你用Python玩我的世界)(9)

哇,现在我造了一个金屋子耶!

我们再输入一个水晶的代号:57

我的世界教学python(李老师教你用Python玩我的世界)(10)

哇,是水晶宫耶!

想一想,怎么把房子给拆了?:P

如果输入错误的信息类型怎么办?

通过input()我们可以灵活地和Minecraft进行交流了,但是如果我们输入的不是代码,那Python就无法理解了。

我的世界教学python(李老师教你用Python玩我的世界)(11)

这是因为我们无法用int()将“金子”这个词转化为整数。

遇到这个问题怎么办呢?给我们的程序员留点面子吧,让我们礼貌地提示他请输入材料的代码。我们用try…except…来捕捉到输入时的错误,并提示用户输入正确的信息。

修改程序:

try:

blockType=int(input("请问你想用什么盖房子?"))

except:

print("输入不正确,请输入一个整数!")

我的世界教学python(李老师教你用Python玩我的世界)(12)

这样当输入不正确的时候,用户就不会一脸蒙圈了。

应用实例

都说家是心灵的港湾,如果走累了,我们就回家歇歇吧。在我的世界里,世界真的太大了,走着走着,我们已经不知道离家有多远。亲爱的,你能编个程序让我知道离家的距离么?

还记得我们是怎么求两点之间的距离么?我们可以用数学课上勾股定理,只要把两点放在一个直角三角形里,然后用公式:

我的世界教学python(李老师教你用Python玩我的世界)(13)

a是角色z坐标位置-家的z坐标位置的差

b是角色x坐标位置-家的x坐标位置的差

在python中,我们用**2表示平方,用sqrt()表示开方,如果要用sqrt(),我们需要先导入 math库。

下面我们来算一算,在10秒钟之内,我们离开家多少距离了。

在程序的开头添加:

Import math

写入程序:

#将角色移动到房子的位置

x = 155

y = 66

z = 375

mc.player.setTilePos(x,y,z)

#等待10秒后再次获得角色的位置

time.sleep(10)

posx = mc.player.getTilePos().x

posz = mc.player.getTilePos().z

#计算行走距离

distance = math.sqrt((x - posx)**2 (z - posz)**2)

mc.postToChat(distance)

10秒以后得到距离26,宝宝你不要走得太远啊!

我的世界教学python(李老师教你用Python玩我的世界)(14)

今天我们学习了postToChat()和input()的使用方法,我们可以用input()来和Minecraft对话了,我的世界再也不是哑巴,你学会了么?我们下期见!

,