satcomengineer Ответов: 2

Синтаксис Assert в Python 3.6 в visual studio 2013


Я работал с помощью простой программы, используемой в видео для начинающих YouTube. Код приведен здесь:
from math import sin,cos, radians
import sys

def make_dot_string(x):
    return '  '*int(10*cos(radians(x))+10) + 'o'

assert make_dot_string(90) ==   '          o'
assert make_dot_string(180) ==  'o'

def main():
    for i in range(10000000):
        s = make_dot_string(i)
        print(s)

    if __name__== "__main__":
        sys.exit(int(main() or 0))

Проблема заключается в утверждениях assert. Они идентичны видео, но мой компилятор вешает на них трубку. Любые мысли приветствуются.

Что я уже пробовал:

Я искал документацию по python и visual studio, но эта проблема, по-видимому, считается настолько тривиальной, что она не рассматривается ни в чем, с чем я еще сталкивался. Microsoft VS 2015 действительно обращается к python, но VS 2013, похоже, этого не делает.

Thomas Daniels

Не могли бы вы более конкретно сказать о том, что "мой компилятор зависает на них"? Получаете ли вы ошибку при запуске программы? (Python - это не компилируемый язык, а интерпретируемый) Если да, то какая ошибка?

Edit: Ах, я вижу, что это AssertionError.

2 Ответов

Рейтинг:
2

Thomas Daniels

Когда я запустил вашу программу на Python, я получил AssertionError. Я предполагаю, что это то, что вы подразумеваете под "мой компилятор зависает на них" (как Примечание, Python не компилируется, а интерпретируется). AssertionError означает "это утверждение было ложным". make_dot_string(90) было видимо нет равный '          o' потому что это равно '                    o' Я не знаю, что вы хотите сделать и каким должен быть ожидаемый результат, поэтому только вы можете понять, является ли это утверждение неправильным или нет. make_dot_string функция, что это неправильно.


Рейтинг:
2

Richard MacCutchan

Отлично работает в оболочке Python. Единственная проблема - это make_dot_string возвращаемое значение функции, должно быть:

return ' '*int(10*cos(radians(x))+10) + 'o' # the string at the beginning should be a single space.