我正在练习"思考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
我认为应该存在与使用的函数参数有关的问题。任何帮助将不胜感激。
答案 0 :(得分:1)
这可能会更好:
def apple(fruit):
for letter in fruit[::-1]:
print letter
apple('banana')
这可以通过反向索引字符串来实现,这是一个内置的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 variable
和Local variables
请完成this
在Python中,仅在函数内引用的变量是隐式全局变量。如果在任何地方为变量分配了新值 在函数体内,它被认为是一个本地的。如果是变量 在函数内部分配了一个新值,变量是 隐式本地,您需要明确地将其声明为全局。