使用 Linkbot 学习 Python 3 / 使用模块
这是本章的打字练习(将其命名为 cal.py(import
实际上会寻找名为 calendar.py 的文件并读取它。如果文件名为 calendar.py 并且它看到一个 "import calendar",它会尝试读取自身,这在最佳情况下也难以正常工作。))
import calendar
year = int(input("Type in the year number: "))
calendar.prcal(year)
以下是我的部分输出
Type in the year number: 2001 2001 January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31
(我跳过了部分输出,但我认为你明白了吧。) 那么程序做了什么?第一行 import calendar
使用了一个新的命令 import
。命令 import
加载了一个模块(在本例中是 calendar
模块)。要查看标准模块中可用的命令,请查看 Python 库参考(如果你下载了它)或访问 https://docs.pythonlang.cn/library/。如果你查看 calendar 模块的文档,它列出了一个名为 prcal
的函数,该函数打印一年日历。行 calendar.prcal(year)
使用了此函数。总结一下,要使用模块,import
它,然后使用 module_name.function
来调用模块中的函数。另一种编写程序的方式是
from calendar import prcal
year = int(input("Type in the year number: "))
prcal(year)
此版本从模块中导入特定函数。这里还有另一个使用 Python 库的程序(将其命名为类似 clock.py 的名称)(同时按 Ctrl 和 'c' 键以终止程序)
from time import time, ctime
prev_time = ""
while True:
the_time = ctime(time())
if prev_time != the_time:
print("The time is:", ctime(time()))
prev_time = the_time
部分输出为
The time is: Sun Aug 20 13:40:04 2000 The time is: Sun Aug 20 13:40:05 2000 The time is: Sun Aug 20 13:40:06 2000 The time is: Sun Aug 20 13:40:07 2000 Traceback (innermost last): File "clock.py", line 5, in ? the_time = ctime(time()) KeyboardInterrupt
输出当然是无限的,所以我取消了它(或者至少输出会一直持续到按下 Ctrl+C)。程序只是做了一个无限循环(True
永远为真,所以 while True:
会永远运行),并且每次都会检查时间是否改变,如果改变了就打印它。请注意,在 from time import time, ctime
行中如何使用 import 语句后的多个名称。
Python 库包含许多有用的函数。这些函数为你的程序提供了更多功能,其中许多函数可以简化 Python 中的编程。
以下 Barobo Linkbot 程序演示了多个模块,这些模块用于创建一些有趣的例子,来演示如何使用 Linkbot 功能。程序中添加了注释来解释 Linkbot 的操作,方便你阅读。同样,while True:
将程序置于一个无限循环中,可以通过按下 Ctrl+C 退出。
import barobo #imports the module with the Linkbot commands
import time #imports the module to use time.sleep
import random #imports a random integer generator
dongle = barobo.Dongle() #this block uses the 'barobo' module to connect the Linkbot
dongle.connect() #and the dongle that is plugged into the computer
robotID = input('Enter robot ID: ') #prompts user to enter Linkbot ID
robot = dongle.getLinkbot(robotID)
def callback(mask, buttons, data):
if buttons & 0x02:
robot.setLEDColor( #calls setLEDColor from 'barobo' module
random.randint(0, 255), #uses the 'random' integer generator from
random.randint(0, 255), #the random module to set colors
random.randint(0, 255)
)
robot.enableButtonCallback(callback)
while True:
time.sleep(1) #uses the 'time' module to call time.sleep command
看看 Linkbot 用内置的 RGB LED 能够生成的各种颜色和亮度。
将 决策 部分的 high_low.py
程序改写为使用 0 到 99 之间的随机整数,而不是硬编码的 78。使用 Python 文档查找合适的模块和函数来完成此操作。
将 决策 部分的 high_low.py
程序改写为使用 0 到 99 之间的随机整数,而不是硬编码的 78。使用 Python 文档查找合适的模块和函数来完成此操作。
from random import randint
number = randint(0, 99)
guess = -1
while guess != number:
guess = int(input ("Guess a number: "))
if guess > number:
print("Too high")
elif guess < number:
print("Too low")
print("Just right")