неверный синтаксис при определении функции, которая вычисляет случайные значения - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь ответить на следующий вопрос из QuantEcon (https://python.quantecon.org/functions.html):

.... написать функцию, которая возвращает одну реализацию следующего случайного устройства

Переверните беспристрастную монету 10 раз. Если голова встречается k или более раз подряд в этой последовательности хотя бы один раз, заплатите один доллар. Если нет, то ничего не платите.

Мой код выглядит следующим образом:

from numpy.random import uniform

def coinpay(k):
    count=0
    for i in range(11):
        U=uniform(0,1)
        if U<0.5:
            count=count+1
            if count>=k:
                return(1)
            elif count<k and i==10
                return(0)

Кажется, выдает ошибку из-за неверного синтаксиса. Я не уверен, почему это так. Ошибка во второй последней строке.

runfile('/Users/xyz/Desktop/Factorial', wdir='/Users/xyz/Desktop')
Traceback (most recent call last):

  File "/Users/xyz/opt/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-7-b7c496572ff1>", line 1, in <module>
    runfile('/Users/xyz/Desktop/Factorial', wdir='/Users/xyz/Desktop')

  File "/Users/xyz/opt/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "/Users/xyz/opt/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "/Users/xyz/Desktop/Factorial", line 18
    elif count<k and i==10
                          ^
SyntaxError: invalid syntax




Ответы [ 2 ]

2 голосов
/ 06 марта 2020

В python нет else if, замените его на elif и измените код вашего кода. Более того, вы хотите использовать and, а не &. В следующий раз, включите tracelog, пожалуйста:)

0 голосов
/ 06 марта 2020

Правильный синтаксис в вашем коде:

def coinpay(k):
    count=0
    for i in range(11):
        U = uniform(0,1)
        if U < 0.5 :
            count=count+1
            if count>=k:
                return 1
            elif count<k and i==10:
                return 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...