Di più, SE le istruzioni in python

Sto cercando di stampare il contenuto di una cella specifica. so che le celle che si desidera controllare prima di estrarre il contenuto di uscita. sto usando di più, SE le istruzioni per questo :

if lineCount == 5:
    if line[0]:
        print line[0], 'A5'
        OPfound = 1
        break
    if line[1]:
        print line[1], 'B5'
        OPfound = 1
        break
if lineCount == 4:
    if line[0]:
        print line[0], 'A4'
        OPfound = 1
        break
    if line[1]:
        print line[1],'B4'
        OPfound = 1
        break

L’output è il seguente :- estratto il contenuto, il numero di cellule

quello che sto cercando di fare è, prima di controllare se c’è qualche contenuto in A5 – se c’è un contenuto quindi estrarlo…altro controllo per il contenuto in B5 – se c’è un contenuto quindi estrarlo…altrimenti controlla il contenuto in formato A4

io sono sempre uscita per A4 B5 e…ma NON PER A5

anche come faccio a controllare il contenuto in B4 SOLO se non c’è contenuto in A5,B5, A4…

  • Si prega di estendere il codice per includere le informazioni su cosa line e lineCount sono. Inoltre, il rientro è lontano.
  • Che cosa è una “cella?”
  • Spero che il tuo rientro è stato incasinato quando si è incollato, anche se lo fa di lavoro.
  • Si potrebbe print "A{}".format(linecount), dal modo di condensare un po ‘ di codice
  • Hai fatto alcuna ricerca che break effettivamente, o in ulteriori dettagli del if istruzione?
InformationsquelleAutor safwan | 2016-12-08



3 Replies
  1. 1

    break non consente di lasciare if clausole, se è questo che siete, infatti, il tentativo di rompere. Qui il trucco è quello di rimuovere il break dichiarazioni e sostituire il secondo ifs con elifs in questo modo:

    if lineCount == 5:
        if line[0]:
            print line[0],'A5'
            OPfound = 1
        elif line[1]:
            print line[1],'B5'
            OPfound = 1
    if lineCount == 4:
        if line[0]:
            print line[0],'A4'
            OPfound = 1
        elif line[1]:
            print line[1],'B4'
            OPfound = 1

    In questo modo si sono solo in esecuzione attraverso la seconda if dichiarazione in ogni lineCount clausola, se la prima non è riuscita, non ogni volta.

    • questo mi da quasi quello che ho chiesto…ma se c’è un contenuto in A5 non voglio A4 da leggere…in questo momento io sono sempre uscita per entrambi i formati A4 e A5…quale sarà il fix per questo?
    • Basta fare il secondo al di fuori se la dichiarazione di una elif: ad esempio, elif lineCount==4:
    • elif significa, se precedente o se elif condizione non fosse vero (e solo se non era), quindi controllare questo. elif sta per altro se. C’è anche else, che copre le eventuali condizioni che non comprendono. Mettere se istruzioni all’interno di istruzioni se è una forma di nidificazione (if nidificate).
  2. 1

    Prima di tutto, non è la fine di un blocco di codice Python con break. Python estremità di un codice di blocco quando si vede che si sono rientrati all’indietro, come questo:

    if condition: //or any other statement that needs a block
        //code goes here
    //end of block

    Il break dichiarazione viene utilizzato per terminare il ciclo più interno si possono trovare. Se si esegue il codice in un ciclo, il break istruzione potrebbe produrre alcuni bug più o meno gravi.

    Comunque, c’è un modo convenzionale di test qualcosa di più condizioni. La tua attuale configurazione senza break istruzioni dovrebbe funzionare, ma io suggerisco di usare un if...elif...else istruzione. Ecco il formato:

    if condition:
        //run if true
    elif condition:
        //run if first expression was false, and this is true
    elif condition:
        //run if second expression was false, and this is true
    
    ... (you get the idea)
    
    else:
        //run if all other expressions are false

    Tenere a mente che dopo che Python ha trovato un’espressione che è vero in tale dichiarazione, poi verrà eseguito il corrispondente blocco di codice e ignorare tutti gli altri blocchi.

    Spero che questo aiuta!

  3. 1

    Darian Moody ha una bella soluzione a questa sfida nel suo post del blog:

    a = 1
    b = 2
    c = True
    
    rules = [a == 1,
             b == 2,
             c == True]
    
    if all(rules):
        print("Success!")

    Tutti() il metodo restituisce True quando tutti gli elementi in un dato iterable sono vere. Se non, restituisce False.

    È possibile leggere un poco di più su di esso in python-docs qui e ulteriori informazioni ed esempi qui.

    (Ho anche risposto alla domanda simile con questa info qui – Come avere più le condizioni per un’istruzione if in python)

Lascia un commento