Python:为什么我的程序在一个接一个地插入片段时运行,而在全部插入时却不运行?

2024-09-27 18:08:04 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我用Python创建了这个非常简单的paber石头剪刀游戏(对不起,字符串不是英文的)。你知道吗

不管怎样,我在空闲状态下运行它,当我这样插入它时,它就工作了:

  1. 从随机导入randint-->;输入
  2. 定义我的函数-->;回车
  3. 调用我的函数-->;回车

这样它就按预期运行了。你知道吗

但是当我把它们放在一起,然后按回车键,它什么也不做,当我再次调用我的函数时,它说它没有定义。 另外,当我将它保存为.py并运行它时,它只会弹出0.5秒。你知道吗

我的代码是:

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()

Tags: 函数gtifrandomresultelserandintelif
2条回答

我猜这是你问题的最低版本-

>>> 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

在pythonshell/IDLE中,您需要在一个块结束后输入一个换行符(空行),这样python就可以解释这个块(这对任何块都有效,比如函数定义、循环、with块等)。你知道吗

在上面,当我复制和粘贴代码时-

def blah():
    return 1
blah()

如果没有空格,就会出现语法错误,因为函数定义后没有换行符。一种方法(正如您已经观察到的)是分别复制粘贴函数和函数调用(并确保通过按enter键/在末尾添加新行来定义函数)。(我不确定这是否是pythonshell中的某种bug,但python2.x和python3.x都是这样)。你知道吗

请注意,只有将代码复制粘贴到shell时,才需要这样做,而不是将脚本保存为.py文件并运行它时,如果将代码作为脚本运行时,则不需要换行符(不过最好将它们放在可读性方面)。你知道吗

看来我的密码没问题。在空闲状态下,它运行得非常好,我运行->;运行模块

不过,RUN->;pythonshell什么也不做。你知道吗

另外,我应该用哪个程序来运行我的程序。现在,当我把它保存为测试.py运行它,一个黑色窗口弹出0.5秒,就这样。默认设置为“Python”

相关问题 更多 >

    热门问题