Python:为字符串传递函数参数

时间:2014-07-18 18:17:37

标签: python

我正在练习"思考Python",练习8.1:

"编写一个以字符串作为参数的函数,并向后显示字母,每行一个。"

我能够通过使用香蕉作为例子来打印每行的每个字母。

index = 0
fruit = "banana"
while index < len(fruit):
    letter = fruit[len(fruit)-index-1]
    print letter
    index = index + 1

但是,我想将情况概括为任何输入词,我遇到了问题,我的代码是

index = 0
def apple(fruit):
    while index < len(fruit):
        letter = fruit[len(fruit)-index-1]
        print letter
        index = index + 1

apple('banana')

相应的错误是:

Traceback (most recent call last):
  File "exercise8.1_mod.py", line 21, in <module>
    apple('banana')
  File "exercise8.1_mod.py", line 16, in apple
    while index < len(fruit):
UnboundLocalError: local variable 'index' referenced before assignment

我认为应该存在与使用的函数参数有关的问题。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

这可能会更好:

def apple(fruit):
    for letter in fruit[::-1]:
        print letter

apple('banana')

这可以通过反向索引字符串来实现,这是一个内置的python函数,称为切片。

Reverse a string in Python

答案 1 :(得分:0)

在使用之前,您需要为index分配一个值。

def apple(fruit):
    index = 0  # assign value to index
    while index < len(fruit):
        letter = fruit[len(fruit)-index-1]
        print letter
        index = index + 1
apple("peach")
h
c
a
e
p

答案 2 :(得分:0)

由于您在方法中访问了一个全局变量并尝试更改其值

,您的程序出错了
index = 0
def apple(fruit):
    .....
    index = index + 1
    ....    
apple('banana')

这会给你错误UnboundLocalError: local variable 'index' referenced before assignment

但如果你给出

def apple(fruit):
        global index
        .....
        index = index + 1
        .... 

这会产生正确的结果

在python中我们有Global variableLocal variables

请完成this

  

在Python中,仅在函数内引用的变量是隐式全局变量。如果在任何地方为变量分配了新值   在函数体内,它被认为是一个本地的。如果是变量   在函数内部分配了一个新值,变量是   隐式本地,您需要明确地将其声明为全局。