# Sintassi If Else Python

**URL:** <https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702>\
**Category:** Scripting e Programmazione\
**Created:** [27 Settembre 2022, 1:36pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702 "2022-09-27T13:36:47Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [27 Settembre 2022, 1:36pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/1 "2022-09-27T13:36:47Z")

</div>

> a = 0  
> b = 0  
> a=1; b=2 if a==0 else 3; 4  
> print a, b

output:  
1 3

che la sintassi non andava bene l’ho avevo messo in conto, ma è questo risultato mi fa strano. . .

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [27 Settembre 2022, 4:57pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/2 "2022-09-27T16:57:46Z")

</div>

Non conosco e non uso python… ma guardando [qua](https://www.w3schools.com/python/python_conditions.asp) dovrebbe essere così:

```auto
a = 0
b = 0

if a == 0:
   a = 1
   b = 2
else:
   a = 3
   b = 4

print a, b

```

output  
1 2

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [27 Settembre 2022, 5:30pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/3 "2022-09-27T17:30:07Z")

</div>

ciao Riccardo

certo, il metodo che hai postato è quello classico, quello da me postato è il metodo comprehension

che viene usato anche per le liste, infatti se provi con:

> a=1 if a==0 else 3

funziona. io stavo provando ad inserire una ulteriore variabile  
mi è sembrato strano che viene eseguito senza errore ma il risultato non’é quello atteso

ora mi chiedo del perché mi torna quel risultato? è corretto nella logica e quindi mi manca il suo ragionamento, oppure è qualcosa di intorcigliato che incasina il risultato. . .

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [27 Settembre 2022, 5:49pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/4 "2022-09-27T17:49:36Z")

</div>

Oh ok, ho capito.  
Curioso questo “comprehension” … però personalmente è una di quelle cose che mi fa allontanare ancora di più da python.

* * *

> [@0904](#):
>
> > a = 0  
> > b = 0  
> > a=1; b=2 if a==0 else 3; 4  
> > print a, b
> 
> output:  
> 1 3

È corretto.

Analizzando passo passo cosa succede con i comandi che hai messo:

| Comando | Valore a | Valore b | Commento |
| --- | --- | --- | --- |
| a = 0 | 0 | / | … b ancora non esiste |
| b = 0 | 0 | 0 | |
| a = 1 | 1 | 0 | |
| b=2 if a==0 else 3 | 1 | 3 | Dato che a=1, scatta l’else e b viene impostato a 3 |
| 4 | 1 | 3 | “4” non è un comando… ma ok… |
| print a, b | 1 | 3 | |

Il punto e virgola ; su python serve a delimitare un comando da un’altro, dovrebbe avere lo stesso effetto del carattere “a capo riga” (enter)

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [27 Settembre 2022, 6:20pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/5 "2022-09-27T18:20:49Z")

</div>

grande Riccardo ottima analisi e ricostruzione 👍

> [@RiccardoMajewski](#):
>
> Il punto e virgola ; su python serve a delimitare un comando da un’altro, dovrebbe avere lo stesso effetto del carattere “a capo riga” (enter)

si questo lo sapevo, ma non avevo considerato che in questo caso mi dividesse il primo risultato dalla condizione If il mio ragionamento era proprio tenendo conto di dover andare da capo come nel metodo classico che hai postato inizialmente:

[quote=“RiccardoMajewski, post:2, topic:4702”]

```auto
if a == 0:
   a = 1
   b = 2

```

quindi considerando che " **;**" va a capo riga e che in comprehension il risultato voluto deve essere messo prima della condizione ho usato questa sintassi, ma come si vede nei fatti il ragionamento non vale.

inizialmente avevo provato con un qualcosa come questo:

> a=1 and b=2 if a==0

ma in questo caso mi da proprio errore

adesso eseguendo il codice non in Rhino ma sull’emulatore del sito python:

> a=0; b=0  
> a=1; b=2 if a==0 else 3; 4  
> 4  
> alla fine come dicevi il 4 me lo ritorna come risposta  
> infatti nel terminale/shell di python se scrivi un numero e premi invio ti viene riportato il numero scritto.

e vabbè come non detto, speravo di riuscire a comprimere la compressione di If  
ma a come sembra più compresso di cosi non si può

> [@RiccardoMajewski](#):
>
> Curioso questo “comprehension”

si infatti è un pò contorto inizialmente però vedendo gli esempi con le liste  
fanno cose complesse utilizzando una sola riga di comando

grazie ancora per la spiegazione 👍

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [27 Settembre 2022, 7:10pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/6 "2022-09-27T19:10:25Z")

</div>

… suggerimento spassionato: se non usi python in altri contesti, e un po alla volta pensi di “scriptare” sempre più spesso su rhino, valuta c#.  
Le librerie di rhino e pure di grasshopper sono programmate in c#.  
Trovi molti più esempi in c# che python (nel contesto rhino/gh) e in generale è un linguaggio che permette di andare più in profondo, a mio parere.  
c# è anche molto più veloce in certi contesti, più fiscale, più chiaro sulla grammatica (ma anche più pignolo).

Su rhino 8 ci sarà lo scripting in c#, e ci si aprirà un mondo.

Attualmente python è un “mezzo” per accedere alle librerie c# rhinocommon.  
Nel forum internazionale tutti gli script “tosti” sono fatti in c#, python è comodo per chi lo conosce già da altri contesti e non deve perdere tempo a imparare un altro linguaggio.  
Ma se devi metterti ad imparare da zero un linguaggio “typed”, e lo fai per rhino/gh, non ha senso non scegliere c#.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [27 Settembre 2022, 8:30pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/7 "2022-09-27T20:30:12Z")

</div>

certamente che l’ho pensato di avvicinarmi a C# è un pezzo che ci provo  
solo che ogni volta che in rete vedo un metodo che potrebbe fare a caso mio  
e vado a vedere la guida online non riesco nemmeno a comprendere la sintassi

quando ho iniziato a seguire questa comunità avevo delle basi in VBA e Python  
poi con Lucio in VBS ed Emilio in Python mi hanno iniziato agli Script in Rhino  
è già per me li si era aperto un mondo osservando la differenza con le macro

poi già agli inizi quando qualcosa era complicato mi si presentava una soluzione con C#  
solo che a differenza dei primi due non riesco a capire come splittare la sintassi di quest’ultimo  
in VBS e Python ci sono esempi per ogni metodo/comando mentre in C# nella guida c’é tipo questo:

> public static Result Get2dRectangle(  
> bool solidPen,  
> out Rectangle rectangle,  
> out RhinoView rectView

mi è difficile comprendere come gestire vari e incrociare vari metodi tra loro senza esempi chiari

ps ci vorrebbe una persona che mi facesse capire per lo meno come capire la guida  
e dove poter trovare vari esempi pratici e nel caso quando necessario mi aiuti nelle lacune

comunque mi piacerebbe riuscire per lo meno a destreggiarmi un pochino in C# ne sarei contento.

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [27 Settembre 2022, 8:57pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/8 "2022-09-27T20:57:30Z")

</div>

Io non ho mai usato guide. (linkami quella a cui ti riferisci, sono curioso)  
Credo che sia molto più diretto vedere passo passo piccoli pezzi di codice dai vari utenti nel forum.  
Quando qualcuno chiede qualcosa in specifico, altri rispondono con piccoli script che risolvono solo quel problema specifico, ed ecco che è facile capire lo script in un contesto circoscritto.  
(questo nel forum internazionale… )

Ovvio che se si prova a leggere uno script da 200 righe ci si perde subito (e questo, qualsiasi il linguaggio).  
Io mi perdo pure a leggere i miei stessi script, qualche giorno dopo averli fatti…

* * *

Ad ogni modo se vuoi dare a c# un’altra chance, qua nel forum anche italiano qualcuno che risponde lo trovi di sicuro. Se hai qualche “esercizio” da provare, chiedi… e taggami pure.  
(parlo di c# dentro GH … di c# su rhino significherebbe fare plugin o macro su Rhino8… per ora io mai fatto…)

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [27 Settembre 2022, 10:28pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/9 "2022-09-27T22:28:31Z")

</div>

> [@RiccardoMajewski](#):
>
> Io non ho mai usato guide. (linkami quella a cui ti riferisci, sono curioso)

> **[RhinoCommon API](https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Input_RhinoGet_Get2dRectangle.htm)**

avevo preso un metodo a caso sulla guida ufficiale di Rhino, a volte mi è capitato anche di individuare  
il metodo giusto da usare solo che con questo tipo di guida non riesco proprio a trovare la quadra

questa invece è la guida di Python:

> import rhinoscriptsyntax as rs  
> plane = rs.WorldXYPlane()  
> plane = rs.RotatePlane(plane, 45.0, [0,0,1])  
> rs.AddRectangle( plane, 5.0, 15.0 )

viene importata la libreria necessaria  
impostato un piano e poi ruotato  
ed in fine creato il rettangolo

quindi è chiara è diretta

> [@RiccardoMajewski](#):
>
> Io mi perdo pure a leggere i miei stessi script, qualche giorno dopo averli fatti…

ahahahah a chi lo dici, beh dopo qualche giorno proprio no, però quando vado a riaprire script fatti sei mesi fa o anche altri più vecchiotti mi chiedo **“ma questo codice chi l’ha scritto”** meravigliandomi anche 🙂

ok grazie per la disponibilità credo che inizialmente anche dare un’occhiata a dei piccoli script per fare cose semplici tipo: creare punti spostarli collegarli con una curva e cose simili sarebbe già una ottimo

un saluto allora ci conto 👍

---

<div class="post-metadata">

**Author:** ![Sergio\_Alessi](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/sergio_alessi/32/22676_2.png) [@Sergio\_Alessi](https://it.discourse.mcneel.com/u/Sergio_Alessi)\
**Post date:** [28 Settembre 2022, 9:50am UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/10 "2022-09-28T09:50:01Z")

</div>

Ciao Salvio

… si risparmiano alcune righe di codice a scapito della leggibilità.  
In merito a qualsiasi linguaggio tu voglia programmare, la cosa  
fondamentale è partire dalle basi esercitandosi con applicazioni  
console (applicazioni su finestra command per intenderci).  
Una volta acquisita la padronanza del linguaggio tutto sarà più  
semplice e immediato. Ci sono tantissime pagine web e video che  
spiegano i linguaggi di programmazione . A titolo di esempio ti suggerisco:

> **[fcamuso](https://www.youtube.com/user/fcamuso)**
>
> Videolezioni e videoesercizi sui principali linguaggi di programmazione e strumenti di sviluppo per Windows ed il WEB.
> 
> Tutti i video sono organizzati in playlist e tutti i video sono corredati da una descrizione dei contenuti.
> 
> TI STAI PERDENDO in...

A mio parere un buon punto di partenza per semplicità e chiarezza.

Sergio

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [28 Settembre 2022, 4:57pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/11 "2022-09-28T16:57:40Z")

</div>

ciao Sergio, si conosco questo canale YT lo seguito tempo fa proprio su Py come anche altri canali

la gestione di base grosso modo ormai la conosco e quando vedendo cose nuove che poi vado a modificare che riscontro problemi. purtroppo sono un tipo che non mi basta ciò che vedo ma cerco altre strade.

ma forse tu parlavi del linguaggio C#

> [@Sergio\_Alessi](#):
>
> … si risparmiano alcune righe di codice a scapito della leggibilità.

confermo, infatti per entrare nella mentalità delle **comprehension** ci ho messo un bel pò di tempo  
e con tutto ciò che ormai ne ho fatte diverse sia di if che for nelle liste non riesco a padroneggiare ancora questo metodo, infatti per scriverle quelle più contorte le faccio prima classiche e poi le nidifico.

ps  
C# non saprei forse sono io che mi faccio impressionare troppo da questo linguaggio  
ma già quando prima di scrivere il codice mi ritrovo tutte quelle scritte e parentesi graffe 😱 😱

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [29 Settembre 2022, 12:42pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/12 "2022-09-29T12:42:42Z")

</div>

> [@0904](#):
>
> questa invece è la guida di Python:

Salvio, stai paragonando mele e arance, come suol dirsi.  
Per Python parli di rhinoscriptsyntax e per C# parli di RhinoCommon.  
Imparare allo stesso tempo il linguaggio e la libreria e’ difficile.  
Se vuoi usare C# su Rhino ti consiglio di impratichirti prima con RhinoCommon utilizzando Python, che gia’ conosci.  
E inoltre, come ti ha detto Sergio, di imparare le basi della sintassi C# con semplici programmi da console.  
Dopo aver capito come funzionano a grandi linee sia C# che RhinoCommon, avra’ senso provare a mettere insieme le due cose in ambiente Rhino.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [29 Settembre 2022, 2:23pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/13 "2022-09-29T14:23:47Z")

</div>

> [@emilio](#):
>
> Per Python parli di rhinoscriptsyntax e per C# parli di RhinoCommon.  
> Imparare allo stesso tempo il linguaggio e la libreria e’ difficile.

> [@emilio](#):
>
> E inoltre, come ti ha detto Sergio, di imparare le basi della sintassi C# con semplici programmi da console.

ciao Emilio, ma dove si può trovare qualche esempio di codice **non** semplice ma semplicissimi  
anche come hai sottolineato quindi sia in C# che RhinoCommon che in effetti confondo e mi confondo

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [29 Settembre 2022, 3:01pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/14 "2022-09-29T15:01:51Z")

</div>

Ciao Salvio

Come esempio per RhinoCommon potresti guardarti rhinoscriptsyntax, che ovviamente e’ scritta in RhinoCommon, e c’e’ il vantaggio che sai gia’ a cosa servono le varie funzioni.

[rhinoscriptsyntax/Scripts/rhinoscript at rhino-6.x · mcneel/rhinoscriptsyntax · GitHub](https://github.com/mcneel/rhinoscriptsyntax/tree/rhino-6.x/Scripts/rhinoscript)

Per C# non so indicarti degli esempi, anche perche’ personalmente mi trovo meglio con i manuali.  
Inoltre non prevedo di aver occasione di usare C# in futuro … 😉 .  
Ma Riccardo ti ha detto di chiedere pure sul forum, io ne approfitterei, cominciando da zero, cose come variabili, funzioni, input/output, operatori, cicli, flusso … e credo che per C# sia anche necessario un minimo di OOP. Ma questo te lo diranno gli esperti … 😀  
Vedrai che i concetti sono in pratica gli stessi di Python, cambia solo un po’ la sintassi, ma nemmeno poi cosi’ tanto. Entrambi i linguaggi in fondo derivano dal C (Python un po’ meno).

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [29 Settembre 2022, 3:16pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/15 "2022-09-29T15:16:33Z")

</div>

Emilio ogni volta che entriamo in questo discorso: linguaggi di programmazione ecc  
mi tiri fuori sempre qualche novità in merito ahahahah adesso cosè questo OOP. . .

ps ho dato un’occhiata al tuo link postato, non sono tanto semplici come codici  
speravo di qualcosa molto più basilari e nel caso usando solo RhCommon

a proposito in teoria con RhCommon è possibile realizzare completamente uno script?  
nel senso, vedo sempre importata la libreria di RhCommon insieme ad altre librerie o sbaglio. . .

edit:  
ps ok programmazione per oggetti, ma se non erro python non fa parte di questa categoria?

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [29 Settembre 2022, 4:15pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/16 "2022-09-29T16:15:30Z")

</div>

> [@emilio](#):
>
> per C# sia anche necessario un minimo di OOP

Diciamo che usando le librerie di rhinocommon, già si ha a che fare con un sacco di oggetti diversi e i loro metodi…

* * *

> [@emilio](#):
>
> Se vuoi usare C# su Rhino ti consiglio di impratichirti prima con RhinoCommon utilizzando Python, che gia’ conosci.  
> E inoltre, come ti ha detto Sergio, di imparare le basi della sintassi C# con semplici programmi da console.

Perdonatemi se “polemizzo”…

Opinione **molto** soggettiva:  
Python, se non si ha in mente di usarlo anche altrove (web, app, ecc ecc), ma solo in contesto Rhino, conviene dimenticarlo il prima possibile. È sporco, disordinato, inefficiente, lento.  
Con Rhino8/WIP abbiamo pure le macro in c#. Ci si dimenticherà in fretta di python.

C# io lo conosco solo all’interno di grasshopper, non l’ho mai usato in altri contesti.  
Lo ho imparato solo “smontando” altri script presi dal forum.  
Si passa da script monoriga a una decina di righe, a roba più complessa, ma ritengo che si possa fare anche tutto direttamente da grasshopper. Il percorso “didattico”, intendo.

Il parametro “out” contiene gli output di Print() e altro, non si sente la mancanza di una console.  
Ho provato Visual Studio, è sempre c# ma mi sono perso in un attimo. Mille menu e sotto-menu, una UI che ti assale.  
Imparare c# da dentro grasshopper lo ritengo un escamotage utilissimo. È una “culla” perfetta.  
Per me lo è stato.

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [29 Settembre 2022, 8:19pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/17 "2022-09-29T20:19:53Z")

</div>

Ciao Riccardo.

> [@RiccardoMajewski](#):
>
> È sporco, disordinato, inefficiente, lento.

Hahaha … povero Python. 😉  
In effetti e’ un classico scripting language, molto flessibile, semplice da usare ma certo non veloce.  
Anche se ultimamente stanno aggiungendo la possibilita’ di dichiarare i tipi dei dati, cosa che dovrebbe aiutare a renderlo piu’ veloce … mah. 😄

Quindi concordo su inefficiente e lento.  
Ho qualche dubbio in piu’ su sporco e disordinato, ma penso c’entrino molto gusti e abitudini personali. 🙂

Ma per quanto riguarda Rhino, che per quanto ne so io (poco) significa RhinoCommon, un aspetto importante e’ che non si possa usare una vera libreria Python, ma tocchi ‘abbassarsi’ a usare una libreria C#.  
Per me questo taglia la testa al toro, meglio usare C# se possibile (e fino a Rhino 7 purtroppo per gli script Rhino non era possibile).  
Poi ci saranno certo i cervelloni che si divertono a fare queste cose (usare librerie C# da Python), ma io guardo la cosa da un punto di vista molto piu’ terra terra. 😊

Se capisco bene tu suggerisci di imparare il C# da GH, senza interessarsi di Rhino all’inizio, per poi ‘aggiungere’ RhinoCommon in seguito … Be’, si’, mi sembra una buona idea. 🙂

Tra l’altro Salvio e’ esperto di GH quindi puo’ partire subito e concentrarsi sul linguaggio.

> [@RiccardoMajewski](#):
>
> già si ha a che fare con un sacco di oggetti diversi

Haha … si’, e’ vero. 😄  
Ma anche per questo, se non ricordo male, Salvio ha gia’ utilizzato le classi con Python, quindi non dovrebbe essere niente di cosi’ nuovo.

Vediamo cosa ne pensa Salvio … 😀

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [29 Settembre 2022, 8:42pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/18 "2022-09-29T20:42:05Z")

</div>

> [@0904](#):
>
> ok programmazione per oggetti, ma se non erro python non fa parte di questa categoria?

Si’, e’ vero, anche Python usa classi e oggetti. 🙂

> [@0904](#):
>
> non sono tanto semplici come codici  
> speravo di qualcosa molto più basilari

Ci sono funzioni complicate ma anche funzioni semplici, prova a cercare.  
ad esempio, dentro geometry.py c’e’ AddPoints(): solo 4 linee di codice.

> [@0904](#):
>
> nel caso usando solo RhCommon

A quanto ne so rhinoscriptsyntax e’ scritta usando RhinoCommon, a cosa ti riferisci ?

> [@0904](#):
>
> in teoria con RhCommon è possibile realizzare completamente uno script?

Con Python si’, con C# non sono sicuro, puo’ essere che serva qualche libreria per utilizzare, ad esempio, alcuni tipi di dati.

Cambiando discorso, Riccardo suggerisce di impratichirsi con C# usando GH.  
Mi sembra una buona idea, tu GH lo conosci e puoi iniziare subito a sperimentare.  
Io direi all’inizio di concentrarsi sul linguaggio e lasciar stare RhinoCommon.  
Vedi tu … 🙂

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [29 Settembre 2022, 10:30pm UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/19 "2022-09-29T22:30:26Z")

</div>

> [@emilio](#):
>
> > [@0904](#):
> >
> > nel caso usando solo RhCommon
> 
> A quanto ne so rhinoscriptsyntax e’ scritta usando RhinoCommon, a cosa ti riferisci ?

> import scriptcontext  
> import utility as rhutil  
> import Rhino  
> import System.Guid  
> from view import \_\_viewhelper

faccio un piccolo riepilogo per non incorrere in fraintendimenti: con import Rhino si parla di RhCommon  
e per quel poco che ho visto è sempre accompagnato da altre librerie come queste incluse sopra.

mi chiedevo; in genere in Py con rhinoscriptsyntax faccio tutto o quasi solo con quest’unica libreria  
con RhCommon invece cosa posso gestire essendo che come già detto lo vedo insieme altre librerie?

> [@emilio](#):
>
> Cambiando discorso, Riccardo suggerisce di impratichirsi con C# usando GH.  
> Mi sembra una buona idea, tu GH lo conosci e puoi iniziare subito a sperimentare.  
> Io direi all’inizio di concentrarsi sul linguaggio e lasciar stare RhinoCommon.  
> Vedi tu … 🙂

ma guarda per me va bene, se mi dite di fare in questo modo non posso che seguire il vostro consiglio  
anchè perché sicuramente se inizio a matchare troppe cose di sicurovado in tilt e non faccio più nulla

per iniziare giusto per non far finire tutto nel vuoto, con il benestare di @giuseppe avevo pensato di aprire un 3d nella sezione bar dove parlare di C# ed inserire e postare esempi di codici/prove ovviamente mi attendo anche il contributo vostro @emilio @RiccardoMajewski e di tutti che ne avranno il piacere.

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [30 Settembre 2022, 7:49am UTC](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702/20 "2022-09-30T07:49:35Z")

</div>

Tanto per capirsi, chiamo “macro” quei comandi che si possono mettere dentro un bottone di rhino.  
Tipo i rhinoscript ormai in disuso…  
(magari c’è un termine più adatto, ditemi voi)

* * *

RhinoCommon è .NET, una libreria, un framework, un runtime.  
C# è il linguaggio con cui programmare in quella libreria/framework/runtime.  
Se Rhinocommon è un aeroporto, c# è l’aereo.

* * *

Se usi RhinoScript, puoi fare “macro” e avrai una serie di comandi “ottimizzati” per essere utilizzati con poca “grammatica”.  
(Post di 10 anni fa: [VB vs C# vs Python - Grasshopper](https://www.grasshopper3d.com/forum/topics/vb-vs-c-vs-python))  
Sotto, in background, sicuramente usa RhinoCommon, ma tu scripter non hai l’accesso diretto a RhinoCommon. È un linguaggio tutto suo, impararlo è un po scomodo, oggi. L’help di rhino è anche fatto bene, ma sei limitato ad una guida fatta da McNeel anni fa…

* * *

Se usi Python, puoi fare sia “macro” che script dentro grasshopper.  
Può accedere a rhinoscriptsyntax, a Rhinocommon, e ovviamente è python.  
Ti ritrovi a “dover” (o poter) conoscere/usare 3 linguaggi diversi allo stesso tempo.  
Che sia questo un vantaggio o svantaggio, oggettivamente non so.  
Soggettivamente sapete già come la penso 🙂  
(Python che usa Rhino common è come un auto a cui è stato dato il pass di girare per l’aeroporto, ma non sa volare 😜 )

* * *

Se usi c# **NON** puoi fare “macro”… fino a rhino 7. Da Rhino8/WIP si può!  
Da c# non hai l’acceso a rhinoscriptsyntax.  
Usi 1 solo linguaggio per fare tutto: c#.  
Qualora volessi fare plugin, li farai in c#.

* * *

Con python e c# hai l’enorme vantaggio che se cerchi su google come fare un qualche ciclo/metodo o altro, trovi un sacco di roba!  
È sono linguaggi che poi potrai usare anche fuori da rhino.  
Rhinoscript ha una guida dentro rhino che è anche ben fatta, ma poi non c’è altro.  
Trovi esempi nel web, ma infinitamente meno che con python e c#.  
(Questo per dire: vale la pena “accanirsi” con rhinoscript? Non ha sbocchi “fuori”.  
Anche io ci ho fatto script da 300+ righe… ma è tempo di passare oltre, pure McNeel sembra averlo lasciato da parte da anni ormai.)

* * *

* * *

> [@0904](#):
>
> … la sezione bar dove parlare di C# ed inserire e postare esempi di codici/prove ovviamente mi attendo anche il contributo vostro …

Certo! 👍

PS correggetemi liberamente se ho scritto stupidaggini.

[Pagina seguente](https://it.discourse.mcneel.com/t/sintassi-if-else-python/4702.md?page=2)
