No entiendo el siguiente bucle for, javascript

Hola buenas recién acabe un ejercicio para verificar si un numero es primo o no pero no acabo de entender del todo la solución ya que este bucle no comprendo bien su significado. Adjunto todo el código y lo que no comprendo es la parte que esta en el else. Saludos.

<!DOCTYPE html> <html>     <head>         <title></title>         <meta charset="UTF-8">         <style type="text/css">         </style>     </head>     <body>         <script>             var numero = parseInt(prompt('Introduzca el numero que desea analizar si es primo o no: '));             function test_Primo(numero) {                 if (numero==1){                     return  false;                 } else if(numero == 2){                     return  true;                 }                 else{                     for (var x=2; x<numero; x++){                         if(numero%x == 0) {                             return  false;                         }                     }                     return  true;                   }             }             if(test_Primo(numero)==true) {                 alert('El numero ' + numero + ' es primo');             }               if(test_Primo(numero)==false) {                 alert('El numero ' + numero + ' no es primo');             }          </script>     </body> </html>

controlar bucle while mediante booleanos

(Creo que el título no es muy descriptivo pero no sé como ponerlo)

Estoy analizando un vídeo frame a frame. La cosa es que el primer paso es coger ese frame y ver si es “trabajable”. Esto se hace con la siguiente línea (empleando la librería opencv),

ret, frame = cap.read() 

en frame guardamos la imagen actual con la que vamos a trabajar y en ret un booleano si esa imagen es procesable o no.

Por lo tanto yo lo que tengo es bucle un while que lo que hace es ir analizando frame a frame hasta el final de mi vídeo.

while (cap.isOpened()):     ret, frame = cap.read()     cv2.imshow('frame', frame) #mostrar frame actual 

¿Que sucede si ret es Falso? Pues que se genera un error. ¿Cómo podría solucionar esto? Con un condicional que si es Falso rompa el bucle. PERO en este caso dejo de analizar el vídeo, es decir, si quedaban 20 frames por analizar, ya no los analizo por culpa de este defectuoso.

Entonces pensé, pues solo trabajo en los que el valor de ret = True, pero en ese caso, cuando viene un ret = False se genera un bucle infinito en ese frame defectuoso.

while (cap.isOpened()):      ret, frame, gray_frame = frame_func(cap)     if ret == True:         cv2.imshow('frame', frame) 

Mi duda es, ¿cómo hago para que si un ret viene falso, simplemente paso al siguiente y sigo analizando hasta el final?

Gracias

Actualizar Label dentro de un bucle

No consigo que se actualice en pantalla un simple bucle for. El programa arranca y cuando llega al final del bucle muestra el último valor. Se que tiene que ver con concurrencia y los hilos pero no he sabido solucionarlo.

public class Controller implements Initializable { @FXML private Button id_boton1; @FXML private Label id_texto1;   @Override public void initialize(URL location, ResourceBundle resources) {     id_boton1.setOnAction(new EventHandler<ActionEvent>() {         @Override         public void handle(ActionEvent event) {             hacerTarea();         }     }); }  private void hacerTarea() {       for (int i = 0; i < 100; i++) {         try {             sleep(10);             id_texto1.setText("N: " + i);             System.out.println(i);         } catch (InterruptedException e) {             e.printStackTrace();         }     } } } 

Bucle finaliza antes de recorrer todas las lineas

Estoy recorriendo un diccionario pero cuando este lee la linea

‘noProxy’ : ”})

sale del for volviendo a la linea

config = configparser.ConfigParser()

y vuelve a comenzar todo nuevamente, no llegando a leer el total del codigo dentro del bucle

        chrome_options = webdriver.ChromeOptions()          # disable images to speed up the page loading         prefs = {"profile.managed_default_content_settings.images": 2}         chrome_options.add_experimental_option("prefs", prefs)          capabilities = dict(DesiredCapabilities.CHROME)         proxy.add_to_capabilities(capabilities) 
import configparser import os from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, ProxyType from selenium.webdriver.common.desired_capabilities import DesiredCapabilities              config = configparser.ConfigParser()             config.read('/config.ini')             proxy = config["Proxy"]              for pais, ip in proxy.items():                  proxy = Proxy({                         'proxyType': ProxyType.MANUAL,                         'httpProxy': {ip},                         'ftpProxy' : {ip},                         'sslProxy' : {ip},                         'noProxy'  : ''})                  chrome_options = webdriver.ChromeOptions()                  # disable images to speed up the page loading                 prefs = {"profile.managed_default_content_settings.images": 2}                 chrome_options.add_experimental_option("prefs", prefs)                  capabilities = dict(DesiredCapabilities.CHROME)                 proxy.add_to_capabilities(capabilities) 

Estos son los datos que estan dentro del archivo config.ini

[Proxy] Brasil: 186.233.104.25:8080 Chile: 190.82.76.58:32570 Ecuador: 186.3.228.98:8080 

Bucle bien reralizado?

Estoy aprendiendo a realizar un theme de WordPress y estoy en la parte donde se muestran los últimos posts.

Entre el 3º y el 4º posts quiero mostrar un anuncio por lo que tengo que trabajar con el loop que muestra los posts de WordPress.

He realizado este código y me funciona perfectamente, pero empiezo a dudar si el bucle esta bien realizado y el while puede acabar dando problemas…

En resumen, podéis echarle un ojo si controláis más de PHP que yo para confirmarme que el bucle no está sin cerrar o el while es infinito? Repito que funciona perfectamente, es por dejarlo bien hecho.

<div class="col-lg-8">             <!--Entrada-->             <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>             <!--Anuncio-->             <?php if( $  wp_query->current_post == 3 ) { ?>                //mianuncio             <?php } ?>             <!--Anuncio-->             <div class="card-body phome">                 <a href="<?php the_permalink($  post);?>">                     <h2 class="entry-title"><?php the_title();?></h2>                 </a>                 <?php                      $  sep = '';                     foreach ((get_the_category()) as $  cat) {                         echo $  sep . '<a href="' . get_category_link($  cat->term_id) . '"  class="cathome ' . $  cat->slug . '" title="Ver todos los post de '. esc_attr($  cat->name) . '">' . $  cat->cat_name . '</a>';                     $  sep = ', ';                     }                 ?>                 <?php the_excerpt();?>             </div>             <?php endwhile; endif; ?>             <!--Entrada-->             <!--Paginacion-->             <div class="card-body">                <?php get_template_part('template-parts/content', 'paginacion');?>             </div>             <!--Paginacion-->         </div> 

Gracias por adelantado 😉

Bucle reactivo en Shiny

agradecería me pudierais ayudar con un problema. El siguiente código funciona sin problemas:

years <- c(2017,2018,2019,2017,2017,2018,2018,2019) obs <- c("a","b","c","d","e","f","g","h") df <- data.frame(years,obs)  anos <- unique(df$  years)  for (val in anos){     assign(paste0("df_",val), filter(df, years == val)) } 

Me genera tres dataframes para los valores de cada año.

Sin embargo cuando intento hacer lo mismo en shiny:

library(shiny)  years <- c(2017,2018,2019,2017,2017,2018,2018,2019) obs <- c("a","b","c","d","e","f","g","h") df <- data.frame(years,obs)  ui <- fluidPage(     sidebarPanel(     radioButtons("year","year",choices=c(2017,2018,2019)),     pickerInput("valor","valor",choices=obs,selected=obs,multiple=TRUE)     ),   mainPanel(     htmlOutput("result")   ) )  server <- function(input,output,session){     df_val <- reactive({             filter(df, obs %in% input$  valor)     })      anos <- reactive(unique(df_val()$  years))      for (val in anos){             assign(paste0("df_",val),filter(df_val(), years == val))     } }        shinyApp(ui=ui,server=server) 

Me genera el siguiente error:

Error in server(...) :    long vectors not supported yet: ../../../../R-3.5.3/src/main/eval.c:2204 

Me podríais explicar el porqué de este comportamiento, y si hay alguna forma de solucionarlo o hacer algo parecido. Necesito crear nuevos dataframes basados en los valores de un input. Este es un ejemplo para explicar el problema, pero la aplicación en la que trabajo es mucho más compleja; sin embargo necesito que el código genere lo mismo: si el usuario establece que quiere desagregar los datos por años, preciso de crear dataframes para esos años para graficar y analizar los datos de esos años.

Muchas gracias por adelantado, un saludo

Construir condicional dentro de bucle

Llevo un buen, buen rato intentando hacer un condicional o varios que funcionen dentro de un bucle y no soy capaz.

Tengo un array que representa una “caja” con billetes (de 1 céntimo, a 100 dólares):

cid =  [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]] 

Los números representan la cántidad de dinero que hay en ese tipo de billete. (por ejemplo, el array [“ONE”, 90] quiere decir que hay 90$ en billetes de 1 Dólar.

Tengo una cantidad que debo devolver al cliente toReturn = 96.74 y debe ser devuelta en formato array como el de arriba, (este es el objetivo final):

caja = [["PENNY", 0.04],["NICKEL", 0],["DIME", 0.2],["QUARTER", 0.5],["ONE", 1],["FIVE", 15],["TEN", 20],["TWENTY", 60],["ONE HUNDRED", 0]] 

Es decir, 60$ en billetes de TWENTY (veinte), 20$ en billetes de TEN(diez), 15$ en billetes de FIVE…y etc. Así hasta llegar al valor de la variable toReturn que es 96.74. Se debe devolver de billete más mayor hasta menor.

Pues en fin lo que he hecho es crear un array de la misma longitud en el que pongo el valor de cada billete (typeofCurrency), y crear una variable que funcione como límite (bloqueador) para cuando voy sumando valores al array vacío y “no me pase”.

 var typeofCurrency = [0.01,0.05,0.1,0.25,1,5,10,20,100]  var bloqueador = 0 

Este es mi código:

var bloqueador = 0   for (var i= fromthere; i > -1; i--){     bloqueador += cid[i][1]     if (bloqueador > toReturn){       while (bloqueador > toReturn){          bloqueador -= cid[i][1]       }     }     // cuando bloqueador llegue a 96.74, parar bucle     identicalObject[i][1] = cid[i][1]   }

Para empezar, no entiendo porque no llega a 96.74 y se queda en 90.41

Por no hacer este hilo muy largo no pongo más código, pero he probado con otros 5 o 6 modificaciones y sino es una cosa es la otra, pero no funciona. El mejor resultado que he logrado es que llegue hasta 95 y que el array vacío me devuelva esto:

    [ [ 'PENNY', 0 ],   [ 'NICKEL', 0 ],   [ 'DIME', 0 ],   [ 'QUARTER', 0 ],   [ 'ONE', 0 ],   [ 'FIVE', 15 ],   [ 'TEN', 20 ],   [ 'TWENTY', 60 ],   [ 'ONE HUNDRED', 0 ] ] 

Es decir, lo hace bien hasta 95, a partir de ahí para y no coge ya los ONE dólares. (para avanzar hasta 96 y 97).

¿Cómo podría almacenar los resultados de un bucle en myslq?

quería saber como poder pasar los resultados de un bucle a una base de datos mysql, concretamente en phpmyadmin. Aquí les dejo mi código php (estoy escanenado una red y mi objetivo es almacenar por separado tanto las IPs que han dado un ping positivo como las que no)

<?php  for($  m=1; $  m<255; $  m++){   $  res = shell_exec("ping -n 2 -w 1 10.138.53.$  m");   if (strpos($  res, "recibidos = 0")) {   echo "No se ha podido establecer conexión con la IP 10.138.53.$  m";   echo "<br>";   }else{   echo "El ping a la IP 10.138.53.$  m ha sido exitosa";   echo "<br>";   } } ?> 

Aquí la estructura que tengo en la base de datos introducir la descripción de la imagen aquí

Comparación entre 2 fechas en un bucle [JAVA]

Estoy teniendo duros problemas con un fragmento de código bastante sencillo pero no funciona y me gustaría conocer porque.

Estoy recuperando de una base de datos a través de un servidor una lista de objetos, de esta lista de objetos obtengo una fecha y la comparo con una fecha seleccionada con un componente calendario.

for (int i = 0; i < listaTarea.size(); i++) {                 System.out.println("Fecha tarea: " +listaTarea.get(i).getFecha_realizar());                 System.out.println("Fecha comparar: "+date1);                 if(listaTarea.get(i).getFecha_realizar() == date1) {                     cont_tareas++;                 }             } 

Como podéis ver en el log, obtengo las 2 fechas y las voy comparando, como se puede apreciar las 2 fechas contienen exactamente el mismo formato y coinciden, con lo cual debería permitir acceder al condicional y realizar x acción

Fecha tarea: 2019-05-09
Fecha comparar: 1900-01-28
Fecha tarea: 1900-01-10
Fecha comparar: 1900-01-28
Fecha tarea: 1900-01-28

El ultimo registro, el fecha comparar y el fecha tarea coinciden, con lo cual debería permitir al codigo acceder a la sentencia IF y aumentar ese contador.

Esto me lleva pasando ya en 2 proyectos similares, que es lo que falla?

Las fechas que comparo son Date de la libreria java.sql.Date