0

对不起,我只是python语言的初学者,我在这个问题上卡住了很长时间。实际上,我想通过创建一个降序和升序模块来对用户输入的列表进行降序和升序。但我无法让它工作。主要的python文件是pythonaslab.py,升序和降序的模块是selectionmodule.py..代码:

这是选择模块:

import pythonaslab
def ascendingselection():
        for q in range(len(b)):
                w=q+1
                for w in range(len(b)):
                        if b[q]>b[w]:
                                f=b[q]
                                b[q]=b[w]
                                b[w]=f
        print b
def descendingselection():
        for q in range(len(b)):
                w=q+1
                for w in range(len(b)):
                        if b[q]<b[w]:
                                f=b[q]
                                b[q]=b[w]
                                b[w]=f
        print b

这是主文件,pythonaslab:

import selectionmodule
a = int(input())
b = [int(input()) for _ in range(a)]
print b
print "1.ascending 2.descending"
c=input()
if c==1:
        selectionmodule.ascendingselection()
if c==2:
        selectionmodule.descendingselection()

你能指出我得到的所有这些错误的原因在哪里吗?

Traceback (most recent call last):
  File "E:\Coding\pythonaslab.py", line 1, in <module>
    import selectionmodule
  File "E:\Coding\selectionmodule.py", line 1, in <module>
    import pythonaslab
  File "E:\Coding\pythonaslab.py", line 16, in <module>
    selectionmodule.descendingselection()
AttributeError: 'module' object has no attribute 'descendingselection'
4

2 回答 2

1

您创建了循环导入;您的pythonaslab模块导入selectionmodule哪个导入pythonaslab模块。你最终会得到不完整的模块,不要那样做。

从;中删除该import pythonaslabselectionmodule您没有pythonaslab在该模块中使用。

此外,另一个模块无法读取您的全局变量;您需要将它们作为参数传递:

# this function takes one argument, and locally it is known as b
def ascendingselection(b):
    # rest of function ..

然后调用它:

selectionmodule.ascendingselection(b)

请注意,您不仅限于一个字母的变量名称。使用更长的描述性名称使您的代码更具可读性。

于 2013-10-12T11:19:11.987 回答
0

如果您不想使用模块名称,例如:

selectionmodule.ascendingselection(b)

你应该进口:

from selectionmodule import *

然后你可以打电话:

ascendingselection(b) # without module name

或者你可以导入你的模块并分配一个别名:

import selectionmodule as o
o.ascendingselection(b) # with alias name

欲了解更多信息,请阅读: import confusaion

于 2013-10-12T11:26:49.030 回答