Python:为什么我的程序在一个接一个地插入片段时运行,而在全部插入时却不运行?
因此,我用Python创建了这个非常简单的paber石头剪刀游戏(对不起,字符串不是英文的) 不管怎样,我在空闲状态下运行它,当我像这样插入它时,它会工作:Python:为什么我的程序在一个接一个地插入片段时运行,而在全部插入时却不运行?,python,windows,python-2.7,Python,Windows,Python 2.7,因此,我用Python创建了这个非常简单的paber石头剪刀游戏(对不起,字符串不是英文的) 不管怎样,我在空闲状态下运行它,当我像这样插入它时,它会工作: 从随机导入随机输入-->输入 定义我的函数-->输入 调用我的函数-->回车 这样,它可以按预期运行 但当我把它们放在一起,然后按ENTER键时,它什么也不做,当我再次调用我的函数时,它说它没有定义。 另外,当我将它保存为.py并运行它时,它只会弹出0.5秒 我的代码是: from random import randint def myP
from random import randint
def myProgram():
kpk = raw_input("Kivi, paber või kaarid?")
random = randint(0,2)
result = ""
if kpk == "kivi":
kpk = 0
if random == 0:
result = "VIIK"
elif random == 1:
result = "Kivi < Paber --- KAOTASID"
else:
result = "kivi > kaarid --- VOITSID"
elif kpk == "paber":
kpk = 1
if random == 0:
result = "kivi < paber --- VOITSID"
elif random == 1:
result = "VIIK"
else:
result = "paber < kaarid --- KAOTASID"
elif kpk == "käärid":
kpk = 2
if random == 0:
result = "kivi > kaarid --- KAOTASID"
elif random == 1:
result = "paber > kaarid --- VOITSID"
else:
result = "VIIK"
else:
print "Sisend peab olema uks kolmest: Kivi, paber või kaarid"
myProgram()
print result
kas = raw_input("Kas soovite uuesti mangida? (Y/N)")
if kas == "Y" or kas == "y" or kas == "jah":
myProgram()
else:
print "Mang on läbi!"
myProgram()
来自随机导入randint
def myProgram():
kpk=原始输入(“Kivi,paber või kaandry?”)
random=randint(0,2)
result=“”
如果kpk==“kivi”:
kpk=0
如果random==0:
结果=“VIIK”
elif random==1:
结果=“Kivi卡兰---沃伊特”
elif kpk==“paber”:
kpk=1
如果random==0:
结果=“kiviKARAND---KAOTASID”
elif random==1:
结果=“paber>Kaandar---VOITSID”
其他:
结果=“VIIK”
其他:
打印“西森德·佩伯·奥莱马·乌克斯·科尔梅斯特:基维,帕伯·维卡兰”
我的计划()
打印结果
kas=原始输入(“是/否”)
如果kas==“Y”或kas==“Y”或kas==“jah”:
我的计划()
其他:
打印“läbi上的Mang!”
我的计划()
我猜这是您的问题的最低版本-
>>> def blah():
... return 1
... blah()
File "<stdin>", line 3
blah()
^
SyntaxError: invalid syntax
>>> blah()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'blah' is not defined
如果没有空格,就会出现语法错误,因为函数定义后没有换行符。一种方法(正如您已经观察到的)是分别复制粘贴函数和函数调用(并确保通过按enter键/在末尾添加新行来定义函数)。(我不确定这是否是python shell中的某种bug,但python 2.x和python 3.x都是这样)
请注意,这只是在将粘贴代码复制到shell时,而不是在将脚本保存为.py文件并运行它时,在将代码作为脚本运行时,则不需要换行符(尽管为了可读性,最好放在换行符中)。因此,我的代码似乎没有问题。它在空闲状态下运行得非常好,我运行->运行模块 尽管如此,RUN->pythonshell什么也不做
另外,我应该使用哪个程序来运行我的程序。现在,当我将它保存为test.py并运行它时,一个黑色窗口会弹出0.5秒,就是这样。默认情况下,它被设置为“Python”所有这些代码似乎都与您的实际问题无关,您是否可以将其简化为更简单的、仍然存在问题的代码,或者定义一个单行函数,然后调用它。您所说的“当我将它们放在一起,然后按ENTER键时”是什么意思?无论如何,如果我用python kpk.py运行你的程序,如果我删除字符串中的非ASCII字符,它运行得很好。我测试了你的程序,它运行得很好。同时,您的用户将运行程序,这是由您的块
造成的:打印“Sisend peab olema uks Kolmestt:Kivi,paber või Kaandry”myProgram()
如果他没有为Kivi输入正确的答案,他将被迫不回答多次,paber või Kaandry
。如果您在python shell中以交互方式键入代码,则这是正确的,但如果您将其保存在.py
文件中,则不需要换行符。@KlausPrinoth是的,是的,将其添加到了答案中。谢谢,我通过运行python test.py
从命令行测试了您的程序,其中test.py
代表您的程序。尝试运行命令行提示符(通过Win+R按钮->“cmd”->ENTER),以避免关闭窗口。谢谢!我对命令行很陌生,但这很有效!
def blah():
return 1
blah()