Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: python for loop

kukkakaali [13.05.2021 12:04:40]

#

Moikka!Mitenköhän tän sais tehtyä:

#####
#   #
#   #
#   #
#####

mut 50 kertaisena.

oon mallaillu tällasta:

for i in range(50):
     print("#"*50)
     print("#", " "*46,"#")
     print("#", " "*46,"#")
     print("#", " "*46,"#")
     print("#"*50)

Ongelmana on että kuvio on oikein mutta looppi tekee sen 50 kertaisena. Onkohan tossa print lauseessa joku parempi tapa tehdä kuvio, laskuria hyödyntäen?

kukkakaali [13.05.2021 12:05:26]

#

toi kuvio ei ihan näy oikein sen olis tarkotus olla neliö.

Grez [13.05.2021 12:07:58]

#

Kannattaisi varmaan laittaa ensimmäinen ja viimeinen viiva loopin "ulkopuolelle" ja sitten tehdä sitä väliin tulevaa riviä loopissa vain kerran.

Eli siis tyyliin

print("#"*50)
for i in range(48):
     print("#", " "*46,"#")
print("#"*50)

kukkakaali [13.05.2021 12:29:02]

#

Toimii:)!Kiitos.

Metabolix [13.05.2021 14:39:22]

#

Asiaa voi ajatella myös toiselta kannalta. On tarkoitus tulostaa vain yksi kuvio. Kuviossa on 50 riviä, ja rivinvaihtomerkki on \n. Kuvion voi laskea kerralla valmiiksi.

n = 50
print(
  "#" * n + "\n" +
  ("#" + " " * (n - 2) + "#\n") * (n - 2) +
  "#" * n
)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta