comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Review python program

  • 1 Respuestas
  • 822 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sergitronico

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Agosto 11, 2016, 02:04:48 pm »
I have a python code named pokemon.py which uses inputs to open different web pages in which there are links to download pokémon episodes. My question is how can I improve the code and prevent errors. If you could tell me better names for the variables it will be perfect, but if not, it's OK. The program has a module called seasons.py where it returns the number of episodes that has the season which was entered. It also needs a number of text files called last.txt, and seasons.txt last2.txt. The Pokémon episodes names are like this: P0k3M0N.1x01.Es.avi.mp4 thanks. Principal code:

Código: Python
  1.     import webbrowser
  2.     import os
  3.     import seasons
  4.     import time
  5.  
  6.     f1 = open('last.txt', 'r')
  7.     f4 = open('last2.txt', 'r')
  8.  
  9.     out = False
  10.     list1 = []
  11.     list2 = []
  12.  
  13.     for file in os.listdir("."):
  14.         if "P0k3M0N" in file:
  15.             list1.append(file)
  16.  
  17.     for i in list1:
  18.         index = i.find("x")
  19.         str1 = i[index + 1:index + 3]
  20.         list2.append(str1)
  21.  
  22.     print("Last one: " + f1.readline())
  23.     print("Last: " + f4.readline())
  24.  
  25.     f1.close()
  26.     f4.close()
  27.  
  28.     x = 1
  29.     list3 = []
  30.     list4 = []
  31.  
  32.     for i in range(int(list2[-1])):
  33.         y = str(x)
  34.         if y in list2:
  35.             list3.append(y)
  36.         x += 1
  37.  
  38.     count1 = 0
  39.     count2 = 0
  40.  
  41.     for i in list4:
  42.         count1 += 1
  43.  
  44.     for i in list3:
  45.         count2 += 1
  46.  
  47.     if count1 != 0:
  48.         print("You have: " + str(list4))
  49.  
  50.     if count2 != 0:
  51.         print("You have consecutives from " + list3[0] + " to " + list3[-1])
  52.  
  53.  
  54.     while out == False:
  55.         print("[1] Full season")
  56.         print("[2] Single episodes: Examples: 1-10 / 1, 2 / 3")
  57.         print("[3] Get out")
  58.         input2 = input()
  59.         input1 = str(input2)
  60.         if input1 == "3":
  61.             out = True
  62.         else:
  63.             if input1 == "1":
  64.                 season = input("Season: ")
  65.                 episodes = seasons.episodes(season)
  66.                 for i in range(episodes):
  67.                     if len(str(i + 1)) == 1:
  68.                         url = "http://seriesblanco.com/serie/979/temporada-" + str(season) + "/capitulo-0" + str(x) + "/pokemon.html"
  69.                         webbrowser.open_new_tab(url)
  70.                         time.sleep(20)
  71.                     else:
  72.                         url = "http://seriesblanco.com/serie/979/temporada-" + str(season) + "/capitulo-" + str(x) + "/pokemon.html"
  73.                         webbrowser.open_new_tab(url)
  74.                         time.sleep(20)
  75.             else:
  76.                 input4 = input("Season: ")
  77.                 season = str(input4)
  78.                 file = open('season.txt', 'r')
  79.                 total_eps = file.readlines()
  80.                 number = total_eps[int(input4) - 1]
  81.                 print("This season has " + number + " episodes")
  82.                 input3 = input("Episodes: ")
  83.                 episodes = str(input3)
  84.                 if "-" in episodes:
  85.                     index = episodes.find("-")
  86.                     first = episodes[:index]
  87.                     second = episodes[index + 1:]
  88.                     x = int(first)
  89.                     numbers = "123456789"
  90.                     for i in range(int(second) - int(first) + 1):
  91.                         if str(x) in numbers:
  92.                             url = "http://seriesblanco.com/serie/979/temporada-" + season + "/capitulo-0" + str(x) + "/pokemon.html"
  93.                             webbrowser.open_new_tab(url)
  94.                         else:
  95.                             url = "http://seriesblanco.com/serie/979/temporada-" + season + "/capitulo-" + str(x) + "/pokemon.html"
  96.                             webbrowser.open_new_tab(url)
  97.                         x += 1
  98.                         if int(second) > 10:
  99.                             time.sleep(10)
  100.                     os.remove("last2.txt")
  101.                     f3 = open('last2.txt', 'w')
  102.                     f3.write(episodes)
  103.                     f3.close()
  104.                 elif "," in episodes:
  105.                     numbers = "123456789"
  106.                     count = 0
  107.                     list = []
  108.                     index = episodes.find(",")
  109.                     number = episodes[:index]
  110.                     list.append(number)
  111.                     while index != -1:
  112.                         index = episodes.find(",")
  113.                         if episodes[index + 1] == " ":
  114.                             episodes = episodes[index + 2:]
  115.                         elif episodes[index + 1] in numbers:
  116.                             episodes = episodes[index + 1:]
  117.                         number = episodes[:index]
  118.                         list.append(number)
  119.                     list.pop(-1)
  120.                     for i in list:
  121.                         count += 1
  122.                     for i in range(count):
  123.                         if len(list[i]) == 1:
  124.                             url = "http://seriesblanco.com/serie/979/temporada-" + season + "/capitulo-0" + list[i] + "/pokemon.html"
  125.                             webbrowser.open_new_tab(url)
  126.                         else:
  127.                             url = "http://seriesblanco.com/serie/979/temporada-" + season + "/capitulo-" + list[i] + "/pokemon.html"
  128.                             webbrowser.open_new_tab(url)
  129.                 else:
  130.                     if len(episodes) == 1:
  131.                         url = "http://seriesblanco.com/serie/979/temporada-" + season + "/capitulo-0" + episodes + "/pokemon.html"
  132.                         webbrowser.open_new_tab(url)
  133.                         os.remove("last.txt")
  134.                         f2 = open('last.txt', 'w')
  135.                         f2.write(episodes)
  136.                         f2.close()
  137.                     else:
  138.                         url = "http://seriesblanco.com/serie/979/temporada-" + season + "/capitulo-" + episodes + "/pokemon.html"
  139.                         webbrowser.open_new_tab(url)
  140.                         os.remove("last.txt")
  141.                         f2 = open('last.txt', 'w')
  142.                         f2.write(episodes)
  143.                         f2.close()
  144.  
The other module is here:
Código: Python
  1.     def episodes(n_season):
  2.         f = open('season.txt', 'r')
  3.         seasons = f.readlines()
  4.         season = seasons[int(n_season) - 1]
  5.         index = season.find('\n')
  6.         return season[:index]
  7.  

seasons.txt:
83
34
40
51
64
39
51
53
46
51
51
52
33
49
48
44
47
44

Thanks. Waiting answers.
« Última modificación: Agosto 11, 2016, 02:07:14 pm por Gabriela »

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
« Respuesta #1 en: Agosto 11, 2016, 07:18:42 pm »
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
for file in os.listdir("."):
    if "P0k3M0N" in file:
        list1.append(file)

you are reading too many files. For example, the one with the code will be appended to the list

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
f1 = open('last.txt', 'r')
f4 = open('last2.txt', 'r')
I have no idea why you use two txt files. Both have the same name, so either you just need one or the names aren't descriptive enough. As a last option, add a comment

Why f1 and f4? what happened to f2 and f3?

Also, calling variables by it's time is wrong. I know str1 is a string by seeing what is being assigned to it, but i want to know what it's used for. The same goes for list1, list2, etc

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
print("Last one: " + f1.readline())
print("Last: " + f4.readline())
Again, you are doing the same with two different variables. I can't tell the difference between "Last:" and "Last one:"

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
for i in list1:
    index = i.find("x")
    str1 = i[index + 1:index + 3]
    list2.append(str1)
i should be used only in for i in xrange(...
everybody assumes it's an integer, not anything else.

assuming I understood it all, this is way more clear:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
for file in files:
    index = file.find("x")
   episode_name = i[index + 1:index + 3]
    episodes.append(episode_name)

You shpuld declare out just before the while where it's used, it makes it easier to quickly see what it's for

related to that, you should use functions to divide your problem in small portions with proper names

using xrange is more efficient than range without any downsides

instead of having the urls like that, you could declare them all in the same place as constants and replace the variable parts with this No tienes permisos para ver links. Registrate o Entra con tu cuenta
python doesn't have real constants but, by convention, any variable name in uppercase meants it shouldn't be changed


Try to fix all that, post your code and I will review it again


 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Correr paso a paso un Script de Python

Iniciado por Olger346

Respuestas: 2
Vistas: 634
Último mensaje Febrero 11, 2018, 10:36:44 am
por Olger346
[SOLUCIONADO] [Python] Error: "Expected an indented block"

Iniciado por Banfek

Respuestas: 3
Vistas: 1746
Último mensaje Abril 01, 2015, 05:58:13 pm
por Banfek
[SOLUCIONADO] ¿Algún curso, taller o libro sobre inteligencia artificial Python?

Iniciado por dolphin

Respuestas: 1
Vistas: 891
Último mensaje Septiembre 10, 2016, 03:39:20 pm
por blackdrake
[SOLUCIONADO] Ayuda para comprender un poco Python, vengo de Java.

Iniciado por coke951

Respuestas: 3
Vistas: 1217
Último mensaje Enero 01, 2016, 06:16:24 pm
por coke951
[Python] ¿Alguna libreria para recuperar archivos eliminados de la papelera?

Iniciado por $francisco

Respuestas: 1
Vistas: 1210
Último mensaje Julio 25, 2015, 10:25:50 pm
por Snifer