斯坦利·库布里克执导的 1980 年心理恐怖片《闪光》发生在闹鬼的远眺酒店。酒店地毯的六边形设计成为这部著名电影的标志性部分。地毯的特点是交替和连锁的六边形,其催眠效果非常适合这样一部令人紧张的电影。这个项目中的短程序,类似于项目 35,“六边形网格”,在屏幕上打印这个重复的图案。
注意,这个程序使用原始字符串,它在开始的引号前面加上小写的r,这样字符串中的反斜杠就不会被解释为转义字符。
当您运行shiningcarpet.py时,输出将如下所示:
_ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ __
\ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _
\ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/
/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_
_/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \__
__/ / / \_____/ / / \_____/ / / \_____/ / / \_____/ / / \_____/ / / \___
_ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ __
\ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _
\ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/
/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_
_/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \__
__/ / / \_____/ / / \_____/ / / \_____/ / / \_____/ / / \_____/ / / \___
_ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ ___ \ \ \_/ __
\ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _ \ \ \___/ _
\ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/ \ \ \_____/
/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_/ / / ___ \_
_/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \___/ / / _ \__
__/ / / \_____/ / / \_____/ / / \_____/ / / \_____/ / / \_____/ / / \___创建这样的程序(或类似的第三十五个项目)并不是从编码开始,而是在文本编辑器中绘制镶嵌形状。一旦你写出了图案,你就可以把它切割成需要平铺的最小单元:
_ \ \ \_/ __
\ \ \___/ _
\ \ \_____/
/ / / ___ \_
_/ / / _ \__
__/ / / \___将这段文本复制并粘贴到源代码中后,您可以围绕它编写程序的其余部分。软件不仅仅是坐下来从头到尾写代码。每个专业软件开发人员都要经历几次反复的修补、实验和调试。最终的结果可能只有九行代码,但是一个小程序并不一定意味着花了很少的精力来完成它。
"""Shining Carpet, by Al Sweigart email@protected
Displays a tessellation of the carpet pattern from The Shining.
This code is available at https://nostarch.com/big-book-small-python-programming
Tags: tiny, beginner, artistic"""
# Set up the constants:
X_REPEAT = 6 # How many times to tessellate horizontally.
Y_REPEAT = 4 # How many times to tessellate vertically.
for i in range(Y_REPEAT):
print(r'_ \ \ \_/ __' * X_REPEAT)
print(r' \ \ \___/ _' * X_REPEAT)
print(r'\ \ \_____/ ' * X_REPEAT)
print(r'/ / / ___ \_' * X_REPEAT)
print(r'_/ / / _ \__' * X_REPEAT)
print(r'__/ / / \___' * X_REPEAT) 在实践中,尝试创建如下模式:
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )
))( ))( ))( ))( ))( ))( ))( ))( ))( ))( ))( ))(
(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )
))( ))( ))( ))( ))( ))( ))( ))( ))( ))( ))( ))(
(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )(( )
))( ))( ))( ))( ))( ))( ))( ))( ))( ))( ))( ))(
/ __ \ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/
/ / \ \____/ / \ \____/ / \ \____/ / \ \____/ / \ \____
\ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/ / __
\____/ / \ \____/ / \ \____/ / \ \____/ / \ \____/ / \
/ __ \ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/
/ / \ \____/ / \ \____/ / \ \____/ / \ \____/ / \ \____
\ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/ / __ \ \__/ / __
\____/ / \ \____/ / \ \____/ / \ \____/ / \ \____/ / \
\__ \__ \__ \__ \__ \__ \__ \__ \__ \__
__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \
\ \ \ \ \ \ \ \ \ \
__/ __/ __/ __/ __/ __/ __/ __/ __/ __/
\__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/
__/ / / / / / / / / /
\__ \__ \__ \__ \__ \__ \__ \__ \__ \__
__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \
/ ___ \ ^ / ___ \ ^ / ___ \ ^ / ___ \ ^ / ___ \ ^ / ___ \ ^
/ \ VVV / \ VVV / \ VVV / \ VVV / \ VVV / \ VVV
|() ()| |() ()| |() ()| |() ()| |() ()| |() ()|
\ ^ / ___ \ ^ / ___ \ ^ / ___ \ ^ / ___ \ ^ / ___ \ ^ / ___
\ VVV / \ VVV / \ VVV / \ VVV / \ VVV / \ VVV /
)| |() ()| |() ()| |() ()| |() ()| |() ()| |() (