2016-07-24 8 views
0

何らかの理由でグローバル変数total_hoursを変更できません。または、出力が常に0 0 0の理由は何ですか?あなたがここに何これは常に出力に0 0 0を与えますか?

hour = 1 
day = 24 
week = 168 
part_day = 8 
total_hours = int(0) 
hours = total_hours % 168 
days = ((total_hours % 168) // 7) 
weeks = total_hours // 168 

def sleep(): 
     global total_hours 
     global week 
     total_hours += week 

def show_time(): 
     global hours 
     global days 
     global weeks 
     print(hours, days, weeks) 

sleep() 

show_time() 
+1

あなたは 'hours'、' days'、または 'weeks'の値を決して変更しませんでした。変更したのは 'total_hours'です。変数は 'total_hours'の分数ではなく、値に割り当てられます。 – zondo

+0

しかし、私はtotal_hours自体の値を変更した場合、それは動作します... –

+0

他の変数を作成する前にそれを変更すると、はい。私があなたにエリックと呼んで、エリックに何かを与えるように隣人に言うなら、彼はあなたにそれを与えるでしょう。私が彼に言う前に、私は私の兄弟がエリックであると彼に言うなら、彼はあなたのものではなく、私の兄弟に物を渡すでしょう。私が彼に*後で*私の兄弟がエリックであることを伝えれば、それは彼がすでにしたことを変えないだろう。あなたはまだそれを持っていません。 – zondo

答えて

1

は以下の通りです:

  1. あなたは、変数total_hours
  2. に値0を割り当てるあなたは変数total_hoursを使用することにより、変数hourdaysweekの値を計算します値が0であり、結果もそれらに割り当てます
  3. 変数の値を変更します

    hour = 1 
    day = 24 
    week = 168 
    part_day = 8 
    total_hours = int(0) 
    hours = total_hours % 168 
    days = ((total_hours % 168) // 7) 
    weeks = total_hours // 168 
    
    def sleep(): 
         global total_hours 
         global week 
         total_hours += week 
    
    print 'values before `sleep`', hours, days, weeks, total_hours 
    sleep() 
    print 'values after `sleep`', hours, days, weeks, total_hours 
    

    あなたの場合:彼らはより良いあなたがprintとより少しを果たすべきである何が起こっているかを理解するために2

に計算されたようtotal_hours

  • あなたはhourdaysweeksの値を印刷します値を計算するにはtotal_hoursにしてください。

    hour = 1 
    day = 24 
    week = 168 
    part_day = 8 
    total_hours = int(0) 
    hours = total_hours % 168 
    days = ((total_hours % 168) // 7) 
    weeks = total_hours // 168 
    
    def recalc(): 
        global weeks, days, hours, total_hours 
        hours = total_hours % 168 
        days = ((total_hours % 168) // 7) 
        weeks = total_hours // 168 
    
    def sleep(): 
        global total_hours, week 
        total_hours += week 
    
    def show_time(): 
        global hours, days, weeks 
        print(hours, days, weeks) 
    
    sleep() 
    recalc() 
    show_time() 
    
  • 関連する問題