font
@font
В поисках самого лучшего

Как правильно использовать отступы в python?

Hi!
Запутался с этими отступами, кипит мозг, целую ночь думал над тем, как бы пропустить блок , если условие неверно. Помогите разобраться.
hello = (str(input("Жмакай Y, если хочешь сыграть в угадайку, ну или N, чтобы пропустить блок "))
if hello == "Y":
while running:
    guess = int(input('Введите целое число : '))

    if guess == number:
        print('Поздравляю, вы угадали.')
        running = False # это останавливает цикл while
    elif guess < number:
        print('Нет, загаданное число немного больше этого')
    else:
        print('Нет, загаданное число немного меньше этого.')
else:
    print('Цикл while закончен.')
    # Здесь можете выполнить всё что вам ещё нужно

print('Завершение.')

elif hello == "N":
	...............................
	...............................
	...............................
  • Вопрос задан
  • 3539 просмотров
Пригласить эксперта
Ответы на вопрос 5
@KIN1991
Python, PHP developer
почитайте pep8 и вам все станет ясно
Ответ написан
Tark
@Tark
Pyramid'альный мир
Если Python ваш первый язык, вам очень повезло!

if условие:
    действия при выполнении условия
elif услоие:
    действия при выполнени услвоия elif
else:
    действия во всех остальных случаях


В вашем коде нужно сдвинуть блок от while до print('Завершение.') включительно на четыре пробела вправо.
Почему повезло? Потому что у вас никогда не будет такого вот кода:
void main()
{
printf('Something'); 
    f++; v *= 2;
printf('Something else');


   foo(); }


как будто кого-то вырвало на монитор.
Python требует идеального, совершенного стиля оформления кода. Ну, кроме длины LoC в восемьдесят символов, тут вы можете спокойно нарушать это правило.
Ответ написан
Комментировать
TomasHuk
@TomasHuk
Я бы переписал так, через бесконечный цикл:
hello = str(input("Жмакай Y, если хочешь сыграть в угадайку, ну или N, чтобы пропустить блок "))
number = 5
while 1:
    if hello == "Y":
         guess = int(input('Введите целое число : '))
         if guess == number:
             print('Поздравляю, вы угадали.')
             break
         elif guess < number:
             print('Нет, загаданное число немного больше этого')
         else:
             print('Нет, загаданное число немного меньше этого.')
         print('Цикл while закончен.')
        # Здесь можете выполнить всё что вам ещё нужно

    elif hello == "N":
        break

    else:
        print('Вы не указали свой выбор')
        hello = str(input("Жмакай Y, если хочешь сыграть в угадайку, ну или N, чтобы пропустить блок "))

print('Завершение.')
Ответ написан
adugin
@adugin Куратор тега Python
1) Вместо input() из соображений безопасности лучше использовать raw_input()
>>> print 'Result: %s' % input('Expression: ')
Expression: 2+3
Result: 5

>>> print 'Result: %s' % input('Expression: ')
Expression: 1/0

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    print 'Result: %s' % input('Expression: ')
  File "<string>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero

Но что гораздо хуже - через input() можно выполнять злонамеренные действия:
>>> import os
>>> input()
os.remove('z:\\test.txt')
>>>

2) raw_input() возвращает str, поэтому дополнительное преобразование не нужно.
3) Вместо флага running лучше использовать 'while True:' и break в нужном месте.
Ответ написан
sumej
@sumej
DevOps
pastebin.com/UZf6vWz4
#!/usr/bin/python
# -*- coding: utf-8 -*-
import random

number=random.randint(1, 10)

hello = (str(raw_input("Жмакай Y, если хочешь сыграть в угадайку, ну или N, чтобы пропустить блок ")))
running=True

if hello == "Y":
    while running:
        try:
            guess = int(raw_input('Введите целое число : '))
        except KeyboardInterrupt:
            break
        except:
            print('Это не число. }:(')
            continue
        if guess == number:
             print('Поздравляю, вы угадали.')
             running = False # это останавливает цикл while
        elif guess < number:
             print('Нет, загаданное число немного больше этого')
        else:
             print('Нет, загаданное число немного меньше этого.')
else:
    print('Завершение.')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы