2012-04-22 27 views
0

代碼:如何確保第一個隨機值總是大於第二個?

def Division(): 

    print "************************\n""********DIVISION********\n""************************" 
    counter = 0 
    import random 
    x = random.randint(1,10) 
    y = random.randint(1,10) 
    answer = x/y 
    print "What will be the result of " + str(x) + '/' + str(y) + " ?" 
    print "\n" 
    userAnswer = input ("Enter result: ") 
    if userAnswer == answer: 
     print ("Well done!") 
     print "\n" 
     userInput = raw_input ("Do you want to continue? \n Enter 'y' for yes or 'n' for no.") 
     if userInput == "y": 
      print "\n" 
      Division() 
     else: 
      print "\n" 
      Menu() 
    else: 
     while userAnswer != answer: 
      counter += 1 
      print "Try again" 
      userAnswer = input ("Enter result: ") 
      if counter == 3: break 
     userInput = raw_input ("Do you want to continue? \n Enter 'y' for yes or 'n' for no.") 
     if userInput == "y": 
      print "\n" 
      Division() 
     else: 
      print "\n" 
      Menu() 

在這種情況下,我想x價值爲總是低於y價值更大。我該怎麼做? 減法的代碼是相似的,問題保持不變,目標是避免 的負面結果。

+1

沒有你的問題不對,但對於將來的問題,考慮在遇到小問題時,不要讓代碼閱讀。這很容易可能是「給定兩個數字,你如何讓x =小一個,y =大一個?」 – 2012-04-22 00:53:27

回答

5

你可以檢查是否x < y並交換它們,例如

if x < y: 
    x, y = y, x 

請注意,在python中,您可以交換兩個變量而不需要臨時變量。

您甚至可以通過使用bultin minmax採取進一步的快捷方式,並在一行中執行操作,例如,

x, y = max(x,y), min(x,y) 
+0

非常感謝Anurag Uniyal,我仍然在那裏學習,因爲我很高興有像你這樣的人準備好幫助那些尋求答案的人。 – Geostigmata 2012-04-22 00:43:39

+1

@Geostigmata歡迎您,如果您喜歡,您可以選擇它作爲答案。 – 2012-04-22 00:51:07

2

除了Anrag Uniyal的答案,你也可以試試這個:

y,x = sorted([x,y]) 
+0

這也工作得很好!謝謝inspectorG4dget – Geostigmata 2012-04-22 00:48:57

+0

+1永遠不會通過最小/最大的方式:) – 2012-04-22 00:51:38

+0

得到我的程序完成!謝謝你們 - 從來沒有想過迴應會如此迅速! :D – Geostigmata 2012-04-22 00:58:12

1

你可以x和10之間做randint獲得大於x一個數字:

x = random.randint(1,10) 
y = random.randint(x,10) 
+1

它可能並不重要,但請注意,這會微妙地改變值的分佈。以x = 2,y = 3爲例。在原始中,這種組合將以概率2(0.1 * 0.1)= 0.02(交換後x = 2且y = 3或x = 3且y = 2)發生。使用這種方法,它將以0.1 *(0.125)= 0.0125(x = 2,然後y = 3從3..10) – chepner 2012-04-22 01:31:07

相關問題