Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决这个Python变量问题?_Python_Variables - Fatal编程技术网

如何解决这个Python变量问题?

如何解决这个Python变量问题?,python,variables,Python,Variables,好的,如果您在Python中运行下面的代码,它只打印问题变量的第一个字母,而其余的则打印得很好。只有在Python脚本中包含for循环函数时,才会发生这种情况。有没有办法解决这个问题,让我把整个问题都打印出来 import random global nouns global verbs global question nouns =["website","browser","server","printer","computer","disc","sof

好的,如果您在Python中运行下面的代码,它只打印问题变量的第一个字母,而其余的则打印得很好。只有在Python脚本中包含for循环函数时,才会发生这种情况。有没有办法解决这个问题,让我把整个问题都打印出来

    import random
    global nouns
    global verbs
    global question
    nouns =["website","browser","server","printer","computer","disc","software","desktop","a internet connection","the internet","site","forum","smf forum","phpbb forum","money making website","money making blog","firefox","chrome","opera","",""]
    verbs = ["cosntruct","build","create","design","update","reconstruct","clean","fix","repair","browse","discover","formualte","form","plan"]
    question = ["How do I","How would I", "how do i", "how would i", "what is a", "what is the", "how would i", "how should i", "when does a", "When does a", "How should I"]


    def q_gen():
       global nouns
       global verbs
       global question
       noun_pick = random.choice(nouns)
       verb_pick = random.choice(verbs)
       question = random.choice(question)
       create = question+" "+verb_pick+" "+noun_pick+"?"
       print create

    num_count = 0
    for num_count in range(1, 100):
       num_count=num_count+1
       q_gen()

发生这种情况的原因是,您正在使用此行的
question
值之一覆盖全局变量
question

question = random.choice(question)
这意味着发生以下情况:

question = [...] # question is a list of strings
question = random.choice(question) # question is a single string
question = random.choice(question) # question is a character from that string
解决方案是将变量名替换为其他名称:

question_pick = random.choice(question)
create = question_pick+" "+verb_pick+" "+noun_pick+"?"

关于文体的几点注记 您可以对代码进行许多改进。这些更改可以提高可读性,提高性能,并使代码更加地道

  • 声明变量。这不是在Python中完成的。当你给一个变量赋值时,它就开始存在了。这包括语句的

    global a # Unnecessary and dangerous
    a = 0
    
  • 迭代。当您在…中对x说
    时,您正在一次又一次地执行一组语句。每次查看套件时,
    x
    都会分配给下一项。您无需自行分配或递增
    x

  • Globals.

    • 您不需要它们。当您使用
      name=…
      时,您正在创建一个模块级变量。每个变量在模块中的任何地方都可以访问(即,在当前的.py文件中)

    • 它们是危险的。如果其他模块正在使用名为
      name
      的变量,您可能会遇到严重的意外。如果您计划进一步开发此代码,请记住这一点

  • 字符串格式。方法是创建一个模板,然后将标记放在希望插入值的位置。
    %s
    标记的意思是“将下一个变量解释为字符串并放在这里”

  • 样式。Python有一个名为的样式指南。确保您的代码符合PEP8,保持可读性,并使其看起来更类似于其他Python代码。例如,运算符应该由一个空格包围,逗号后应该有一个空格,等等


发生这种情况是因为您正在用此行的
question
值之一覆盖全局变量
question

question = random.choice(question)
这意味着发生以下情况:

question = [...] # question is a list of strings
question = random.choice(question) # question is a single string
question = random.choice(question) # question is a character from that string
解决方案是将变量名替换为其他名称:

question_pick = random.choice(question)
create = question_pick+" "+verb_pick+" "+noun_pick+"?"

关于文体的几点注记 您可以对代码进行许多改进。这些更改可以提高可读性,提高性能,并使代码更加地道

  • 声明变量。这不是在Python中完成的。当你给一个变量赋值时,它就开始存在了。这包括语句的

    global a # Unnecessary and dangerous
    a = 0
    
  • 迭代。当您在…中对x说
    时,您正在一次又一次地执行一组语句。每次查看套件时,
    x
    都会分配给下一项。您无需自行分配或递增
    x

  • Globals.

    • 您不需要它们。当您使用
      name=…
      时,您正在创建一个模块级变量。每个变量在模块中的任何地方都可以访问(即,在当前的.py文件中)

    • 它们是危险的。如果其他模块正在使用名为
      name
      的变量,您可能会遇到严重的意外。如果您计划进一步开发此代码,请记住这一点

  • 字符串格式。方法是创建一个模板,然后将标记放在希望插入值的位置。
    %s
    标记的意思是“将下一个变量解释为字符串并放在这里”

  • 样式。Python有一个名为的样式指南。确保您的代码符合PEP8,保持可读性,并使其看起来更类似于其他Python代码。例如,运算符应该由一个空格包围,逗号后应该有一个空格,等等


此行修改全局变量:

 question = random.choice(question)
在第一次之后,random.choice被赋予一个字符串而不是一个列表,因此它随机选择一个字母。从那时起,random.choice被赋予一个字符串,因此它总是使用相同的字母

发生此错误的原因是您不必要地使用了
全局
。在没有全局变量的情况下编写它会导致编译错误,因为问题被修改了

以下是不带
global
的代码:

import random
nouns =["website","browser","server"]
verbs = ["construct","build","create"]
question = ["How do I","How would I", "how do i"]

def q_gen():
    noun_pick = random.choice(nouns)
    verb_pick = random.choice(verbs)
    question_pick = random.choice(question)
    create = question_pick+" "+verb_pick+" "+noun_pick+"?"
    print create

for num_count in range(1, 100):
    q_gen()

此行修改全局变量:

 question = random.choice(question)
在第一次之后,random.choice被赋予一个字符串而不是一个列表,因此它随机选择一个字母。从那时起,random.choice被赋予一个字符串,因此它总是使用相同的字母

发生此错误的原因是您不必要地使用了
全局
。在没有全局变量的情况下编写它会导致编译错误,因为问题被修改了

以下是不带
global
的代码:

import random
nouns =["website","browser","server"]
verbs = ["construct","build","create"]
question = ["How do I","How would I", "how do i"]

def q_gen():
    noun_pick = random.choice(nouns)
    verb_pick = random.choice(verbs)
    question_pick = random.choice(question)
    create = question_pick+" "+verb_pick+" "+noun_pick+"?"
    print create

for num_count in range(1, 100):
    q_gen()

别忘了把最后一行的
question
改成
question\u pick
:)啊,面包屑。谢谢艾尔达拉提斯和卡尔。我甚至特意把那一行抄了出来,这样我就有机会修改了。别忘了把最后一行的
question
改成
question\u pick
:)啊,面包屑。谢谢艾尔达拉提斯和卡尔。我甚至特意把这句话抄了出来,这样我就有机会修改它。我很感兴趣,并运行了脚本。其中有些是金子。“我应该如何清理互联网?”事实上,我应该如何清理互联网?我很感兴趣并运行了脚本。其中有些是金子。“我应该如何清洁互联网?”事实上,我应该如何清洁互联网?