2013-10-12 4 views
0

Прошу прощения, я просто начинающий на языке python, я довольно долго застрял в этой проблеме. Фактически, я хочу сделать нисходящий и восходящий список, который пользователь вводит путем создания модуль нисходящего и восходящего. Но я не мог заставить его работать. основной файл питон pythonaslab.py и модуль для восходящей и нисходящей является selectionmodule.py..the код:мой модуль не загружается

это selectionmodule:

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' 
+2

* Что * ошибки вы получаете? Можете ли вы опубликовать полную трассу? –

+2

Просто угадайте: есть ли в вашем каталоге файл '__init __. Py'? – immortal

+1

Traceback (самый последний вызов последнего): Файл "E: \ Coding \ pythonaslab.py", строка 1, в импорта selectionmodule Файл "E: \ Coding \ selectionmodule.py", строка 1, в импорта pythonaslab файла "E: \ Coding \ pythonaslab.py", строка 16, в selectionmodule.descendingselection() AttributeError: 'модуль' объект не имеет атрибута 'descendingselection' – Ball

ответ

1

Вы создали круговой перенос; ваш модуль pythonaslab импортирует selectionmodule, который импортирует модуль pythonaslab. Не делайте этого в конечном итоге с неполными модулями.

Удалить строку import pythonaslab от selectionmodule; вы не используете pythonaslab в этом модуле.

Кроме того, другой модуль не может читать ваши глобальные переменные; вы должны передавать их в качестве аргументов:

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

затем вызвать, что с:

selectionmodule.ascendingselection(b) 

Обратите внимание, что вы не ограничены имена переменных один букв. Использование более длинных описательных имен делает ваш код более удобочитаемым.

0

, если вы не хотите использовать имя модуля, такие как:

selectionmodule.ascendingselection(b) 

следует импортировать:

from selectionmodule import * 

, то вы можете позвонить:

ascendingselection(b) # without module name 

Или вы можете импортируйте свой модуль и назначьте псевдоним:

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

для получения дополнительной информации читайте: import confusaion

Смежные вопросы