2017-12-06 3 views
1
def gDiceRoll(): 

    gDiceOptions.destroy() 

    global gDiceRoll 
    gDiceRoll = Tk() 
    gDiceRoll.title("Green Dice Roll") 
    gDiceRoll.config(background="#32cd32") 

    lbloutcome = Label(gDiceRoll, text="?", width="12", height="8", bg="#32cd32") 

    play() 

    while True: 

     outcomeG = random.randint(1, 100) 
     lbloutcome = Label(gDiceRoll, text="?", width="12", height="8", bg="#32cd32") 

     if outcomeG <= 25: 

      lbloutcome.config(text="G1", font=(25)) 
      gDiceRoll.update() 
      f = open("Logs.txt", "a") 
      ts = time.time() 
      sttime = datetime.datetime.fromtimestamp(ts).strftime('%Y%m%d_%H:%M:%S - ') 
      f.write(sttime + "G1 \n") 
      f.close() 
      photo = PhotoImage(file=r"C:\Temp\Dice_Roll\pics\G1.gif") 
      lblop = Label(gDiceRoll, image=photo) 
      lblop.pack() 
      lbloutcome.pack() 
      gDiceRoll.mainloop() 
      gDiceRoll.after(1) 
      os.execl(sys.executable, sys.executable, *sys.argv) 
      break 

     elif outcomeG <= 22: 

      lbloutcome.config(text="G2", font=(25)) 
      gDiceRoll.update() 
      f = open("Logs.txt", "a") 
      ts = time.time() 
      sttime = datetime.datetime.fromtimestamp(ts).strftime('%Y%m%d_%H:%M:%S - ') 
      f.write(sttime + "G2 \n") 
      f.close() 
      photo = PhotoImage(file=r"C:\Temp\Dice_Roll\pics\G2.gif") 
      lblop = Label(gDiceRoll, image=photo) 
      lblop.pack() 
      lbloutcome.pack() 
      gDiceRoll.mainloop() 
      gDiceRoll.after(1) 
      os.execl(sys.executable, sys.executable, *sys.argv) 
      break   
     #etc 

私はIRプログラムを実行するたびに常にはG1で出てきます。私はそれを多くの方法で修正しようとしましたが、他の問題を作成します。 elif G1 < = 25は、G1を実行する確率は25%ですが、常にG1を実行することを意味します。同じ結果乱数(パイソン)とするたびに

どうすればこの問題を解決できますか?すべてのヘルプは大幅に

+1

もちろん 'outcomeG <= 25'は 'outcomeG <= 22'よりも強いです。 –

+0

また、 'if' /' elif'文の優先度を変更する必要があります – SneakyTurtle

+0

このコードには多大な誤りがあります。 'mainloop'を呼び出す前に' randint'を一度呼び出すだけで、無限ループでは 'mainloop'を決して呼び出さないでください。 –

答えて

0

だがoutcomeG <= 22

を言わせて理解されるであろう、あなたのコードでは、最初のoutcomeG <= 25条件に遭遇し、常に、最初の条件を入力します。

あなたは何のためにループしている他のoutcomeG > 25場合何かをにあなたが持っているもちろん<=22最初

をテストするために、あなたのifelifを交換する必要があります。

関連する問題