Python 如何使函数在没有参数的情况下工作?

Python 如何使函数在没有参数的情况下工作?,python,function,python-3.x,parameters,definition,Python,Function,Python 3.x,Parameters,Definition,例如,如果我想输入一个类似“duck”的字符串,我需要函数来拼写: d u c k 但是如果没有参数,我怎么做呢 def spell(): '''Returns every character in a word or phrase''' print(input('Enter a word: ')) for n in range(len(n)): print(n) 我试图让上面的代码工作,但我遇到了麻烦,因为我尝试的每件事都会提示一条与未定义变量有关的错

例如,如果我想输入一个类似“duck”的字符串,我需要函数来拼写:

d
u
c
k

但是如果没有参数,我怎么做呢

def spell():
    '''Returns every character in a word or phrase'''
    print(input('Enter a word: '))
    for n in range(len(n)):
        print(n)

我试图让上面的代码工作,但我遇到了麻烦,因为我尝试的每件事都会提示一条与未定义变量有关的错误消息。我应该如何更改代码?

您做了一些错误的事情

def spell():
    '''Returns every character in a word or phrase'''
    word = raw_input('Enter a word: ')
    for i in word:
        print(i)

如果您使用的是Python3,则必须将
raw\u input
更改为
input
,因为
input
在Python3中不存在,其工作原理类似于
raw\u input

另一种使用
str.join
-

def spell():
    '''Returns every character in a word or phrase'''
    print('\n'.join(input('Enter a word: ')))
你的问题是:

for n in range(len(n))
具体的问题是,在这一点上,
n
尚未赋值,因此虽然它作为迭代器(
for n
)是有效的,但它在语句的
len(n)
部分失败

解决方法是首先确保您为该变量赋值,或者在有效对象上使用迭代器,如:

def spell():
    '''Returns every character in a word or phrase'''
    n = input('Enter a word: ')   # assign the input to 'n' 
    for n in range(len(n)):
        print(n)
(我可能会使用不同的变量名,因为对迭代器使用相同的名称和输入可能会造成混淆)

或者你可以:

def spell():
    print [n for n in range(len(input('Enter a word: ')))]
    """
    *for python 2.x:
       print [n for n in range(len(raw_input('Enter a word: ')))]
    *to return a list of the letters, do:
       return [n for n in range(len(raw_input('Enter a word: ')))]
    """

对于范围内的n(len(原始输入('Enter a word:'))
@zero添加python-3.x标记很好,但是您不需要添加“我当前正在使用python 3”行。标记本身就足够了。@Javierbuszi你怎么知道OP在使用Python3?他/她使用了
input()
而不是
raw\u input()
print()
而不是
print'stuff here'
实际上,@DavidZemens,
raw\u input
在Python3中变成了
input
,我相信:)@javierbuszi
input
print('stuff')
在python2中都是有效的,所以您对OP的代码做了一个假设,并告诉我我的代码不会基于这个假设运行。让OP澄清这些事情可能更好…@Javierbuski发生错误是因为您没有在输入字符串周围加引号,这与需要导入
input
函数无关。您如何知道它是Python 3?:)实际上,“但我遇到了麻烦,因为我尝试的每件事都会提示一条与未定义变量有关的错误消息”,这让我想起了在Python2;中使用
input
而不引用字符串时出现的错误。)@rofls是的,你会在2中得到一个名称错误,输入
与OP描述的错误非常相似。是的。OP确实提到了一个错误,但我认为它更像是未定义的
n
。在OP返回之前很难说如果OP引用了字符串,那么2将在
处为赋值前引用的变量(n)的范围(len(n))
中的n引发一个UnboundLocalError。