【发布时间】:2020-08-17 04:03:42
【问题描述】:
我所知道的关于import 的一切都表明这应该会引发错误。
为了说明我的困惑,这太夸张了。
有人可以解释这个导入执行以及为什么它不会引发错误吗?
import conway.blahblahspongebobsquarepantsinthedinerboogiefacesmahboxhammerblrrrbswwwpnoobiedoopieaaaayeeeeee
Sample Output: This is how it is supposed to look when executed properly so it works perfectly
## # # # ### # ## ### # # # # # ## # # ### ##
# #### # # # # # ## # # # ## ### ##### ### # ## ##
## # # ##### ###### # ### # ### # ### # # # #
# Conway's Game of Life
import random, time, copy
WIDTH = 60 # set value for width
HEIGHT = 20 # set value for height
# Create a list of list for the cells:
nextCells = [] # create an empty list called nextcells
for x in range(WIDTH): # evaluates for x in range(60) we loop until nextcells is full
column = [] # Create a new column. # create a (60) lists called column inside nextcells
for y in range(HEIGHT): # now we give each cell a 50/50 chance of starting off alive/dead
if random.randint(0, 1) == 0:
column.append('#') # Add a living cell. # we append (basically we are building the
else: # column from scratch or "starting at 0"
column.append(' ') # Add a dead cell.
nextCells.append(column) # nextCells is a list of column lists.
while True: # Main program loop.
print('\n\n\n\n\n') # Separate each step with newlines. # create some space between each automation
currentCells = copy.deepcopy(nextCells) # copy our nextcells list
# Print currentCells on the screen:
for y in range(HEIGHT): # this is the beginning column
for x in range(WIDTH): # we nest this so that each row gets printed
print(currentCells[x][y], end='') # Print the # or space. # completely x loops and prints the entire
print() # Print a newline at the end of the row. # row for each row in the column
# Calculate the next step's cells based on current step's cells:
for x in range(WIDTH):
for y in range(HEIGHT):
# Get neighboring coordinates:
# `% WIDTH` ensures leftCoord is always between 0 and WIDTH - 1
leftCoord = (x - 1) % WIDTH # % wraps our range to remain in bounds 0 -1 in this case
rightCoord = (x + 1) % WIDTH # would equal 59 since our WIDTH = 60 or(00 - 59)
aboveCoord = (y - 1) % HEIGHT # % wraps our height the same way
belowCoord = (y + 1) % HEIGHT # so this evaluates to 1/20 = remainder 19
# if we are in the first column
# Count number of living neighbors:
numNeighbors = 0
if currentCells[leftCoord][aboveCoord] == '#': # for each square we evaluate alive/dead
numNeighbors += 1 # Top-left neighbor is alive. # for the 8 squares around it
if currentCells[x][aboveCoord] == '#':
numNeighbors += 1 # Top neighbor is alive.
if currentCells[rightCoord][aboveCoord] == '#':
numNeighbors += 1 # Top-right neighbor is alive.
if currentCells[leftCoord][y] == '#':
numNeighbors += 1 # Left neighbor is alive.
if currentCells[rightCoord][y] == '#':
numNeighbors += 1 # Right neighbor is alive.
if currentCells[leftCoord][belowCoord] == '#':
numNeighbors += 1 # Bottom-left neighbor is alive.
if currentCells[x][belowCoord] == '#':
numNeighbors += 1 # Bottom neighbor is alive.
if currentCells[rightCoord][belowCoord] == '#':
numNeighbors += 1 # Bottom-right neighbor is alive.
# Set cell based on Conway's Game of Life rules:
if currentCells[x][y] == '#' and (numNeighbors == 2 or # 2 conditions if this square is "alive"
numNeighbors == 3): # and has 2 - 3 living neighbors it stays "alive"
# Living cells with 2 or 3 neighbors stay alive:
nextCells[x][y] = '#'
elif currentCells[x][y] == ' ' and numNeighbors == 3: # we now run the check on dead squares to see
# Dead cells with 3 neighbors become alive: # if they come to life
nextCells[x][y] = '#'
else:
# Everything else dies or stays dead:
nextCells[x][y] = ' '
time.sleep(20) # Add a 1-second pause to reduce flickering. # lastly we add a 1 second delay
【问题讨论】:
-
conway....文件里面有什么? -
不多我加一下
-
Import 运行您尝试导入的文件。这个事实在我的项目中帮助了我,我不得不从当前的 Python 文件运行另一个 Python 文件。这有帮助吗?
-
正如@JonNezbit 所说,
import需要执行您的conway模块,以便它可以定义要导入的属性。您会看到一个错误,因为它没有您请求的属性,但由于循环永远不会终止,您永远不会到达引发错误的地步。 -
感谢您的时间和精力。你是对的,我添加了一个 break 来逃避循环并检查。 Ty 还让我不必创建一个我还没有做到这一点的源代码。我知道我非常感谢它。
标签: python python-3.x python-import