Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Attenti a Poco F7: può essere il best buy del 2025. Recensione
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Poco F7 5G, smartphone che punta molto sulle prestazioni grazie al processore Snapdragon 8s Gen 4 e a un display AMOLED da ben 6,83 pollici. La casa cinese mantiene la tradizione della serie F offrendo specifiche tecniche di alto livello a un prezzo competitivo, con una batteria generosissima da 6500 mAh e ricarica rapida a 90W che possono fare la differenza per gli utenti più esigenti.
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-01-2008, 16:54   #1
Occasus
Member
 
L'Avatar di Occasus
 
Iscritto dal: May 2005
Città: Another World
Messaggi: 237
[Python] Aiuto esercizio di "How to Think Like a Python Programmer"

Ciao a tutti.
Dopo diversi fallimenti, sto tentando di imparare qualcosa su un linguaggio di programmazione, in questo caso il Python.
http://www.greenteapress.com/thinkpy...005.html#toc50 , esercizio 3.

Avendo già a disposizione queste funzioni:
Codice:
import math
from TurtleWorld import *
TurtleWorld()
bob = Turtle()
bob.delay = 0.01

def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    """(in degrees). t is a turtle.
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)
come posso fare a realizzare la funzione per disegnare i fiori?

L'unica cosa funzionante che sono riuscito a fare è la definizione della funzione:
Codice:
def flower(t, r, petals):


Grazie per l'aiuto.
Occasus è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 13:18   #2
Occasus
Member
 
L'Avatar di Occasus
 
Iscritto dal: May 2005
Città: Another World
Messaggi: 237
up
Occasus è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 21:31   #3
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
ma scusa..
per il poco che ricordo di python....
le virgolette triple nella funzione arc non dovrebbero essere alla fine della stringa?
cmq spè che mi scarico 'sto turtleworld che non ho mai sentito e vedo
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 21:35   #4
Occasus
Member
 
L'Avatar di Occasus
 
Iscritto dal: May 2005
Città: Another World
Messaggi: 237
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ma scusa..
per il poco che ricordo di python....
le virgolette triple nella funzione arc non dovrebbero essere alla fine della stringa?
cmq spè che mi scarico 'sto turtleworld che non ho mai sentito e vedo
Sí, il commento l'ho aggiunto mentre scrivevo il messaggio.
È chiaramente sbagliato, ma non era presente nelle versioni che ho passato all'interprete.
Occasus è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 21:49   #5
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
Codice:
import math
from TurtleWorld import *


def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    (in degrees). t is a turtle."""
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)


def flower(turtle, radius, petals):
    for i in range(petals):
        arc(turtle, radius, 180)
        #fai girare la tartaruga di 90°


TurtleWorld()
bob = Turtle()
bob.delay = 0.01
flower(bob, 50, 4)
dovrebbe essere qualcosa del genere ovviamente inserendo il comando che fa girare la tartaruga di 90° a sinistra e *in teoria dovrebbe andare*
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 22:04   #6
Occasus
Member
 
L'Avatar di Occasus
 
Iscritto dal: May 2005
Città: Another World
Messaggi: 237
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
dovrebbe essere qualcosa del genere ovviamente inserendo il comando che fa girare la tartaruga di 90° a sinistra e *in teoria dovrebbe andare*
Questo è il problema. Ho provato tante soluzioni (la prima funzione era simile, se non uguale a quella tua) che in teoria dovrebbero andare, ma in pratica non disegnano i fiori.
Occasus è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 23:03   #7
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
Quote:
Originariamente inviato da Occasus Guarda i messaggi
Questo è il problema. Ho provato tante soluzioni (la prima funzione era simile, se non uguale a quella tua) che in teoria dovrebbero andare, ma in pratica non disegnano i fiori.
ehmm...
se hai un raggio x e fai un arco di 180° allora ti ritrovi esattamente in corrispondenza del punto di partenza, dopo aver disegnato un arco, però traslato di 2x lungo la direzione perpendicolare (con verso a sinistra) della posizione inziale della tartaruga.
La direzione della tartaruga sarà a quel punto parallela rispetto a quella iniziale, ma il verso sarà opposto.
Quindi ruotando di 90° verso destra e ripetendo il procedimento avremo che sarà traslata di 2x nella direzione verso cui era rivolta prima di essere girata di 90°.
Finendo il giro si avrà una situazione di questo tipo (rappresentando solo i diametri degli archi):
Codice:
------
|    |
|    |
------
con la tartaruga che sarà ritornata al punto di partenza disegnando i 4 archi che formano i petali del fiore.
A quel punto generalizzare la funzione per ogni numero di petali dovrebbe essere banale così ad occhio.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 11:21   #8
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7244
per non saper ne leggere ne scrivere in python sono riuscito a ottenere una cosa simile
Codice:
import math
from TurtleWorld import *


def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    (in degrees). t is a turtle."""
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)


def flower(turtle, radius, petals):
    for i in range(petals):
        arc(turtle, radius, 90)
        lt(turtle, 90)
        arc(turtle, radius, 90)
        lt(turtle, (360/petals+90))


TurtleWorld()
bob = Turtle()
bob.delay = 0.001
flower(bob, 90, 7)
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 12:45   #9
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
per non saper ne leggere ne scrivere in python sono riuscito a ottenere una cosa simile
Codice:
import math
from TurtleWorld import *


def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    (in degrees). t is a turtle."""
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)


def flower(turtle, radius, petals):
    for i in range(petals):
        arc(turtle, radius, 90)
        lt(turtle, 90)
        arc(turtle, radius, 90)
        lt(turtle, (360/petals+90))


TurtleWorld()
bob = Turtle()
bob.delay = 0.001
flower(bob, 90, 7)
infatti hai usato la banale generalizzazione e il left turn che per qualche strano motivo ( ) quei geni hanno chiamato lt anzichè left turn
Ho sempre odiato chi chiama i metodi e le variabili con nomi non significativi

Cmq il mio codice, con un numero di petali pari a 4 ed aggiungendo il left turn funziona perfettamente
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 12:54   #10
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7244
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
infatti hai usato la banale generalizzazione e il left turn che per qualche strano motivo ( ) quei geni hanno chiamato lt anzichè left turn
Ho sempre odiato chi chiama i metodi e le variabili con nomi non significativi

Cmq il mio codice, con un numero di petali pari a 4 ed aggiungendo il left turn funziona perfettamente
ma come fai a disegnare un petalo con un solo arco?

ps. da uno che usa tk che nomi dei metodi ti aspettavi?
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:16   #11
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
ma come fai a disegnare un petalo con un solo arco?

ps. da uno che usa tk che nomi dei metodi ti aspettavi?
..hai provato a lanciare il mio codice per 4 petali con l'aggiunta di lt(turtle, 90)?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:19   #12
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
anzi...
guarda che figata
Codice:
import math
from TurtleWorld import *


def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    (in degrees). t is a turtle."""
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)


def flower(turtle, radius, petals):
    for i in range(petals):
        arc(turtle, radius, 180)
        lt(turtle, 360/petals)


TurtleWorld()
bob = Turtle()
bob.delay = 0.01
flower(bob, 50, 8)


è belliffimo

__________________

Ultima modifica di ^TiGeRShArK^ : 19-01-2008 alle 13:21.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:32   #13
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7244
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
anzi...
guarda che figata
Codice:
import math
from TurtleWorld import *


def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    (in degrees). t is a turtle."""
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)


def flower(turtle, radius, petals):
    for i in range(petals):
        arc(turtle, radius, 180)
        lt(turtle, 360/petals)


TurtleWorld()
bob = Turtle()
bob.delay = 0.01
flower(bob, 50, 8)


è belliffimo

nono tu devi provare questo

Codice:
import math
from TurtleWorld import *


def polyline(t, length, n, angle):
    """Draw n line segments with the given length and
    angle (in degrees) between them. t is a turtle.
    """
    for i in range(n):
        fd(t, length)
        lt(t, angle)

def arc(t, r, angle):
    """Draw an arc with the given r (radius) and angle
    (in degrees). t is a turtle."""
    arclength = 2 * math.pi * r * angle / 360
    n = int(arclength / 4)
    length = arclength / n
    polyline(t, length, n, float(angle)/n)


def flower(turtle, radius, petals):
    for i in range(petals):
        arc(turtle, radius, 120)
        lt(turtle, 120)
        arc(turtle, radius, 120)
        lt(turtle, (360/petals+120))


TurtleWorld()
bob = Turtle()
bob.delay = 0.001
flower(bob, 90, 9)
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:36   #14
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
nono tu devi provare questo
certo che è intrippante sta tartarughina
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:44   #15
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7244
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
certo che è intrippante sta tartarughina
mi ricordo di averci giochicchiato con un oggetto simile quando ero giovane..
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 17:49   #16
Occasus
Member
 
L'Avatar di Occasus
 
Iscritto dal: May 2005
Città: Another World
Messaggi: 237
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ehmm...
se hai un raggio x e fai un arco di 180° allora ti ritrovi esattamente in corrispondenza del punto di partenza, dopo aver disegnato un arco, però traslato di 2x lungo la direzione perpendicolare (con verso a sinistra) della posizione inziale della tartaruga.
La direzione della tartaruga sarà a quel punto parallela rispetto a quella iniziale, ma il verso sarà opposto.
Quindi ruotando di 90° verso destra e ripetendo il procedimento avremo che sarà traslata di 2x nella direzione verso cui era rivolta prima di essere girata di 90°.
Finendo il giro si avrà una situazione di questo tipo (rappresentando solo i diametri degli archi):
Codice:
------
|    |
|    |
------
con la tartaruga che sarà ritornata al punto di partenza disegnando i 4 archi che formano i petali del fiore.
A quel punto generalizzare la funzione per ogni numero di petali dovrebbe essere banale così ad occhio.
Il problema, come hai notato, è che funziona solo con quattro petali.

Forse l'unica soluzione è prendere goniometro, calcolatrice e squadra, calcolare le misure e scrivere la funzione.
Occasus è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 19:36   #17
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
Quote:
Originariamente inviato da Occasus Guarda i messaggi
Il problema, come hai notato, è che funziona solo con quattro petali.

Forse l'unica soluzione è prendere goniometro, calcolatrice e squadra, calcolare le misure e scrivere la funzione.
no.. quello di cui ho postato l'immagine è fatto in quel modo con 8 petali
e cmq l'avevo già scritto io che serviva una banale generalizzazione per farlo funzionare per tutti i casi..
cosa che ha fatto konte nel suo codice
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2008, 11:11   #18
guyver
Bannato
 
L'Avatar di guyver
 
Iscritto dal: May 2001
Città: Versilia
Messaggi: 1503
cad in python

ciao approfitto di questo 3d per chiedere:
stavo provando a far partire questo cam scritto in python e rilasciato sotto licenza mit
però mi da errore su un indentazione ma non capisco come risolverlo...
qualcuno me lo sà dire???
Allegati
File Type: zip cam.zip (22.3 KB, 3 visite)
guyver è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2008, 11:58   #19
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Non si "approfitta" di un thread, se ne apre uno nuovo, non costa nulla farlo ed in tal modo si contribuisce a mantenere ordinato il forum.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2008, 10:03   #20
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da Occasus Guarda i messaggi
Ciao a tutti.
Dopo diversi fallimenti, sto tentando di imparare qualcosa su un linguaggio di programmazione, in questo caso il Python.
http://www.greenteapress.com/thinkpy...005.html#toc50 , esercizio 3.

Avendo già a disposizione queste funzioni:

CUT

come posso fare a realizzare la funzione per disegnare i fiori?
Anzitutto, mi sa che gli angoli dovranno essere due: uno per il numero dei petali (che è semplicemente 360°/n) e uno per la loro ampiezza, che chiamiamo alpha.

Proviamo a far disegnare alla tartarughina la parte inferiore di un petalo orizzontale.
Possiamo farlo dicendole di
- girare a destra di alpha/2, e poi
- tracciare un arco di ampiezza alpha.

A questo punto, la tartarughina è girata a sinistra di alpha/2 rispetto a est.
Per farle fare la parte superiore, dobbiamo farle ripetere la procedura, specularmente rispetto all'asse orizzontale, e in senso inverso.
Quindi, nel momento in cui inizia a disegnare, deve essere rivolta di alpha/2 a destra rispetto a ovest.
E questo, glielo possiamo far fare con un giro verso sinistra di 180°-alpha.

Adesso si può ripetere il tracciamento dell'arco; alla fine del quale, la tartarughina sarà girata di alpha/2 a sinistra rispetto a ovest.
Per farla di nuovo andare verso est, basta farla girare a sinistra di 180°-(alpha/2).
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Altri cali notevoli su Amazon: Roborock ...
I droni invadono le autostrade: ecco il ...
Super PC Desktop da gaming già pr...
Offerte Oral-B da non perdere su Amazon:...
ChatGPT ora ti ricorda di fare una pausa...
Ultraleggero, compatto, prezzo super di ...
Eureka J15 Ultra scende ancora e la conc...
Processore Ryzen con 16 core e doppia V-...
Potenziare il proprio PC non è ma...
Robot top con autosvuotamento e senza sa...
Perplexity e i "trucchetti" pe...
Samsung Galaxy Watch 7: uno crolla a 159...
Tecnologie da fantascienza: l’iPad adess...
Tuo figlio vuole uno smartphone? Non pri...
Amazon top 7 bestseller, aggiornata: feb...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v