我在更改函式中的全域變數時遇到問題,該函式還使用用戶輸入和(太多)if 陳述句來執行此操作。如果我更改某些內容,我會不斷收到相同的錯誤,但會出現不同的錯誤。
m=0.0
AH=1.0
ndays=0.0
Day_Count = (ndays," day out of 90")
def AtomicHabits():
wo = input("Did you work out? Y/N? ")
tr = input("Did you study/practice trading? Y/N?")
co = input("Practice coding? Y/N?")
if (wo=='y'):
m=m 1
if (tr=='y'):
m=m 1
if (co=='y'):
m=m 1
if (m==3):
m=.01
elif (m==2):
m=.0066
elif (m==1):
m=.0033
elif (m==0):
m=(-.01)
AH=AH*(1.0 m)
ndays=ndays 1
return AH, m, ndays;
AtomicHabits()
print(“Today’s change is “, m*100, “% on ”, Day_count, bringing total improvement to “, AH )
我完全迷路了,第一次在這里發帖,所以想知道如何使用搜索
uj5u.com熱心網友回復:
您需要在函式內將它們分配為全域。
m = 0
...
def func():
global m
..
m = 1
這將使 m = 1
uj5u.com熱心網友回復:
我會將您的代碼重寫為類似的內容。
- 拆分輸入部分
- 模塊化代碼以在其上構建可擴展的測驗。
M = 0.0
AH = 1.0
Ndays=0.0
def check_atomic_habits(wo,tr,co):
global M,AH,Ndays
if (wo=='y'):
M=M 1
if (tr=='y'):
M=M 1
if (co=='y'):
M=M 1
if (M==3):
M=.01
elif (M==2):
M=.0066
elif (M==1):
M=.0033
elif (M==0):
M-=-.01
AH=AH*(1.0 M)
Ndays=Ndays 1
def user_input():
# Replace here
wo = "Y" # input("Did you work out? Y/N? ")
tr = "Y" # input("Did you study/practice trading? Y/N?")
co = "N" # input("Practice coding? Y/N?")
return wo,tr,co
# This is simulation for two days.
for i in range(2):
wo,tr,co=user_input()
check_atomic_habits(wo=wo,tr=tr,co=co)
print(f"Today’s change is , {M*100} on {Ndays} day out of 90, bringing total improvement to {AH}" )
這將生成以下 o/p:
Today’s change is , 1.0 on 1.0 day out of 90, bringing total improvement to 1.01
Today’s change is , 1.0 on 2.0 day out of 90, bringing total improvement to 1.0201
uj5u.com熱心網友回復:
要解決您的問題,您可以使用全域變數或將變數作為函式的引數傳遞并回傳它們
- 全域變數
def 原子習慣():
global AH, m, ndays
wo = input("Did you work out? Y/N? ")
tr = input("Did you study/practice trading? Y/N?")
co = input("Practice coding? Y/N?")
if (wo=='y'):
m=m 1
if (tr=='y'):
m=m 1
if (co=='y'):
m=m 1
if (m==3):
m=.01
elif (m==2):
m=.0066
elif (m==1):
m=.0033
elif (m==0):
m=(-.01)
AH=AH*(1.0 m)
ndays=ndays 1
AtomicHabits()
- 函式的引數
def AtomicHabits(AH, m, ndays):
wo = input("Did you work out? Y/N? ")
tr = input("Did you study/practice trading? Y/N?")
co = input("Practice coding? Y/N?")
if (wo=='y'):
m=m 1
if (tr=='y'):
m=m 1
if (co=='y'):
m=m 1
if (m==3):
m=.01
elif (m==2):
m=.0066
elif (m==1):
m=.0033
elif (m==0):
m=(-.01)
AH=AH*(1.0 m)
ndays=ndays 1
return AH, m, ndays
AH, m, ndays = AtomicHabits(AH, m, ndays)
我通過一些更改重寫了您的代碼
m = 0.0
AH = 1.0
ndays = 0.0
def AtomicHabits(m, AH, ndays):
wo = input("Did you work out? Y/N? ")
tr = input("Did you study/practice trading? Y/N?")
co = input("Practice coding? Y/N?")
m = [wo, tr, co].count("y")
if m==0:
m = -0.01
else:
m = 0.01/(3/m)
AH *= 1.0 m
ndays=ndays 1
return m, AH, ndays
m, AH, ndays = AtomicHabits(m, AH, ndays)
print(f"Today’s change is , {m*100} on {ndays} day out of 90, bringing total improvement to {AH}" )
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492276.html
上一篇:org.springframework.dao.IncorrectResultSizeDataAccessExceptionMongoLimit不起作用?
