C#中怎样用for循环为datatable的每一行每一列都赋值为“*”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中怎样用for循环为datatable的每一行每一列都赋值为“*”?相关的知识,希望对你有一定的参考价值。
for(int i = 0 ;i<table.Rows.Count ; i++)for(int j = 0 ; j < table.Columns.Count ; j++)
table.Row[i][j]="*";
参考技术A DataTable table = new DataTabel();
DataRow row = new DataRow();
row.add("row");
Column c = new Column();
c.add("aaa");
row.addColumn(c);
table.addRow(row);
大概思路就是这样的 参考技术B foreach(var r in table.rows)
foreach(var cell in r.cells)
cell.value="*"; 参考技术C for(int i=0;i<table.rows.count;i++)
for(int j=0;j<table.columns.count;j++)
table.rows[i].cell[j].value="*"; 参考技术D foreach(DataRow dr in DataTable1.Rows)
for(int i=0;i<DataTable1.Columns.count;i++)
dr[i]="*";
无法在双 for 循环 python 中打印字符串的每一行
【中文标题】无法在双 for 循环 python 中打印字符串的每一行【英文标题】:Trouble printing each line of a string inside a double for loop python 【发布时间】:2021-11-19 16:51:32 【问题描述】:所以我正在练习我在 python 中的第一个终端游戏,但我无法在终端中获得输出来遵循我想要的。
实例变量:
board = []
board_size = 10
alphabet = "ABCDEFGHIJ"
代码sn-p:
def create_board():
for i in range(0, board_size):
board.append(["."] * board_size)
print_board(board)
def print_board(board):
count = 0
while count < 10:
for i in board:
board_layout = alphabet[count] + " " + " ".join(i)
continue
count += 1
print(board_layout)
def main():
create_board()
终端输出:
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
J . . . . . . . . . .
所需的输出应该是 A - J 并且每个字母都有点。 请让我知道我应该尝试什么。
我尝试过的其他尝试:
for letter in alphabet:
for i in board:
board_layout = letter + " " + " ".join(i)
continue
print(board_layout)
for j in range(len(alphabet)):
for i in board:
board_layout = alphabet[j] + " " + " ".join(i)
print(board_layout)
我也尝试过切换 for 循环的顺序,但没有成功。
【问题讨论】:
【参考方案1】:这样做怎么样:-
BS = 10
ALPHA = 'ABCDEFGHIJ'
A = [[c]+['.' for _ in range(BS)] for c in ALPHA]
A.append([' ']+[x for x in range(BS)])
for r in A:
print(*r)
【讨论】:
非常感谢,您的回答立即解决了我的问题。如果我可以问,我做错了什么? 你只是让它变得比实际更复杂。我的答案与其他答案的主要区别在于 A 现在是一个二维数组,您可以在玩游戏期间根据需要进行修改 我觉得这是我开始编程以来的习惯。我仍在尝试掌握python的窍门。但在我能做好之前,我不会停止尝试。再次感谢伙计。 是的,我注意到了。这非常棒,因为它使我的整个项目变得更加简单。如果您不介意我问,我该如何在每列的底部添加数字?我假设我可以在末尾添加另一个列表,每个索引中只有数字。 你们是传奇人物,感谢您的帮助。你的两个答案都非常有帮助。最初我试图将 A - J 和 1 - 10 与实际列表分开,但两种方式都是完全可行的,因为我只需调整我的 if 语句以用于攻击放置方法【参考方案2】:试试这个(简短而简单):
board_size = 10
alphabet = "ABCDEFGHIJ"
dots = ' .' * board_size
for a in alphabet:
print(f'a dots')
说明:当您将字符串乘以一个数字时,该字符串会重复该次数。所以'a' * 3
变成了'aaa'
例如。
【讨论】:
非常感谢您的解释,我很感激【参考方案3】:试试这个:
>>> BS = 10
>>> ALPHA = 'ABCDEFGHIJ'
>>> print(*[c + ' .'*BS for c in ALPHA], sep='\n')
A . . . . . . . . . .
B . . . . . . . . . .
C . . . . . . . . . .
D . . . . . . . . . .
E . . . . . . . . . .
F . . . . . . . . . .
G . . . . . . . . . .
H . . . . . . . . . .
I . . . . . . . . . .
J . . . . . . . . . .
【讨论】:
这很好,也很紧凑,尽管在我的用例中,我希望能够在玩家每次移动后多次重新打印棋盘。尽管我会记住您的语法以备将来使用。你的列表理解能力很棒。 @BassonKoch 欢迎老兄,如果你举个例子我可以帮助你,我无法理解:although in my use case I want to be able to reprint the board out multiple times after each move by the player
以上是关于C#中怎样用for循环为datatable的每一行每一列都赋值为“*”?的主要内容,如果未能解决你的问题,请参考以下文章
C#中定义了一个DataTable,怎样求得表中的最大值,并返回对应的行和列的下标啊