Ошибка импорта .py файла при работе с двумя файлами
Такая проблема. Я недавно начал учить Python, и пока для практики постепенно улучшаю свою программу, её сложно назвать голосовым помощником, скорее это текстовый помощник. Так вот, проблема в том, что я пытаюсь сделать игры в этом помощнике, для этого создал отдельный файл. И когда я пытаюсь его импортировать в главный файл, мне пишет ошибку. Причём пока работа происходит с главным файлом, всё работает. А как только в коде вызывается функция из второго файла, вылезает ошибка. Код и текст ошибки прикреплю ниже.
Первый файл(главный):
#Импорт библиотек
from datetime import datetime
import time
import os
import gamesFunc
#Объявление переменных
currentFullDate = datetime.now()
createDate = '13.11.2022'
createYear = '2022'
userAnswer = ''
#Функция используемая для приветствия
def AnfisaSayHello(currentHour):
#Приветствие в зависимости от текущего времени
if currentHour < 6:
print('Доброй ночи!')
elif currentHour < 12:
print('Доброе утро!')
elif currentHour < 18:
print('Добрый день!')
else:
print('Добрый вечер!')
time.sleep(0.5)
def screenClear():
os.system('cls')
def AnfisaSayAbout(currentYear):
print('Меня зовут Анфиса.')
differentYear = currentYear - int(createYear)
if differentYear == 3 or differentYear == 4:
time.sleep(0.5)
print('Мне уже целых', differentYear, 'года!')
elif differentYear >= 5 and differentYear <= 20:
time.sleep(0.5)
print('Мне уже целых', differentYear, 'лет!')
else:
pass
time.sleep(0.5)
print('Я твой персональный помощник.')
time.sleep(0.5)
print('Умею выполнять разные задания и показывать разную информацию.')
time.sleep(0.5)
print('Чтобы узнать что я могу, напишите "Анфиса, что ты умеешь?".')
def AnfisaGreets():
screenClear()
AnfisaSayHello(currentFullDate.hour)
AnfisaSayAbout(currentFullDate.year)
for part in range(1, 11):
print('Загружено', part, "из 10")
time.sleep(0.1)
os.system('cls')
AnfisaGreets()
while userAnswer != 'Пока' or userAnswer != 'пока':
userAnswer = str(input('Вы сказали: '))
if userAnswer == 'Анфиса, что ты умеешь?' or userAnswer == 'Анфиса, что ты умеешь' or userAnswer == 'Анфиса что ты умеешь?' or userAnswer == 'Анфиса что ты умеешь':
print('Анфиса сказала: Пиши "Игры"')
elif userAnswer == 'Игры' or userAnswer == 'игры' or userAnswer == 'Игра' or userAnswer == 'игра' or userAnswer == 'Играть' or userAnswer == 'играть':
print('Анфиса сказала: Запускаю...')
time.sleep(2)
gamesFunc.gameLobby()
else:
print('Анфиса сказала: Извините, я Вас не поняла. Чтобы узнать что я могу, напишите "Анфиса, что ты умеешь?"')
exit()
Второй файл(с играми):
import time
import os
from Anfisa import AnfisaGreets
gameNowPlaying = ''
def screenClearWithGame():
os.system('cls')
print('Игра:', gameNowPlaying)
print('--------------------')
#cities - игра в города
allRussianCities = {'Абаза', 'Абакан', 'Абдулино', 'Абинск', 'Агидель', 'Агрыз', 'Адыгейск', 'Азнакаево', 'Азов', 'Ак', 'Аксай',
'Алагир', 'Алапаевск', 'Алатырь', 'Алдан', 'Алейск', 'Александров', 'Александровск', 'Александровск'}
alreadyUsedCities = ['Абаза', 'Абдуллино', 'Абакан']
notUsedRussianCities = []
def citiesAnfisaSayCity(citySaidByUser = ''):
notUsedRussianCities = allRussianCities.difference(alreadyUsedCities)
print(notUsedRussianCities)
AnfisaCity = notUsedRussianCities[0]
alreadyUsedCities.append(citySaidByUser)
citiesUserSayCity(AnfisaCity)
def citiesUserSayCity(citySaidByAnfisa = ''):
userCity = ''
alreadyUsedCities.append(citySaidByAnfisa)
citiesAnfisaSayCity(userCity)
def citiesGameStart():
screenClearWithGame()
inputValueCitiesStart = ''
while inputValueCitiesStart != '1' or inputValueCitiesStart != '2' or inputValueCitiesStart != '3':
time.sleep(0.5)
print('Кто будет начинать первым?')
time.sleep(0.5)
print('1. Вы')
time.sleep(0.5)
print('2. Анфиса')
time.sleep(0.5)
print('3. Вернуться')
time.sleep(0.5)
inputValueCitiesStart = str(input('Ваш ответ: '))
if inputValueCitiesStart == '1' or inputValueCitiesStart == '1.' or inputValueCitiesStart == 'Вы' or inputValueCitiesStart == '1. Вы':
screenClearWithGame()
citiesUserSayCity()
elif inputValueCitiesStart == '2' or inputValueCitiesStart == '2.' or inputValueCitiesStart == 'Анфиса' or inputValueCitiesStart == '2. Анфиса':
screenClearWithGame()
citiesAnfisaSayCity()
elif inputValueCitiesStart == '3' or inputValueCitiesStart == '3.' or inputValueCitiesStart == 'Вернуться' or inputValueCitiesStart == '3. Вернуться':
screenClearWithGame()
citiesGameRules()
else:
print('Введите число 1, 2 или 3!')
time.sleep(0.5)
def citiesGameRules():
screenClearWithGame()
inputValueCitiesRules = ''
time.sleep(0.5)
print('Правила игры:')
time.sleep(0.5)
print('Вы называете любой город, после чего Анфиса называет город начинающийся с последней буквы Вашего ответа.')
time.sleep(0.5)
print('Затем Вы называете город начинающийся с последней буквы ответа Анфисы.')
time.sleep(0.5)
print('И так далее.')
time.sleep(0.5)
print('Анфиса может называть только Русские города, в то время как Вы можете называть любые города мира.')
time.sleep(0.5)
print('Анфиса знает более тысячи городов, сможете её обыграть?')
while inputValueCitiesRules != '1' or inputValueCitiesRules != '2':
time.sleep(0.5)
print('1. Продолжить')
print('2. Вернуться')
inputValueCitiesRules = str(input('Ваш ответ: '))
if inputValueCitiesRules == '1' or inputValueCitiesRules == '1.' or inputValueCitiesRules == 'Продолжить' or inputValueCitiesRules == '1. Продолжить':
screenClearWithGame()
citiesGameStart()
elif inputValueCitiesRules == '2' or inputValueCitiesRules == '2.' or inputValueCitiesRules == 'Вернуться' or inputValueCitiesRules == '2. Вернуться':
screenClearWithGame()
gameLobby()
else:
print('Введите число 1 или 2!')
time.sleep(0.5)
#cities - игра в города
def gameLobby():
gameNowPlaying = 'Игровое лобби'
screenClearWithGame()
inputValueGameLobby = ''
while inputValueGameLobby != '1' or inputValueGameLobby != '2':
time.sleep(0.5)
print('Выберите игру:')
time.sleep(0.5)
print('1. Города')
time.sleep(0.5)
#print('2. Анфиса')
#time.sleep(0.5)
#print('2. Анфиса')
#time.sleep(0.5)
#print('2. Анфиса')
#time.sleep(0.5)
#print('2. Анфиса')
#time.sleep(0.5)
#print('2. Анфиса')
#time.sleep(0.5)
#print('2. Анфиса')
#time.sleep(0.5)
print('2. Вернуться')
time.sleep(0.5)
inputValueGameLobby = str(input('Ваш ответ: '))
if inputValueGameLobby == '1' or inputValueGameLobby == '1.' or inputValueGameLobby == 'Вы' or inputValueGameLobby == '1. Вы':
gameNowPlaying = 'Города'
screenClearWithGame()
citiesGameRules()
elif inputValueGameLobby == '2' or inputValueGameLobby == '2.' or inputValueGameLobby == 'Вернуться' or inputValueGameLobby == '2. Вернуться':
screenClearWithGame()
AnfisaGreets()
else:
print('Введите число 1 или 2!')
time.sleep(0.5)
Traceback (most recent call last):
File "C:\Users\artyo\source\repos\Anfisa\Anfisa\Anfisa.py", line 5, in <module>
import gamesFunc
File "C:\Users\artyo\source\repos\Anfisa\Anfisa\gamesFunc.py", line 3, in <module>
from Anfisa import AnfisaGreets
File "C:\Users\artyo\source\repos\Anfisa\Anfisa\Anfisa.py", line 64, in <module>
gamesFunc.gameLobby()
AttributeError: partially initialized module 'gamesFunc' has no attribute 'gameLobby' (most likely due to a circular import)