Python 如何使函数在没有参数的情况下工作?
例如,如果我想输入一个类似“duck”的字符串,我需要函数来拼写: dPython 如何使函数在没有参数的情况下工作?,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) 我试图让上面的代码工作,但我遇到了麻烦,因为我尝试的每件事都会提示一条与未定义变量有关的错
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
,我相信:)@javierbusziinput
和print('stuff')
在python2中都是有效的,所以您对OP的代码做了一个假设,并告诉我我的代码不会基于这个假设运行。让OP澄清这些事情可能更好…@Javierbuski发生错误是因为您没有在输入字符串周围加引号,这与需要导入input
函数无关。您如何知道它是Python 3?:)实际上,“但我遇到了麻烦,因为我尝试的每件事都会提示一条与未定义变量有关的错误消息”,这让我想起了在Python2;中使用input
而不引用字符串时出现的错误。)@rofls是的,你会在2中得到一个名称错误,输入与OP描述的错误非常相似。是的。OP确实提到了一个错误,但我认为它更像是未定义的n
。在OP返回之前很难说如果OP引用了字符串,那么2将在处为赋值前引用的变量(n)的范围(len(n))
中的n引发一个UnboundLocalError。