Hei, olen aloitteleva python ohjelmoija ja törmäsin tälläiseen ongelmaan. Pitäisi saada tehtyä laatikko jonka korkeus/leveys käyttäjä määrittää, mutta looppi ei suostu loppumaan.
def reunukset():
print("*" * määrä)
ehto = True
while ehto:
rivi = 1
print("*"+ " " * (määrä-2) + "*")
rivi = rivi + 1
if rivi == määrä:
ehto = False
print("*" * määrä)
else:
ehto = True
def laatikko():
print("*" * määrä) #Ehto False ei tule täytetyksi siksi ei lopu
ehto = True
while ehto:
rivi = 1
print("*"+ "*" * (määrä-2) + "*")
rivi = rivi + 1
if rivi == määrä:
ehto = False
print("*" * määrä)
else:
ehto = True
määrä = int(input("Anna tulostettavan neliön sivun pituus: "))
kysymys = input("Täytetäänkö alue merkeillä (k=kyllä): ")
if kysymys == 'k':
laatikko()
else:
reunukset()Muuttuja rivi saa jokaisen kierroksen alussa arvokseen 2, joten jos annat määrän joka on jotain muuta kuin kaksi, niin silmukka ei pysähdy ikinä. (Tosin vaikuttaa siltä, että silmukka pitäisi suorittaa vain arvoilla rivi > 2.)
While-silmukassa ei ole oikein mitään järkeä tässä tapauksessa, koska todistit juuri, miten helppoa sillä on tehdä sovellukseen bugi. Jos olisit käyttänyt for-silmukkaa range-funktion kanssa, niin kyseistä bugia ei olisi voinut edes tulla koodiin.
height = int(input("Foobar"))
for i in range(3, height + 1):
# Tulostuksen hoitava koodi tähän
passP.S. Älä käytä globaaleja muuttujia vaan anna kaikki tarvittavat arvot funktiolle parametreina.
P.P.S. Debuggaa! Jos silmukka ei pysähdy, niin tarkkaile pysähtymisehdon muuttujia vaikka tulostamalla niiden arvo joka kierroksella.
Kiitos!
Aihe on jo aika vanha, joten et voi enää vastata siihen.