Python新手问题 - 我无法弄清楚我的问题究竟是什么

Ter*_*nce 0 python

我是Python的新手,我一直在尝试用它制作一个斐波纳契程序.

def fib(n):
    print 'n =', n
    if n > 1:
        return n * fib(n - 1)
    else:
        print 'end of the line'
    return 1

n = raw_input('Input number: ')
int(n)
fib(n)
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此程序时,输入数字后出现以下错误:

输入数量:5

n = 5

Traceback(最近一次调用最后一次):

文件"fibonacci.py",第11行,in

fib(n)
Run Code Online (Sandbox Code Playgroud)

文件"fibonacci.py",第4行,在fib

return n * fib(n - 1)
Run Code Online (Sandbox Code Playgroud)

TypeError:不支持的操作数类型 - :'str'和'int'

如果我运行解释器并仅导入函数(后面没有代码),请提供n的值并使用值作为参数调用函数,它可以工作.

我尝试将输入转换为int,因为我认为这是一个字符串问题,但没有骰子.我真的不知道自己哪里出错了,所以如果你能够对这个问题有所了解,我们将不胜感激.

我想把问题标题改为特定的东西,但我真的不知道问题是什么.

Chr*_*res 6

你猜测,raw_input()返回一个字符串.但是,int(n)不会将n的值更改为整数,而是返回转换后的值.你需要这样做:

n = int(n)
Run Code Online (Sandbox Code Playgroud)

代替.