Python 2.7 我已经找到了我所需要的一切,并且有了一个;主要是;工作游戏

Python 2.7 我已经找到了我所需要的一切,并且有了一个;主要是;工作游戏,python-2.7,Python 2.7,我猜def检查有问题。这是我老师特别指定的格式。你们太棒了。谢谢你的帮助!!!!抱歉的格式,这是我第一次在这个网站 # # Global variables wrong_guesses = [] target_phrase = "" current_phrase = "" def clear_display(): for i in range(20): print "\n" def string_with_dashes(str): global

我猜def检查有问题。这是我老师特别指定的格式。你们太棒了。谢谢你的帮助!!!!抱歉的格式,这是我第一次在这个网站

# # Global variables    
wrong_guesses = []
target_phrase = ""
current_phrase = ""

def clear_display():
    for i in range(20):
        print "\n"

def string_with_dashes(str):    
    global target_phrase
    new_phrase = ""
    for i in str:
        if i.isalpha():
            new_phrase += "-"
        else:
            new_phrase += i
    return new_phrase

def check_guess(letter):    
    global current_phrase
    replacement_list = [""]
    for i in range(len(target_phrase)):
        if target_phrase[i] == letter:
            replacement_list[i] = target_phrase[i]
            current_phrase = replacement_list
            return current_phrase
        else:
            wrong_guesses.append(letter)
            return False

def process_input():  
    user_letter = raw_input("Guess a letter: ").upper()
    if user_letter in wrong_guesses:
        print "You already guessed that letter"
        user_letter = raw_input("Guess again : ")
    else:
         return check_guess(user_letter)

def one_turn():    
    global wrong_guesses     
    print "=================================================="
    print current_phrase
    print "Wrong guesses:", ' '.join(wrong_guesses)
    print "Guesses remaining:", (8 - len(wrong_guesses))
    display_robot(8 - len(wrong_guesses))
    print "String to guess:", current_phrase
    print "=================================================="
    process_input()
    print "\n\n"

def setup_phrase():    
    global target_phrase, current_phrase
    target_phrase = raw_input("Dear friend, enter a phrase for the user to guess: ").upper()
    current_phrase = string_with_dashes(target_phrase)

setup_phrase()
clear_display()

while True:
    one_turn()
    if len(wrong_guesses) > 7:
        print "GAME OVER! You Lose"
        breack
    if current_phrase == target_phrase:
        print "You WIN!!"
        break

(为什么stackoverflow不让我来修复你的代码?

我不确定你到底想做什么,但听起来你想创建一个字符串,让猜出来的字母替换猜出来的空格?试着这样做:

hidden_phrase = "abracadabra"
current_list = ["."]*len(hidden_phrase)

def check_guess(letter):
    for i in range(len(hidden_phrase)):
        if hidden_phrase[i] == letter:
            current_list [i] = hidden_phrase[i]

print("before", "".join(current_list ))
check_guess("a")
print("guess1", "".join(current_list))
check_guess("z")
print("guess2", "".join(current_list))
check_guess("b")
print("guess3", "".join(current_list))
输出:

before ...........
guess1 a..a.a.a..a
guess2 a..a.a.a..a
guess3 ab.a.a.ab.a
在Python中,字符串是不可变的,并且不能更新,因此对我来说,将“替换”字(带空格,我用
表示)保留为一个列表,并将其重新连接在一起显示似乎更容易

这两个全局变量不需要显式指定为
global
,因为该变量不在函数中赋值,只可访问

如果您希望有一个字符串
当前\u短语
,并对其进行更新,当然也有可能:

hidden_phrase = "abracadabra"
current_phrase = "."*len(hidden_phrase )

def check_guess(letter):
    global current_phrase
    i = -1
    while True:
        i = hidden_phrase.find(letter, i+1)
        if i<0:
            break
        current_phrase = current_phrase[0:i]+letter + current_phrase[i+1:]

print("before", current_phrase)
check_guess("a")
print("guess1", current_phrase)
check_guess("z")
print("guess2", current_phrase)
check_guess("b")
print("guess3", current_phrase)
hidden_phrase=“abracadabra”
当前_短语=“.”*len(隐藏_短语)
def检查猜测(字母):
全球时态
i=-1
尽管如此:
i=隐藏的短语。查找(字母,i+1)

如果我我不确定你到底想做什么,但听起来你想创建一个字符串,让猜出来的字母代替猜出来的空格?试着这样做:

hidden_phrase = "abracadabra"
current_list = ["."]*len(hidden_phrase)

def check_guess(letter):
    for i in range(len(hidden_phrase)):
        if hidden_phrase[i] == letter:
            current_list [i] = hidden_phrase[i]

print("before", "".join(current_list ))
check_guess("a")
print("guess1", "".join(current_list))
check_guess("z")
print("guess2", "".join(current_list))
check_guess("b")
print("guess3", "".join(current_list))
输出:

before ...........
guess1 a..a.a.a..a
guess2 a..a.a.a..a
guess3 ab.a.a.ab.a
在Python中,字符串是不可变的,并且不能更新,因此对我来说,将“替换”字(带空格,我用
表示)保留为一个列表,并将其重新连接在一起显示似乎更容易

这两个全局变量不需要显式指定为
global
,因为该变量不在函数中赋值,只可访问

如果您希望有一个字符串
当前\u短语
,并对其进行更新,当然也有可能:

hidden_phrase = "abracadabra"
current_phrase = "."*len(hidden_phrase )

def check_guess(letter):
    global current_phrase
    i = -1
    while True:
        i = hidden_phrase.find(letter, i+1)
        if i<0:
            break
        current_phrase = current_phrase[0:i]+letter + current_phrase[i+1:]

print("before", current_phrase)
check_guess("a")
print("guess1", current_phrase)
check_guess("z")
print("guess2", current_phrase)
check_guess("b")
print("guess3", current_phrase)
hidden_phrase=“abracadabra”
当前_短语=“.”*len(隐藏_短语)
def检查猜测(字母):
全球时态
i=-1
尽管如此:
i=隐藏的短语。查找(字母,i+1)

如果我我以前的回答是对你问题的第一个更一般的版本。您的
check_guess()
有几处问题。这里有一个固定版本:

def check_guess(letter):    
    global current_phrase
    replacement_list = list(current_phrase)
    found=False
    for i in range(len(target_phrase)):
        if target_phrase[i] == letter:
            replacement_list[i] = target_phrase[i]
            found = True
    if found:
        current_phrase = "".join(replacement_list)
    else:
        wrong_guesses.append(letter)
显示版本问题的注释:

def check_guess(letter):    
    global current_phrase
    replacement_list = [""] # list has only 1 element, can't assign above index zero
    for i in range(len(target_phrase)):
        if target_phrase[i] == letter:
            replacement_list[i] = target_phrase[i]
            current_phrase = replacement_list # assigning a list to what was previously a string
            return current_phrase # returns before checking 2nd character
        else:
            wrong_guesses.append(letter) # only the first character has been checked
            return False # returns False or current_phrase, inconsistent

同样在接近尾声时,您编写了
break
而不是
break
,很遗憾Python没有默认检查这些东西,而是等待您点击这一行。

我之前的回答是关于您问题的第一个更一般的版本。您的
check_guess()
有几处问题。这里有一个固定版本:

def check_guess(letter):    
    global current_phrase
    replacement_list = list(current_phrase)
    found=False
    for i in range(len(target_phrase)):
        if target_phrase[i] == letter:
            replacement_list[i] = target_phrase[i]
            found = True
    if found:
        current_phrase = "".join(replacement_list)
    else:
        wrong_guesses.append(letter)
显示版本问题的注释:

def check_guess(letter):    
    global current_phrase
    replacement_list = [""] # list has only 1 element, can't assign above index zero
    for i in range(len(target_phrase)):
        if target_phrase[i] == letter:
            replacement_list[i] = target_phrase[i]
            current_phrase = replacement_list # assigning a list to what was previously a string
            return current_phrase # returns before checking 2nd character
        else:
            wrong_guesses.append(letter) # only the first character has been checked
            return False # returns False or current_phrase, inconsistent

同样在接近尾声时,您编写了
break
而不是
break
,很遗憾Python没有默认检查这些内容,而是等待您点击这一行。

我如何告诉它确切地在哪里用len()替换字母?目标短语中的
i
仅返回
True
False
来告诉您
目标短语是否包含
i
。您需要使用其他工具,例如
find()
或迭代字符串以找到替换字母的位置。如何告诉它在何处使用len()替换字母?目标短语中的
i
仅返回
True
False
来告诉您
目标短语是否包含
i
。您需要使用其他工具,例如
find()
或迭代字符串以找到替换字母的位置。感谢您的回复。我还是有麻烦。这是我的全部代码。老师给了我们这些特定的def函数。如何以正确的格式发布代码?它只是把它放在那里的段落??抱歉,谢谢你的帮助。你不能在评论中发布代码块。改为编辑问题。谢谢您的回复。我还是有麻烦。这是我的全部代码。老师给了我们这些特定的def函数。如何以正确的格式发布代码?它只是把它放在那里的段落??抱歉,谢谢你的帮助。你不能在评论中发布代码块。改为编辑问题。非常感谢!!!!我已经为此工作了两天,快发疯了!!作为一名机械师,我从未想过编码会如此难学。你让我的日子过得很开心,谢谢你的帮助和耐心!!!没问题,是的,一开始很难-你必须准确地理解每一行代码在做什么,但是通过练习你会达到目的的。非常感谢!!!!我已经为此工作了两天,快发疯了!!作为一名机械师,我从未想过编码会如此难学。你让我的日子过得很开心,谢谢你的帮助和耐心!!!没问题,是的,一开始很难——你必须准确地理解每一行代码都在做什么,但是通过练习你会达到目的的。