如何解决我代码中的一个函数正在更改给定变量的值
hand = input("Enter your hand :")
handList = hand.split()
for i in range(0,len(handList)):
handList[i] = int(handList[i])
handList.sort()
backup = handList
print(backup)
backup = simplify(backup)
sNumColor = sameNumber(backup)
print(f'List : {handList}')
print(f'Backup: {backup}')
sStraightNum = straightNumber(handList)
print("Different color but same number :",sNumColor[0])
print("Different number but same color (straight) :",sStraightNum[0],"New array is :",sStraightNum[1])
在“ sNumColor = sameNumber(backup)”行中,它同时更改了handList和备份变量,我不知道为什么会这样。这是功能。
def sameNumber(array):
array = simplify(array)
sameN = {'1': 0,'2': 0,'3': 0,'4': 0,'5': 0,'6': 0,'7': 0,'8': 0,'9': 0,'10': 0,'11': 0,'12': 0,'13': 0}
result = 0
for n in range(1,14):
for item in array:
if item == n:
sameN[f'{n}'] += 1
for n in range(1,14):
if sameN[f'{n}'] >= 3:
result += 1
elif 52 in array:
if sameN[f'{n}'] == 2:
result += 1
array.remove(52)
return result,array
def simplify(array):
for n in range(len(array)):
array[n] = int(array[n])
for n in range(len(array)):
if 0 <= int(array[n]) <= 12:
array[n] = int(array[n]) + 1
elif 13 <= int(array[n]) <= 25:
array[n] = int(array[n]) - 12
elif 26 <= int(array[n]) <= 38:
array[n] = int(array[n]) - 25
elif 39 <= int(array[n]) <= 51:
array[n] = int(array[n]) - 38
return array
在简化函数中,如果数组中的项目的值小于13等,它将更改数组中的项目的值。(这是关于具有13种相同颜色的4种不同颜色的桌上游戏。0-12为黄色0- 1-2-3 ....- 13,而13-25是黑色1-2-3 ....- 13)有人可以告诉我为什么这个sameNumber()函数更改了2个变量,而没有我给出一个到功能上。
解决方法
您的代码行:
backup=handList
没有按照您的期望去做。 :)这基本上分配了一个新变量backup
指向相同的变量handList
,因此现在它们都引用内存中的SAME对象。您似乎想要的是handList
的副本,因此您应该使用:
backup=handList[:]
这是创建新数据结构(基本上是整个列表的一个切片)并将其返回到新变量名的一种廉价且简便的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。