然后将变量设置为列表中的变量,并返回该列表
我只能在函数没有多次运行的情况下获取返回的值
关于我可能做错了什么有什么提示吗
def randPlaceComputerSubmarine():
count = 0
stopPlacement = False
print("Placing Computer Submarine")
PC_subV1 = 0
PC_subH1 = 0
PC_subV2 = 0
PC_subH2 = 0
PC_subV3 = 0
PC_subH3 = 0
C_dir = randint(1,2)
if C_dir == 1:
C_dir = "ns"
else:
C_dir = "ew"
if C_dir == 'ew':
C_subH = randint(0,7)
C_subV = randint(0,9)
PC_subH1 = C_subH + 0
PC_subH2 = C_subH + 1
PC_subH3 = C_subH + 2
PC_subV1 = C_subV
PC_subV2 = C_subV
PC_subV3 = C_subV
if C_dir == 'ns':
C_subH = randint(0,9)
C_subV = randint(0,7)
PC_subH1 = C_subH
PC_subH2 = C_subH
PC_subH3 = C_subH
PC_subV1 = C_subV
PC_subV2 = C_subV + 1
PC_subV3 = C_subV + 2
print("C_subV1, C_subH1 = ",PC_subV1,",",PC_subH1)
print("C_subV2, C_subH2 = ",PC_subV2,",",PC_subH2)
print("C_subV3, C_subH3 = ",PC_subV3,",",PC_subH3)
if grid[PC_subV1][PC_subH1] == "*":
print("Ship already placed there.(1) Select another position.")
stopPlacement = True
C_Submarine = []
randPlaceComputerSubmarine()
elif grid[PC_subV2][PC_subH2] == "*":
print("Ship already placed there.(2) Select another position.")
stopPlacement = True
C_Submarine = []
randPlaceComputerSubmarine()
elif grid[PC_subV3][PC_subH3] == "*":
print("Ship already placed there.(3) Select another position.")
stopPlacement = True
C_Submairine = []
randPlaceComputerSubmarine()
# if (grid[C_subV1][C_subH1] == "*") or (grid[C_subV2][C_subH2] == "*") or (grid[C_subV3][C_subH3] == "*"):
# randPlaceComputerSubmarine(grid)
# else:
# if stopPlacement == False:
while (stopPlacement == False) and (count <1):
C_Submarine = []
count= count + 1
C_subV1 = PC_subV1
C_subH1 = PC_subH1
C_subV2 = PC_subV2
C_subH2 = PC_subH2
C_subV3 = PC_subV3
C_subH3 = PC_subH3
grid[C_subV1][C_subH1] = "*"
grid[C_subV2][C_subH2] = "*"
grid[C_subV3][C_subH3] = "*"
print(C_subV1)
print(C_subH1)
print(C_subV2)
print(C_subH2)
print(C_subV3)
print(C_subH3)
C_Submarine = [C_subV1, C_subH1, C_subV2, C_subH2, C_subV3, C_subH3]
print (C_Submarine)
return C_Submarine
程序输出
C_bsV1, C_bsH1 = 8 , 1
C_bsV2, C_bsH2 = 8 , 2
C_bsV3, C_bsH3 = 8 , 3
C_bsV4, C_bsH4 = 8 , 4
C_bsV5, C_bsH5 = 8 , 5
Place Aircraft Carrier
Place sub
place destroyer
Place Cruiser
Placing Computer Aircraft Carrier
C_acV1, C_acH1 = 6 , 4
C_acV2, C_acH2 = 6 , 5
C_acV3, C_acH3 = 6 , 6
C_acV4, C_acH4 = 6 , 7
6
4
6
5
6
6
6
7
[6, 4, 6, 5, 6, 6, 6, 7]
Placing Computer Submarine
C_subV1, C_subH1 = 6 , 7
C_subV2, C_subH2 = 7 , 7
C_subV3, C_subH3 = 8 , 7
Ship already placed there.(1) Select another position.
Placing Computer Submarine
C_subV1, C_subH1 = 8 , 7
C_subV2, C_subH2 = 8 , 8
C_subV3, C_subH3 = 8 , 9
8
7
8
8
8
9
[8, 7, 8, 8, 8, 9]
Traceback (most recent call last):
File "/Users/JLach/Desktop/Battleship10.py", line 1607, in <module>
main(grid) File "/Users/JLach/Desktop/Battleship10.py", line 187, in main
getUserInput(grid) File "/Users/JLach/Desktop/Battleship10.py", line 1211, in getUserInput
C_subV1, C_subH1, C_subV2, C_subH2, C_subV3, C_subH3 = randPlaceComputerSubmarine() TypeError: 'NoneType' object is not iterable
>>>
看起来您希望上述
randPlaceComputerSubmarine
调用的结果由第一个randPlaceComputerSubmarine
调用返回。如果是这样,您需要显式返回它当你再次出现时,你就不会再回来了。我怀疑如果你把
randPlaceComputerSubmarine()
改成return randPlaceComputerSubmarine()
,你会得到正确的结果。当您只调用函数时,您并没有对结果做任何处理,即使您调用的函数返回了某些内容,您也不会使用当前代码在函数的原始实例中返回它相关问题 更多 >
编程相关推荐