-1

これは私の現在のコードです

#this is the input for population and predators
popOne=float(input("Enter the predator population : "))  20

popTwo=float(input("Enter the prey population :")) 1000

#period is the amount of iterations, in my case 10
period=float(input("Enter the number of periods: ")) 10

#This is the values for the given periods
A=float(input("Enter the value .1: ")) .1
B=float(input("Enter the value .01 : ")) .01
C=float(input("Enter the value .01 : ")) .01
D=float(input("Enter the value .00002: ")) .00002

#Formluas from my book for prey population, and predator population

prey=(popTwo*(1+A-(B*popOne)))

pred=(popOne*(1-C+(D*popTwo)))

i=0
for i in range(10):
    print(prey)
    print(pred)
    i = i+1 

この最後の部分で、エラーが発生しています。最初の反復を出力して、2 番目、3 番目などに進むコードを取得できません。

また、出力を次のようにするにはどうすればよいですか。

After period 1 there are 20 predators
After period 1 there are 900 prey

After period 2 there are 20 predators
After period 2 there are 808 prey 

After period 3 there are 20 predators
After period 3 there are 724 prey

等々。

4

4 に答える 4

0

この単純なコードは、捕食者の獲物モデルを示します

import matplotlib.pyplot as plt
import numpy as np

人口データ

print "Enter the population of the prey:"
prey = float(input());

print "Enter the population of the predator:"
pred = float(input());

print "Enter Simulation Time in seconds:"
simulation_time = int(input())

time = 0.0
t = []
dt = 0.05

A = .1
B = .01
C = .01
D = 0.00002


while time < simulation_time:
    prey = (prey*(1+A-(B*pred)))
    pred=(pred*(1-C+(D*prey)))
    time = time +dt

print("After {} seconds there are {:.0f} predators, and {:.0f} prey" .format(simulation_time, pred, prey))
于 2016-02-18T22:00:20.977 に答える
0

コードに関する多数の問題:

  1. period整数として読み取る必要があり、おそらくループの範囲を制御するために使用する必要があります。
  2. iループによって設定および更新されるため、手動で初期化または更新しようとしないでください。
  3. predおよびの式preyは、ループの反復ごとに適用する必要があります。つまり、式を print ステートメントの前にループに移動します。それらもint「ed」にする必要があります。
  4. とを計算predした後、それに応じて人口値をprey更新する必要があります。popOnepopTwo
  5. プロンプトを から"Enter the value .1: "などのより有益で一般的なものに変更する必要があります"Enter the value for coefficient A: "
于 2013-09-26T21:54:18.870 に答える
0

人口更新コードをループ内に配置する必要があります。また、開始母集団にもpredおよび変数を使用することをお勧めします。preyここにいくつかのコードがあります:

pred = float(input("Enter the predator population : ")) # use pred and prey here
prey = float(input("Enter the prey population :"))

periods = int(input("Enter the number of periods: "))

A=float(input("Enter the value .1: ")) # these should have better prompts
B=float(input("Enter the value .01 : "))
C=float(input("Enter the value .01 : "))
D=float(input("Enter the value .00002: "))

for i in range(periods):
   # update both pred and prey at once (so no temp vars are needed)
   # also, lots of unneeded parentheses were removed
   prey, pred = prey*(1 + A - B*pred), pred*(1 - C + D*prey)

   print("After period {} there are {:.0f} predators, and {:.0f} prey"
         .format(i, pred, prey))
于 2013-09-26T21:54:36.917 に答える
0

あなたが何をしようとしているのかは 100% 明確ではありませんが、prey と pred に値を割り当てる行はループ内にある必要がありますか?

また、prey と pred の値を計算する式は、ユーザーが入力した初期値ではなく、prey と pred の現在の値を使用すると思いますか?

于 2013-09-26T21:48:03.607 に答える