Discuss / Python / 请教!NameError: name 'A' is not defined

请教!NameError: name 'A' is not defined

Topic source

为什么我输入move(4,A,B,C)的时候报错NameError: name 'A' is not defined

是不是需要在函数文件里面定义参数的类型,像之前我看过别的人作业写a=float(input('a='))这种的

那我这时候需要怎么定义作业里面这个a啊。

补充 我输入数字就不会报错,比如输入move(1,2,3,4) 会有结果2 --> 4

move(4,A,B,C)

move(4, A, B, C)

,, 问题

谢谢回答,但是这个是我描述问题的时候的错误,在cmd里面应用的时候我都是打英文的逗号,的,应该不是这个错误。补充函数就是以下

def move(n, a, b, c):

    if n == 1:

        print('move', a, '-->', c)

    else:

        move(n-1, a, c, b)

        move(1, a, b, c)

        move(n-1, b, a, c)

这move(4, A, B, C)代码在网页没问题,但是在cmd的Python里面就有报错

请问大家知道有和cmd一样能有Python模式的软件吗

这个网站的里面只能测试作业对不对,我一般都用cmd

但是cmd里面感觉太奇怪了,有些一模一样的代码换个文件名运行可以,换别的名字就报错了。

冰茶71_350

#5 Created at ... [Delete] [Delete and Lock User]

move(4, 'A', 'B', 'C')  

楼主好好看下区别,网页上可能廖大做过处理,或是其他什么原因,但是move(4, A, B, C)意味着

a=A, b=B, c=C, 这是将一个变量赋值给另一个变量,A变量本身并没有值,所以,如果你用move(n, A, B, C),

可以在调用函数之前先对A,B,C赋值,但是如果想达到网页同样的效果,还是在传入参数的时候就直接传入字符串就好啦

冰茶71_350

#6 Created at ... [Delete] [Delete and Lock User]

In [23]: move(4, 'A', 'B', 'C') 

move A --> B

move A --> C

move B --> C

move A --> B

move C --> A

move C --> B

move A --> B

move A --> C

move B --> C

move B --> A

move C --> A

move B --> C

move A --> B

move A --> C

move B --> C

这是赋值以后的

In [24]: A = 1                                                                                                          

In [25]: B = 2                                                                                                          

In [26]: C = 3                                                                                                          

In [27]: move(2, A, B, C)                                                                                               

move 1 --> 2

move 1 --> 3

move 2 --> 3

回复楼上,明白了,原来定义为字符串直接加引号就行了,谢谢指教啊


  • 1

Reply