【发布时间】:2022-01-19 21:55:00
【问题描述】:
我有以下程序,其中用户输入一个数字,一个 X 放置在矩阵上的位置。
出于教学目的,我正在尝试仅使用选择来解决它(目前)。
您会注意到它适用于除 0 以外的所有数字。最后一个 elif 适用于小于 1 的数字 - 例如。 0. 代码告诉它把 X 放在位置 0,0,但它把它放在了 7。
发生了什么事? https://trinket.io/python/987e8c46d7
注意,我只添加了最后一个 elif,因为第一个 elif 也应该处理小于 7 的数字,但它不起作用。我该如何使用相同的结构来处理这个问题。
然后我想在教学的基础上查看 if 语句并查看重复区域或不需要的复杂性,以表明它可以进一步简化以获得更优雅的代码。
def matrix():
print("---The Matrix---")
#create a 1d array of 7 stars
matrix1=[
["*","*","*","*","*","*","*"],
["*","*","*","*","*","*","*"],
["*","*","*","*","*","*","*"],
["*","*","*","*","*","*","*"],
["*","*","*","*","*","*","*"],
["*","*","*","*","*","*","*"],
["*","*","*","*","*","*","*"]
]
#user enters a number
number=int(input("Enter number:"))
#you are always finding the remainder on each row to place the X
remainder=number%7
#an 'X' is placed in the position of the number
#remainder-1 because we start at index 0
if number<=7:
matrix1[0][remainder-1]="X"
elif number>7 and number<15:
matrix1[1][remainder-1]="X"
elif number>14 and number<22:
matrix1[2][remainder-1]="X"
elif number>21 and number<29:
matrix1[3][remainder-1]="X"
elif number>28 and number<36:
matrix1[4][remainder-1]="X"
elif number>35 and number<43:
matrix1[5][remainder-1]="X"
elif number>42 and number<50:
matrix1[6][remainder-1]="X"
elif number<1:
matrix[0][0]=="X"
#the updated matrix is printed.
print(matrix1)
matrix()
【问题讨论】:
-
您的 if-elif 语句应该是从最低数字到最高数字。另外,
matrix[0][0]应该是matrix1[0][0]
标签: python arrays list if-statement 2d