2014-10-27 40 views
-1

我不知道什麼是我的錯,這是我現在有多遠了:如何記錄在Python中輸入的最高和最低編號?

x = 1 
e = 0 
while x <= 50: 
    print "Please enter a number (from 1 to 9):" 
    b = float(raw_input()) 
    asd = 0 
    if asd == 0: 
     h = b 
     l = b   
     asd = 1 
    if b < l: 
     l = b 
    elif b > h: 
     h = b 
    if 1 <= b or b <= 9: 
     x = x * b 
     print x 
    else: 
     print "Number is too large or too small." 
    e = e + 1 

print "You have reached a value over 50." 
print "Highest number entered:", h 
print "Lowest number entered:", l 
print "Entered numbers:", e 

這是程序的輸出:

Please enter a number (from 1 to 9): 
5 
5.0 
Please enter a number (from 1 to 9): 
4 
20.0 
Please enter a number (from 1 to 9): 
5 
100.0 
You have reached a value over 50. 
Highest number entered: 5.0 
Lowest number entered: 5.0 
Entered numbers: 3 

爲什麼該程序給我5而不是4作爲輸入的最低數字,我該如何糾正?

+0

請不要使用單字母變量名稱。 – dursk 2014-10-27 19:03:50

+4

如果您使用了任何有意義的變量名稱,您可能會發現找到該錯誤更容易。 – jonrsharpe 2014-10-27 19:04:02

+0

感謝您的意見 – Lara 2014-10-27 19:22:17

回答

0

每當你經過循環,要設置asd0,使if聲明它下面執行每一次,所以你總是一味的與用戶剛輸入的值,你已經命名爲更新lb

+0

非常感謝你,我現在覺得有點遲疑:') – Lara 2014-10-27 20:27:34

1

你不斷進行復位asd每次迭代中,你需要設置外循環的變量,我會用一個列表,這將讓你獲得最小/最大和有效輸入數:

nums = [] # hold all nums outside the loop 
limit = 1 
while 50 >= limit: 
    num = float(raw_input("Please enter a number (from 1 to 9)") 
    if 1 <= num <= 9: 
     limit *= num 
     nums.append(num) # add all to list 
    else: 
     print "Number is too large or too small." 

print "You have reached a value over 50." 
print "Highest number entered:", max(nums) 
print "Lowest number entered:", min(nums) 
print "Entered numbers:", len(nums) 
0

只是爲了好玩:)

def get_float_input(msg="Enter a Number:"): 
    while True: 
     try: 
      return float(raw_input(msg)) 
     except ValueError: 
      print "Invalid Input Please Enter A Float!" 

from itertools import takewhile 
my_list = sorted(takewhile(lambda val:val < 50,iter(get_float_input,"Y"))) 
print "You Have Entered A # Greater than 50" 
print "Min:",my_list[0] 
print "Max:",my_list[-1] 
print "Entered %d Numbers"%len(my_list) 
+0

如果你解釋了在什麼情況下你實際上會推薦這種方法,它可能會更有趣。 – tripleee 2017-09-19 08:38:12