【问题标题】:Python IDLE won't import script (gives error) but script works fine from textwranglerPython IDLE 不会导入脚本(给出错误),但脚本在 textwrangler 中工作正常
【发布时间】:2014-12-05 05:45:42
【问题描述】:

我有一个可以在 TextWrangler 中完美运行的 .py 脚本,但当我尝试导入终端或 IDLE 时将无法正常工作。我不断收到此错误消息:

Traceback(最近一次调用最后一次):

“模块”中的文件“stdin”第 1 行
文件“c.py”,第 1 行
bookic08ic14x.is32

我不知道这意味着什么。在进行导入之前,我总是确保我在正确的目录中。

我的代码如下所示:

def choice():
import random
print "This program decides who has to do the job"
n = input("How many people are there?:")
people = []
for i in range (1, n+1):
    subject = raw_input("Person %s:" % i)
    people.append(subject)
print random.choice(people)

选择()

另外,如果有人对改进此代码有任何建议,我愿意接受!

【问题讨论】:

    标签: python import python-idle textwrangler


    【解决方案1】:

    您应该先导入random 模块,然后再定义函数。

    import random
    def choice():
        print ("This program decides who has to do the job")
        n = input("How many people are there?:")
        people = []
        while len(people)<int(n):
            subject=input("Enter the names: ")
            people.append(subject)
        x=random.choice(people)
        return x
    print (choice())
    

    这样更好,如果你不在函数中使用return,那么你就不能在任何你想要的地方使用你的函数。例如,通过这种方式,您可以将您的函数与.format 方法一起使用。 这个运行完美,我检查了。

    【讨论】:

    • 如果它解决了您的问题,请检查它作为正确答案。
    • 效果很好,谢谢!我只是在 while 循环中将输入更改为 raw_input,这样我就不会在 IDLE 中将每个名称都变成一个字符串。
    • 您必须使用 2.x。 3.x 输入 == 2.x 原始输入。在极少数情况下,将 import 放在函数中是合适的,但这样做通常是纯粹的浪费。 PEP 8 和我建议在赋值语句中的 '=' 周围有空格(但在函数调用中 arg=value 没有空格)。使代码更易于阅读。
    猜你喜欢
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2021-05-09
    • 2022-11-13
    • 1970-01-01
    • 2016-08-11
    • 2012-03-20
    相关资源
    最近更新 更多