【问题标题】:invalid syntax when defining a function that calculates random values定义计算随机值的函数时语法无效
【发布时间】:2020-06-18 22:04:13
【问题描述】:

我正在尝试来自 QuantEcon (https://python.quantecon.org/functions.html) 的以下问题:

....编写一个函数,返回以下随机设备的一个实现

掷一枚公正的硬币 10 次。 如果在此序列中至少出现一次正面连续出现 k 次或多次,则支付 1 美元。 如果没有,则不支付任何费用。

我的代码如下:

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



【问题讨论】:

  • 嗯,它应该指出你有错误的那一行...特别是,else 语句不能自己对齐
  • 顺便说一句,import random。你不需要 numpy
  • 每当您遇到语法错误时,请随时查看官方 python 文档以了解正确的语法,直到您记住它... 9/10 次您会很容易地发现它。祝你好运
  • 错误很明显。只需将: 放在 elif 语句的末尾

标签: python function


【解决方案1】:

python 中没有else if,将其替换为elif 并重新缩进您的代码。此外,您想使用and,而不是&amp;。下次,请包括跟踪日志:)

【讨论】:

  • 包括更改。
  • 您仍然没有包含跟踪日志,也没有重新缩进代码。
  • 您在elif 评估结束时缺少:
【解决方案2】:

代码中的正确语法是

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

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多