我一直在评论一个几乎相似的问题,但没有解决方案来解决我的小问题。
我的代码似乎有用但我仍然得到'IndexError:列表索引超出范围'。
这是我的代码:
grid = [['.', '.', '.', '.', '.', '.',],\
['.', 'O', 'O', '.', '.', '.',],\
['O', 'O', 'O', 'O', '.', '.',],\
['O', 'O', 'O', 'O', 'O', '.',],\
['.', 'O', 'O', 'O', 'O', 'O',],\
['O', 'O', 'O', 'O', 'O', '.',],\
['O', 'O', 'O', 'O', '.', '.',],\
['.', 'O', 'O', '.', '.', '.',],\
['.', '.', '.', '.', '.', '.',]]
def fish():
m = 0
n = 0
while m != len(grid):
print (grid[m][n] + \
grid[m+1][n] + \
grid[m+2][n] + \
grid[m+3][n] + \
grid[m+4][n] + \
grid[m+5][n] + \
grid[m+6][n] + \
grid[m+7][n] + \
grid[m+8][n])
n = n+1
fish()
答案 0 :(得分:2)
我可以提出另一个答案
def fish():
for line in zip(*grid):
print(''.join(line))
打印
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....
答案 1 :(得分:1)
您的m
循环永远不会终止,因为您的n
值永远不会更新,您只会更新IndexError
值。
这会导致您的循环永久运行,当n
的值太大时,最终会为您提供while
。
如果您知道网格中恰好有8行,那么您应该这样做,以便n
循环检查m
而不是grid[0]
的值检查其中一行(如grid = [['.', '.', '.', '.', '.', '.',],\
['.', 'O', 'O', '.', '.', '.',],\
['O', 'O', 'O', 'O', '.', '.',],\
['O', 'O', 'O', 'O', 'O', '.',],\
['.', 'O', 'O', 'O', 'O', 'O',],\
['O', 'O', 'O', 'O', 'O', '.',],\
['O', 'O', 'O', 'O', '.', '.',],\
['.', 'O', 'O', '.', '.', '.',],\
['.', '.', '.', '.', '.', '.',]]
def fish():
m = 0
n = 0
while n < len(grid[0]):
print (grid[m][n] + \
grid[m+1][n] + \
grid[m+2][n] + \
grid[m+3][n] + \
grid[m+4][n] + \
grid[m+5][n] + \
grid[m+6][n] + \
grid[m+7][n] + \
grid[m+8][n])
n = n+1
fish()
)的长度,如下所示:
library(stringr)
text_sample<-"After talks in Damascus on Tuesday, the UN special envoy to Syria, Staffan de Mistura, said the Syrian government had a duty to allow access to whoever needed it."
result<-str_extract_all(text_sample,"\\w+")
答案 2 :(得分:1)
我对编程很陌生,我的回答是:
它也给出了正确的结果,但肯定不是解决问题的最佳方法,但仍然是另一种方法。
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
for x in range(len(grid)):
for y in range(len(grid)):
try:
if y == len(grid)-1:
print(grid[y][x])
else:
print(grid[y][x], end='')
except IndexError:
break
答案 3 :(得分:1)
我遵循了提示,并逐列遍历了矩阵(在这种情况下为列表矩阵)。 [0][0],[1][0],[2][0]
依此类推。然后,我将遍历的列打印为最终结果的第一行(根据问题的要求)。其他列也以相同的方式进行迭代。
此外,出于娱乐目的,我还将最终结果作为嵌套列表进行了制作,使其就像输入一样。
注:仅在第4章之前使用了知识。正如其他人发布的那样,还有其他高级方法可以解决此问题。
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
#Initial Matrix
for row in grid:
print (row)
#Creating the pattern
result=[]
for x in range(len(grid[0])):
strResult= ''
for y in range(len(grid)):
#Printing the pattern in non-list form
print(grid[y][x],end='')
strResult = strResult + str(grid[y][x]);
result.append(list(strResult))
print()
#Printing the pattern in list form
for row in result:
print (row)
['.', '.', '.', '.', '.', '.']
['.', 'O', 'O', '.', '.', '.']
['O', 'O', 'O', 'O', '.', '.']
['O', 'O', 'O', 'O', 'O', '.']
['.', 'O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O', '.']
['O', 'O', 'O', 'O', '.', '.']
['.', 'O', 'O', '.', '.', '.']
['.', '.', '.', '.', '.', '.']
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....
['.', '.', 'O', 'O', '.', 'O', 'O', '.', '.']
['.', 'O', 'O', 'O', 'O', 'O', 'O', 'O', '.']
['.', 'O', 'O', 'O', 'O', 'O', 'O', 'O', '.']
['.', '.', 'O', 'O', 'O', 'O', 'O', '.', '.']
['.', '.', '.', 'O', 'O', 'O', '.', '.', '.']
['.', '.', '.', '.', 'O', '.', '.', '.', '.']
答案 4 :(得分:0)
似乎您希望在任何给定长度的列表中使用此功能。 但任务是让它与实践项目列表中的特定列表一起使用。这段代码只使用了本书中教授的内容,直到第4章(因为我刚刚开始编码,直到这里才知道这本书):
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
for x in range(0,6):
print(end='\n')
for y in range(0,9):
print(grid[y][x],end='')
答案 5 :(得分:0)
如果您希望使代码适用于任何大小的数组,请查看以下解决方案:
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
x = 0
y = 0
while x < len(grid[0]): #Determine number of lists in list
while y < len(grid): #Determine number of lists
print(grid[y][x], end='') #Print each element on line
y += 1 #Up Y by one each cycle until while stops
print('\n') #Move to a new line
x += 1 #Increase x by one and reset Y, restarts
y = 0 #second while loop until both run out.
答案 6 :(得分:0)
以下内容似乎可行(但请专家仔细检查),并且仅使用第1-4章中介绍的工具。我的处女所BTW。
grid = [['.', '.', '.', '.', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['0', '0', '0', '0', '.', '.'],
['0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '.'],
['0', '0', '0', '0', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
n = 0 #index for arbitrary sub-list since all sub-lists are same length
for i in range(len(grid[n])): # upper-level loop with i as the "item-level" variable
for t in range(len(grid)-1): # lower-level loop with t as sub-list level variable
print(grid[t][i],end='') # on same line, print one item (i) from each sub-list (t) except for last sub-list
print(grid[t][-1]) # after the above lower-level loop finishes (prints eight items), print 9th and final item (i) from sub-list (t), then create new line before continuing upper-level loop for next value of t.
请让我知道我是否没有遇到这种情况可以解决的情况。
答案 7 :(得分:0)
我试图使其普及:
# character picture grid -- ascii art
grid = [['.', '.', '.', '.', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['0', '0', '0', '0', '.', '.'],
['0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '.'],
['0', '0', '0', '0', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
# size of grid may vary, so len(grid) is used
def myfish():
for y in range(len(grid[0])): # length of first element of list
for x in range(len(grid)): # length of list
print(grid[x][y], end='')
print('\n')
myfish()
我不确定,因此请告诉我代码在某些情况下是否会崩溃...
答案 8 :(得分:0)
x = 0
y = 0
while y < len(grid[x]):
for x in range(len(grid)):
print(grid[x][y], end='')
print()
y +=1
答案 9 :(得分:0)
我正在研究并提出了这个想法:
# Heart with grid project
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
spam = 0
eggs = 0
bacon = ''
for eggs in range (0,6): #as the book hints we should go row by row so that's why this first 'for'
for spam in range (0,9):
bacon += '{} '.format(grid[spam][eggs]) # Here we swap rows with columns because we want to transpose it; we start by increasing the first value,that's why we use 'spam' first and 'eggs' on the second '[]' and then we proced to the next line.
print('{}'.format(bacon)) # Here we print the line created for 'bacon'
bacon = '' #then we need to reset this because otherwise it will stack multiple 'bacons' together
print('There is our pretty heart!')
打印:
. . O O . O O . .
. O O O O O O O .
. O O O O O O O .
. . O O O O O . .
. . . O O O . . .
. . . . O . . . .
There is our pretty heart!
答案 10 :(得分:0)
仅横向于矩阵:
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
for f in range(len(grid[0:6])):
for c in range(len(grid[0:9])):
print(grid[c][f],end=' ')
print(' ')
output:
. . O O . O O . .
. O O O O O O O .
. O O O O O O O .
. . O O O O O . .
. . . O O O . . .
. . . . O . . . .
答案 11 :(得分:0)
import os
import colorama
from colorama import Fore, Style # to be able to add color
os.system('cls' if os.name == 'nt' else clear) # to clear the screen
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
for i in range(len(grid[0])):
for j in range(len(grid)):
if grid[j][i] == '.': # to decide whether to print or not
print(' ', end=' ') # to not print .
else:
print(Fore.RED + grid[j][i], end=' ') # to print O in red
print()
print(Style.RESET_ALL) # to reset the colors and style
答案 12 :(得分:0)
这是做什么的。
grid =[
['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
print('Old Grid:')
for i in range(0,len(grid)):
for j in range(0,len(grid[i])):
if j==0:
print(grid[i][j],' ', end='')
elif j%(len(grid[i])-1)!=0:
print(grid[i][j],' ', end='')
else:
print(grid[i][j],' ')
print('new Grid:')
for y in range(0,len(grid[1])):
for x in range(0,len(grid)):
if x==0:
print(grid[x][y],' ', end='')
elif x%(len(grid)-1)!=0:
print(grid[x][y],' ',end='')
else:
print(grid[x][y],' ')
答案 13 :(得分:-2)
在n + 1之后添加一个m + 1,你应该好好去