我无法理解Python中的这种异常现象

2024-06-13 03:36:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果尝试更改全局声明数组中的元素,我将在以下代码中获得所需的结果:

a = [['a','b','c'], ['d','e','f'], ['g','h','i']]


for r in a:
    for c in r:
       print(c,end = " ")
    print()
print()
def changeValue(ch):
   a[0][0]=ch
ch=input("Please enter a character\n")
changeValue(ch)
for r in a:
    for c in r:
       print(c,end = " ")
    print()
print()

但是在下面的代码中,我没有得到期望的结果,即[0][0]处的元素没有改变

a = [['a','b','c'], ['d','e','f'], ['g','h','i']]
for r in a:
    for c in r:
        print(c,end = " ")
    print()
print()
def enterSymbol(pos,ch):
    if pos==1:
        a[0][0]=ch
    elif pos==2:
        a[0][1]=ch
pos=input("Enter a position\n")

enterSymbol(pos,'X')
for r in a:
    for c in r:
        print(c,end = " ")
    print()

请帮忙


Tags: 代码inpos声明元素forinputdef
3条回答

Python将条目输入理解为字符,而不是整数。 例如,您可以将if pos==1:替换为ifpos=='1':,这样就可以了

input函数返回字符串,而不是数字:

>>> pos=input("Enter a position\n")
Enter a position
1
>>> pos
'1'
>>> 

所以这个条件,

if pos==1:

这从来都不是真的

解决问题的一种方法是将代码更改为:

pos=int(input("Enter a position\n"))

输入中的位置始终是字符串。这就是为什么它不会进入enterSymbol中的if条件(与int相比的字符串)

pos = int(input("Enter a position"))

将其替换为pos,它应该可以工作

相关问题 更多 >