簡體   English   中英

是什么原因導致此NameError? Python 3.x

[英]What causes this NameError? Python 3.x

我的代碼是rosalind.info網站上的IPRB問題。 對於變量k,m,n的示例數據集值2、2、2可以很好地工作。 但是,當我將變量更改為25、25、19之類時,它給出以下信息:

C:\Users\mNm\PycharmProjects\PySummer\venv\Scripts\python.exe C:/Users/mNm/PycharmProjects/PySummer/venv/Scripts/IPRB.py
Traceback (most recent call last):
  File "C:/Users/mNm/PycharmProjects/PySummer/venv/Scripts/IPRB.py", line 43, in <module>
    pr3 = float(pr31 + pr32 + pr33)
NameError: name 'pr31' is not defined

Process finished with exit code 1

我找不到任何嘗試的方法,也不知道是什么引起了問題。

謝謝你

k = 2
m = 2
n = 2

whole = k + m + n
org = [k, m, n]

for i in org:
    if i == k:
        k_start = float(k/whole)
        for j in org:
            if j == k:
                pr11 = float(k_start * ((k - 1) / (whole - 1)))
            if j == m:
                pr12 = float(k_start * (m / (whole - 1)))
            if j == n:
                pr13 = float(k_start * (n / (whole - 1)))

    pr1 = float(pr11 + pr12 + pr13)

    if i == m:
        m_start = float(m/whole)
        for j in org:
            if j == k:
                pr21 = float(m_start * (k / (whole - 1)))
            if j == m:
                pr22 = float(m_start * ((m - 1) / (whole - 1)) * 0.75)
            if j == n:
                pr23 = float(m_start * (n / (whole - 1)) * 0.5)

    pr2 = float(pr21 + pr22 + pr23)

    if i == n:
        n_start = float(n / whole)
        for j in org:
            if j == k:
                pr31 = float(n_start * (k / (whole - 1)))
            if j == m:
                pr32 = float(n_start * (m / (whole - 1)) * 0.5)
            if j == n:
                pr33 = float(n_start * ((n - 1) / (whole - 1)) * 0)

    pr3 = float(pr31 + pr32 + pr33)

dom_pr = float(pr1 + pr2 + pr3)

print(dom_pr)

僅當i==n並且org某個值等於k才定義pr31

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM