Задать вопрос

Можете оценить код на python?

Начал изучать python где-то 3 дня назад.
Решил написать простейшего ассистента, который будет отвечать на простые вопросы.
Оцените пожалуйста мой код и скажите, что можно исправить?

Код

# -*- coding: utf-8 -*-
import pyowm
import datetime
import colorama
from colorama import Fore, Back, Style
from colorama import init
import os

init()

import time
import pyttsx3

engine = pyttsx3.init()

owm = pyowm.OWM('17cac06b9ae55882a7790963c36490aa', language='ru')
observation = owm.weather_at_place('Moscow')
w = observation.get_weather()

chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'


date = datetime.datetime.today().strftime("%d.%m.%Y")
time = datetime.datetime.now().strftime("%H.%M")


login = input("Введите логин: ")

if login == "root":
	print(Fore.GREEN)	
	engine.say('Авторизация пройдена на 50%!')
	engine.runAndWait()

elif login == "":
	print(Fore.RED)	
	print("Поле пустое!")
	raise SystemExit

else:
	print(Fore.RED)
	engine.say("Неверный логин!")
	engine.runAndWait()
	raise SystemExit

password = input("Введите пароль: ")

if password == "abrakadabra":
	print(Fore.GREEN)
	engine.say("Добро пожаловать!")
	engine.runAndWait()
	print(Fore.WHITE)
	name = input("Как тебя зовут?: ")
	engine.say("Приятно познакомиться, " + name +"! Я - Джессика! Твой ассистент.")
	engine.runAndWait()
	while True:
		question = input("Введите запрос: ")
		if question == "Сколько сейчас времени?":
			engine.say("Сейчас: " + str(time))
			engine.runAndWait()
		elif question == "Привет":
			engine.say("Привет!")
			engine.runAndWait()
		elif question == "Скажи время":
			engine.say("Сейчас: " + str(time))
			engine.runAndWait()
		elif question == "Время":
			engine.say("Сейчас: " + str(time))
			engine.runAndWait()
		elif question == "Дата":
			engine.say("Сегодня у нас: " + str(date))
			engine.runAndWait()
		elif question == "Какая сегодня дата?":
			engine.say("Сегодня у нас: " + str(date))
			engine.runAndWait()
		elif question == "Какая сейчас дата?":
			engine.say("Сегодня у нас: " + str(date))
			engine.runAndWait()
		elif question == "Какое сегодня число?":
			engine.say("Сегодня у нас: " + str(date))
			engine.runAndWait()
		elif question == "Анекдот":
			engine.say("Мой создатель не научил меня шутить... Ха-Ха-Ха")
			engine.runAndWait()
		elif question == "Расскажи анекдот":
			engine.say("Мой создатель не научил меня шутить... Ха-Ха-Ха")
			engine.runAndWait()
		elif question == "Расскажи шутку":
			engine.say("Мой создатель не научил меня шутить... Ха-Ха-Ха")
			engine.runAndWait()
		elif question == "Шутка":
			engine.say("Мой создатель не научил меня шутить... Ха-Ха-Ха")
			engine.runAndWait()
		elif question == "Рассмеши меня":
			engine.say("Мой создатель не научил меня шутить... Ха-Ха-Ха")
			engine.runAndWait()
		elif question == "Прекратить":
			raise SystemExit
		elif question == "Стоп":
			raise SystemExit
		elif question == "":
			print("Поле пустое")
		elif question == "Погода":
			print("Погода: " + str(w))
			print("Температура в Туле: " + str(w.get_temperature('celsius')))
			print("Скорость ветра: " + str(w.get_wind()))

		elif question == "Какая сегодня погода?":
			print("Погода: " + str(w))
			print("Температура в Туле: " + str(w.get_temperature('celsius')))
			print("Скорость ветра: " + str(w.get_wind()))
		elif question == "Какая сейчас погода?":
			print("Погода: " + str(w))
			print("Температура в Туле: " + str(w.get_temperature('celsius')))
			print("Скорость ветра: " + str(w.get_wind()))
		elif question == "Скажи погоду":
			print("Погода: " + str(w))
			print("Температура в Туле: " + str(w.get_temperature('celsius')))
			print("Скорость ветра: " + str(w.get_wind()))
		elif question == "Играть":
			whatgame = input("Какую игру запустить?: ")
			if whatgame == "WatchDogs":
				os.startfile(r'D:\Games\Watch Dogs 2\bin\WatchDogs2.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "Sims4":
				os.startfile(r'D:\Games\The Sims 4\Game\Bin\TS4_x64.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "NFS":
				os.startfile(r'D:\Games\Need for Speed Rivals\NFS14.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "NeedForSpeed":
				os.startfile(r'D:\Games\Need for Speed Rivals\NFS14.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "AssasinsCreed":
				os.startfile(r'D:\Games\Assassins Creed Unity\ACU.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "ACU":
				os.startfile(r'D:\Games\Assassins Creed Unity\ACU.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "":
				engine.say("Поле пустое!")
				engine.runAndWait()
			else:
				engine.say("Игра не найдена!")

		elif question == "Запусти игру":
			whatgame = input("Какую игру запустить?: ")
			if whatgame == "WatchDogs":
				os.startfile(r'D:\Games\Watch Dogs 2\bin\WatchDogs2.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "Sims4":
				os.startfile(r'D:\Games\The Sims 4\Game\Bin\TS4_x64.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "NFS":
				os.startfile(r'D:\Games\Need for Speed Rivals\NFS14.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "NeedForSpeed":
				os.startfile(r'D:\Games\Need for Speed Rivals\NFS14.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "AssasinsCreed":
				os.startfile(r'D:\Games\Assassins Creed Unity\ACU.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "ACU":
				os.startfile(r'D:\Games\Assassins Creed Unity\ACU.exe')
				engine.say("Игра успешно запущена! Наслаждайтесь!")
				engine.runAndWait()
				raise SystemExit
			elif whatgame == "":
				engine.say("Поле пустое!")
				engine.runAndWait()
			else:
				engine.say("Игра не найдена!")
		else:
			engine.say("Введён неизвестный запрос")
			engine.runAndWait()


elif password == "":
	print(Fore.RED)	
	engine.say("Поле пустое!")
	engine.runAndWait()
	raise SystemExit

else:
	print(Fore.RED)
	engine.say("Неверный пароль!")
	engine.runAndWait()
	raise SystemExit

input()


Заранее спасибо.
  • Вопрос задан
  • 440 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Даже не так хорошо зная python:
- код трудно читать: слишком много повторяющихся мест (принцип DRY - Don't Repeat Yourself хотябы примени, разбей на функции)
- дикое число if! да, в python нет switch-case, но есть куча примеров как это лучше сделать
- а еще есть такая классная штука как паттерн state-machine, который позволяет работать с такими вот сценариями
Ответ написан
@dospayne2
Я бы создал через класс
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы