Python:在函数中使用变量(但变量应为用户输入)
我正试图编写一个小的hangman程序,我必须在其中使用这个函数(作业中明确说明了这一点)。它应该检查猜测的字母是否在单词中,如果是,则在正确的位置返回由*和猜测的字母组成的单词。然而,我不明白如果“letter”变量是用户输入的(他的猜测),我怎么能使用它,所以它实际上是在函数之外赋值的。我有点卡住了,如果有人能告诉我怎么做,我将不胜感激Python:在函数中使用变量(但变量应为用户输入),python,function,variables,Python,Function,Variables,我正试图编写一个小的hangman程序,我必须在其中使用这个函数(作业中明确说明了这一点)。它应该检查猜测的字母是否在单词中,如果是,则在正确的位置返回由*和猜测的字母组成的单词。然而,我不明白如果“letter”变量是用户输入的(他的猜测),我怎么能使用它,所以它实际上是在函数之外赋值的。我有点卡住了,如果有人能告诉我怎么做,我将不胜感激 def print_guessed(): global secret_word global letters_guessed wor
def print_guessed():
global secret_word
global letters_guessed
word = []
for i in range (0, len(secret_word)):
if letter == secret_word[i]: word.append(letter)
else: word.append('-')
word_str = ''.join(word)
return word_str
如果可以对函数进行更改,然后修改它的参数,即变量-
字母
def print_guessed(letter):
#do_stuff
并提供call语句中猜测的字母
print_guessed(letter)
如果可以对函数进行更改,然后修改它的参数,即变量-
字母
def print_guessed(letter):
#do_stuff
并提供call语句中猜测的字母
print_guessed(letter)
事实上,尽管我同意评论员的说法,这是一个非常不和谐的代码,但实际上您不需要修改函数来使其正常工作<代码>字母没有在函数中赋值,这意味着不需要在函数中声明为全局的:只要它在外部范围中定义,就可以在内部访问。实际上,尽管我同意评论者的观点,这是非常不和谐的代码,实际上,您不需要修改函数以使其工作<代码>字母未在函数中指定,这意味着不需要在函数中声明为全局:只要它在外部范围中定义,就可以在内部访问。编辑如果允许自由更改函数,则只需执行此操作
def print_guessed(letter):
global letters_guessed
letters_guessed.append(letter)
return ''.join(c if c in letters_guessed else '-'
for c in secret_word)
否则:
这是一个相当棘手的问题,因为一个函数甚至都没有做正确的事情,但我想我已经解决了
secret_word = "answer"
letters_guessed = []
letter = ''
def fix_print_guessed(func):
def wrapper(guess):
global letters_guessed
global letter
letter = guess
letters_guessed.append(letter)
return func()
return wrapper
@fix_print_guessed
def print_guessed():
global secret_word
global letters_guessed
word = []
for i in range (0, len(secret_word)):
if letter == secret_word[i]: word.append(letter)
else: word.append('-')
word_str = ''.join(word)
return word_str
found = len(secret_word) * '-'
while '-' in found:
guess = raw_input('enter a letter: ')
res = print_guessed(guess)
found = ''.join(c1 if c1 != '-' else c2
for c1, c2 in zip(found, res))
print found
如果允许您自由更改函数,请进行编辑,然后执行以下操作
def print_guessed(letter):
global letters_guessed
letters_guessed.append(letter)
return ''.join(c if c in letters_guessed else '-'
for c in secret_word)
否则:
这是一个相当棘手的问题,因为一个函数甚至都没有做正确的事情,但我想我已经解决了
secret_word = "answer"
letters_guessed = []
letter = ''
def fix_print_guessed(func):
def wrapper(guess):
global letters_guessed
global letter
letter = guess
letters_guessed.append(letter)
return func()
return wrapper
@fix_print_guessed
def print_guessed():
global secret_word
global letters_guessed
word = []
for i in range (0, len(secret_word)):
if letter == secret_word[i]: word.append(letter)
else: word.append('-')
word_str = ''.join(word)
return word_str
found = len(secret_word) * '-'
while '-' in found:
guess = raw_input('enter a letter: ')
res = print_guessed(guess)
found = ''.join(c1 if c1 != '-' else c2
for c1, c2 in zip(found, res))
print found
哎呀,这位教授是谁!?我的想法完全正确。如果你必须使用这个函数,并且不允许修改它,你就完蛋了。它至少会抛出一个
名称错误
,因为字母
在任何地方都没有定义。@Pyrce:真的吗?没什么问题吗?我不明白你为什么要把东西全球化;在函数中使用参数。@Pyrce:这太可怕了!嘿……等等……你是教授吗?哎呀——这位教授是谁!?我的想法完全正确。如果你必须使用这个函数,并且不允许修改它,你就完蛋了。它至少会抛出一个名称错误
,因为字母
在任何地方都没有定义。@Pyrce:真的吗?没什么问题吗?我不明白你为什么要把东西全球化;在函数中使用参数。@Pyrce:这太可怕了!嘿…等一下…你是教授吗?是的,我正要写那个。看来这也是唯一的办法了。你也可以重复一下你猜到的字母global。例如:对于猜出的字母中的字母:…
但是猜出的字母可能不是列表。如果是,那么每次程序都会检查从开始猜测的所有字母,这就是时间consuming@AswinMurugesh那是什么?复数形式表示某种集装箱,好吧,它也可能是一些猜测的字母计数。。。但话说回来,整个任务是非常模糊的是的,我正要写这个。看来这也是唯一的办法了。你也可以重复一下你猜到的字母global。例如:对于猜出的字母中的字母:…
但是猜出的字母可能不是列表。如果是,那么每次程序都会检查从开始猜测的所有字母,这就是时间consuming@AswinMurugesh那是什么?复数形式表示某种集装箱,好吧,它也可能是一些猜测的字母计数。。。但话说回来,整个任务是非常模糊的