Здравейте! От няколко часа се опитвам, да разбера защо компилатора не чете часта при последния elif(оградил см го с червено. )
Качил съм ви и това какво ми извежда компилатора, по принцип трябва да се редуват редовете, но те не го правят
import math
broyach=0
br=0
br1=0
size = int(input())
for z1 in range(1,size+1):
broyach = broyach+1
midle_line = int(math.ceil(size/2))
if (broyach<midle_line):
br=br+1
if (br%2 != 0):
print((size-2)*"*"+"|"+" "+"|"+(size-2)*"*")
else:
print((size-2)*"-"+"|"+" "+"|"+(size-2)*"-")
elif (broyach == midle_line):
print((size-1)*" "+"@")
else:
br1=br1+1
if (br1%2 != 0):
print((size-2)*"*"+"|"+" "+"|"+(size-2)*"*")
else:
print((size-2)*"-"+"|"+" "+"|"+(size-2)*"-")if (broyach < midle_line):
...инструкции за случай 1
elif (broyach == midle_line):
...инструкции за случай 2
else:
...инструкции за случай 3
ammornil написа:В посочения от Вас код, в частта
...
elif (broyach > midle_line):
br1=0
br1=br1+1
...
br1 никога не приема четна стойност. Всеки път, когато системата влезе в последния if..elif, br1 приема стойност нула, после се увеличава с едно и остава винаги равно на 1, което е винаги нечетно. Може би е по-добре да бъде така:
- Код: Избери целия код
import math
broyach=0
br=0
br1=0
size = int(input())
for z1 in range(1,size+1):
broyach = broyach+1
midle_line = int(math.ceil(size/2))
if (broyach<midle_line):
br=br+1
if (br%2 != 0):
print((size-2)*"*"+"|"+" "+"|"+(size-2)*"*")
else:
print((size-2)*"-"+"|"+" "+"|"+(size-2)*"-")
elif (broyach == midle_line):
print((size-1)*" "+"@")
else:
br1=br1+1
if (br1%2 != 0):
print((size-2)*"*"+"|"+" "+"|"+(size-2)*"*")
else:
print((size-2)*"-"+"|"+" "+"|"+(size-2)*"-")
Ако ми позволите да Ви посъвтвам:
***декларирайте величините (променливи и константи), които са ви нужни за даден метод или програма, в началото на кода на метода (програмата). Това прави нещата по-лесни за проследяване (особено ако добавяте коментари за предназначението на всяка декларирана променлива или константа). Освен това позволява инициализиране на всяка от тях в момента на декларация и избягва проблеми, като показания по-горе.
***когато имате серия от възможни стойности, които изчерпват всички възможни случаи, последната опция няма нужда да е от тип elif, а може да е просто else.
В горния пример, за променливата broyach имаме три възможности >> може да е по-голяма, равна, или по-малка на константата midle_line. Затова можем да изредим следните случаи:
- Код: Избери целия код
if (broyach < midle_line):
...инструкции за случай 1
elif (broyach == midle_line):
...инструкции за случай 2
else:
...инструкции за случай 3
Надявам се да съм Ви бил полезен.
Успех!
[tex][/tex]
Назад към PHP, Python и други езици за програмиране
Регистрирани потребители: Google [Bot]