Kezdőoldal » Számítástechnika » Programozás » Hogyan kell pythonban színátme...

Hogyan kell pythonban színátmenetet csinálni?

Figyelt kérdés

Írj függvényt, amely adott méretű négyzetekből (1. paraméter) és adott számú négyzetből (2. paraméter) rajzol egy ilyen színátmenetet!Baloldalán full zöldből megy át a jobb oldalra full pirosba.

eddig juttottam:

import turtle


def sokszog(oldalszam, oldalhossz):

x = 1

while x <= oldalszam:

turtle.forward(oldalhossz)

turtle.left(360.0/oldalszam)

x += 1



turtle.speed(0)

turtle.up()

turtle.back(300)

turtle.down()


n = input ("Hany darab negyzetbol alljon? ")

hossz = input ("Mekkora legyen a negyzet? ")


y = n

while y != 0:

x = 1

while x <= y:

turtle.color(1.0, 0.0, 0.0)

turtle.begin_fill()

sokszog(4, hossz)

turtle.end_fill()

turtle.color("black")

sokszog(4, hossz)

turtle.forward(hossz)

x = x+1

y = y-1



turtle.mainloop()



2016. márc. 31. 18:40
1 2
 11/18 anonim ***** válasza:

Itt a mukodo pelda:


nbviewer.jupyter.org/urls/dl.dropbox (pont) com/s/eui2do7kw6mx0fr/gradient_test.ipynb


Kicsit kellett faragni a fuggvenyemen, mert a fentebb belinkelt verzio a gradiens elemeit olyan rgb formaban adja vissza, amit egy svg grafika kirajzolasahoz hasznaltam. (tobb ezer x tobb ezer meretu negyzetracs, ahol a negyzetek szineit kellett gradienssel szinezni aszerint, hogy milyen az adott mezo erteke. Ha erdkel, mutathatok egy peldat.)

2016. ápr. 1. 00:32
Hasznos számodra ez a válasz?
 12/18 anonim ***** válasza:

Kicsit gondolkozhattál volna még a szín számításán vagy legalább leírhattad volna hogy próbálod vagy mit tapasztaltál, de Bolondok napja alkalmából tessék:


i = 0

while i < n:

. . turtle.color(i/(n-1), 1-i/(n-1), 0.0)

. . turtle.begin_fill()

. . sokszog(4, hossz)

. . turtle.end_fill()

. . turtle.forward(hossz)

. . i += 1


Egy lényeges megjegyzés: Python2-ben az input() nem ugyan az mint Python3-ban az input(). Python2-ben a raw_input() függvényt használjuk, az felel meg a Python3-ban használt input() függvénnyel. Python2-ben az input() kiértékeli a bemenetet, máshogy viselkedik mint a raw_input() és "veszélyes" a használata.


Cseréld le ezt:

n = input ("Hany darab negyzetbol alljon? ")

hossz = input ("Mekkora legyen a negyzet? ")


Erre:

n = int(raw_input("Hany darab negyzetbol alljon? "))

hossz = int(raw_input("Mekkora legyen a negyzet? "))

2016. ápr. 1. 01:19
Hasznos számodra ez a válasz?
 13/18 anonim ***** válasza:

Kérdező, a linkelt script sok sebből vérzik: nem állítod át a kitöltés színét! Folytan csak pirosat használsz. Hol van a scriptbe, hogy zöld legyen a végeredmény? Miért rajzolsz két négyzetet egymásra?


Ezzel próbálkozz:

[link]

2016. ápr. 1. 01:24
Hasznos számodra ez a válasz?
 14/18 anonim ***** válasza:

#12 Vagyok, eszembe jutott hogy Python3 kódot küldtem. Python3 a / jel tört osztás, Python2-ben egészek között egész osztást jelöl. Át kell alakítani lebegőpontossá legalább az egyik számot például így:


turtle.color(float(i)/(n-1), 1-float(i)/(n-1), 0.0)

2016. ápr. 1. 01:32
Hasznos számodra ez a válasz?
 15/18 A kérdező kommentje:

Köszönöm szépen a segítsét :)

Sikerült és működik a programom

Ezer hála

2016. ápr. 1. 02:14
 16/18 tabaki ***** válasza:

Hát, ebből végül kimaradtam, úgyhogy nem is dobom be a majdnem ugyanilyenemet.


Kérdező, az tetszik az második próbálkozásodban, hogy láthatólag igyekeztél menet közben még tisztogatni is a kódon. Még ennyit hozzátennék:


1. Félretéve, hogy valóban kézenfekvő a for ciklus, a while ciklusban sem csak összeadogatni, hanem kivonni is lehet. Ha már úgyis megkaptad az n értéket, lehet az a ciklusváltozó, másra úgysem használod. Valahogy így:


n = input ("Hany darab negyzetbol alljon? ")

hossz = input ("Mekkora legyen a negyzet? ")

while n > 0:

      turtle.color(1.0, 0.0, 0.0)

      ...

      ...

      n -= 1


2. Nem érzem szerencsésnek, hogy az eljáráson vagy min belül ugyanolyan x nevű változó szerepel, mint a programtörzsben. Ez akkor is bonyodalmakhoz vezethet, ha a fordítót nem zavarja. Kár megszokni, gondold el, hogy egy nagyobb programodban _téged_ mennyire fognak megkavarni az ilyen egyezések.


3. Az inputban egyértelműen négyzetet említesz, tehát az általánosabb célú sokszög helyett elég, ha csak azt rajzolsz:


def negyzet(oldalhossz):

      x = 4

      while x < 0:

            turtle.forward(oldalhossz)

            turtle.left(90)

      x -= 1


Persze, lehet általános sokszöget is rajzoltatni, de akkor úgy érdekesebb, ha bekéred az oldalak számát is. Szerintem egy

ilyen változatban legyen a következő.

2016. ápr. 1. 11:27
Hasznos számodra ez a válasz?
 17/18 tabaki ***** válasza:

+ A bánatba... Az x léptetése természetesen még a ciklusba való:


def negyzet(oldalhossz):

      x = 4

      while x < 0:

            turtle.forward(oldalhossz)

            turtle.left(90)

            x -= 1

2016. ápr. 1. 11:33
Hasznos számodra ez a válasz?
 18/18 tabaki ***** válasza:

@#11:

Köszönöm a programot!

2016. ápr. 1. 12:03
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!