2017-09-24 38 views
0

在理论值:game_start被调用,用户输入'easy'变量quiz_paragraph应承担的easy_paragprah为什么是我的变量设置自己“时,试图设置另一个变量包含字符串

值在现状:quiz_paragraph的值被设置为"

我可以验证user_difficulty被正确设置和被适当地供给到'easy'set_difficultyif语句运行但不会更改quiz_paragraph的值。

谁能告诉我我在这里失踪了什么?

# Easy Paragraph 
easy_paragraph = '''\n___1___ is a programming ___2___ used to solve simple and complex problems. ___1___ like 
many languages can be used to display a message to a user using ___3___. Try it sometime. 
To display this common message by typing ___3___ '___4___ World!' \n''' 

# Init Variables 
user_difficulty = "" 
quiz_paragraph = "" 

# Ask user difficulty 
def ask_difficulty(): 
    user_difficulty = raw_input("What difficulty level would you like? ") 
    return user_difficulty 

# Difficulty sets returned Paragraph 
def set_difficulty(difficulty): 
    if difficulty == "easy": 
     quiz_paragraph = easy_paragraph 
     return quiz_paragraph 
    else: 
     print '''Sorry, that is not a valid choice.''' 

# Start the game 
def game_start(): 
    set_difficulty(ask_difficulty()) 
    print quiz_paragraph 

# Game Start Test 
game_start() 
+0

为什么给它人downvote零倍的原因吗?你会认为他们会希望我们了解我们做错了什么? –

+3

不是你的贬低选民,而是1)摆脱道歉的段落,因为它没有增加任何信息,这将有助于有类似问题的未来游客或谁可能回答你的问题的人。 2)您可以通过显示您在本网站和其他网站上搜索类似问题所获得的具体结果来改进您的问题。我不是在谈论扔掉诸如“我到处搜索,什么也没找到”等线条,而是再次***具体的结果。这个网站希望你会做一个详尽的搜索*以前*询问,并且有很高的标准。 –

+3

同样没有人需要发表评论时,发布票或反对票通常导致几乎没有火焰战争。查看[meta site](https://meta.stackoverflow.com/questions/261173/how-do-we-avoid-downvotes-without-a-comment)以获得有关此主题的更多讨论,因为它被问了很多 –

回答

2

它看起来像你有一个范围问题。

quiz_paragraph变量在set_difficulty之内,与“全局”quiz_paragraph不一样。尽管它们目前共享相同的名称,但您可以将set_difficulty中的一个重命名为foo,并且您会得到相同的结果。

您需要将'global'quiz_paragraph设置为由set_difficulty返回的值,或者是game_start内更好的另一个局部变量。也就是说,

def game_start(): 
    quiz_paragraph = set_difficulty(ask_difficulty()) 
    print quiz_paragraph 

def game_start(): 
    my_difficulty = set_difficulty(ask_difficulty()) 
    print my_difficulty 
+0

谢谢。我没有意识到全球/本地是一个因素。就像一个快速的问题,以确保我明白。因此,一个函数中深度超过单个“级别”的变量就变成了局部变量?所以如果我想改变一个全局变量,我必须在函数/循环/等的第一个“层”中进行。 –

+1

正确。查看https://stackoverflow.com/a/292502/1290118以快速查看规则。 – jhenderson2099

+0

再次感谢您。感谢你帮助noob。现在阅读它。 –

相关问题