H
H
Heinrich Roizman2019-08-06 00:14:16
Python
Heinrich Roizman, 2019-08-06 00:14:16

Can you rate the python code?

I started learning python about 3 days ago.
I decided to write a simple assistant who will answer simple questions.
Please rate my code and tell me what can be fixed?

The code

# -*- 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()


Thanks in advance.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
I
Ivan Shumov, 2019-08-06
@inoise

Even if you don't know python that well:
- the code is hard to read: too many repeating places (DRY principle - Don't Repeat Yourself at least apply, break it into functions)
- a wild number of if! yes, there is no switch-case in python, but there are a lot of examples of how to do it better
- and there is also such a cool thing as the state-machine pattern, which allows you to work with such scenarios

D
dospayne2, 2019-08-06
@dospayne2

I would create through a class

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question