簡體   English   中英

初學者 Python 代碼問題

[英]Beginner Python Code Issues

5.2 編寫一個程序,反復提示用戶輸入整數,直到用戶輸入“完成”。 輸入“完成”后,打印出最大和最小的數字。 如果用戶輸入的不是有效數字的任何內容,則使用 try/except 捕獲它並發出適當的消息並忽略該數字。 輸入書中問題 5.1 的數字並匹配所需的輸出,如圖所示。

這是我的代碼:

largest = None
smallest = None
while True:
    inp = raw_input("Enter a number: ")
    if inp == "done" : break
    try:
        num = float(inp)
    except:
        print "Invalid input"
    if smallest is None:
        smallest = num
    elif num < smallest:
        smallest = num
    elif num > largest:
        largest = num

    continue

print "Maximum is", largest
print "Minimum is", smallest

******請讓我知道此代碼中的邏輯錯誤*****

答:你永遠不會分配最大的遠離 None 。

B:在 float(inp) 失敗的情況下,您仍然嘗試繼續。 你不應該。 雖然您可以將那些 if/elif 語句移到 try 塊中,但我建議您不要這樣做,因為您可能會冒着意外捕獲不應該捕獲的內容的風險。 相反,使用 try/except 被忽視的else塊。

在同一行中,除了您想要的錯誤而不是所有錯誤之外,這是一種很好的做法。

C:不需要繼續

largest = None
smallest = None
while True:
    inp = raw_input("Enter a number: ")
    if inp == "done" : break
    try:
        num = float(inp)
    except ValueError: #and not all errors!
        print "Invalid input"
    else: 
        # This block will execute if no exception is caught.
        # Yes, this is valid python.
        if smallest is None: #first number!
            smallest = num
            largest = num
        elif num < smallest:
            smallest = num
        elif num > largest:
            largest = num

print "Maximum is", largest
print "Minimum is", smallest

這是正確答案在此處輸入圖片說明

最大 = 無 最小 = 無

inp_list = [] while True: inp = raw_input("Enter a number:") if inp == "done": break else: inp_list.append(inp)

對於 inp_list 中的 num:嘗試:num = int(num) 如果最小的是 None:最小 = num 如果 num > 最大:最大 = num elif num < 最小:最小 = num 除了:
打印('無效輸入')

打印(“最大值”,整數(最大))打印(“最小值”,整數(最小))

編寫一個程序,反復提示用戶輸入整數,直到用戶輸入“完成”。 輸入“完成”后,打印出最大和最小的數字。 如果用戶輸入的不是有效數字的任何內容,則使用 try/except 捕獲它並發出適當的消息並忽略該數字。

largest = None
smallest = None

while True:
    inp = raw_input("Enter a number: ")

    if inp == "done":
        break

    try:
        num = int(inp)

        if smallest is None:
            smallest = num
        elif num < smallest:
            smallest = num
        elif num > largest:
           largest = num
    except:
        print "Invalid input"

    continue

print "Maximum is", largest
print "Minimum is", smallest 

如果執行后出現不匹配則出錯

largest = None
smallest = None
while True:
    inp = raw_input("Enter a number: ")
    if inp == "done" : break
    try:
        num = int(inp)
    except:
        print "Invalid input"
        continue
    if smallest is None:
        smallest = num
    elif num < smallest:
        smallest = num
    if largest is None:
        largest = num
    elif num > largest:
        largest = num

print "Maximum is", largest
print "Minimum is", smallest
largest = None
smallest = None
while True:
    num = raw_input("Enter a number:")
    if num == "done": break
    try: 
       nom = int(num)
    except: 
       print "Invalid input"
       continue

    if largest is None:
        largest = nom
    elif nom >  largest:
        largest = nom

    if smallest is None:
        smallest = nom
    elif nom < smallest:
        smallest = nom


print "Maximum is", largest
print "Minimum is", smallest

您應該在 try: 塊中包含您的邏輯以邏輯地運行此程序。 即使您將邏輯放在 catch 塊中,它也會運行。

在捕獲之后放置邏輯(if/else)無法計算您在捕獲錯誤之前輸入的數字的最高和最低數字。

正確方法

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == 'done': break
    try:
        ival = int(num)
                # This block will execute if no exception is caught.
        # Yes, this is valid python.
        if smallest is None: #first number!
            smallest = ival
            largest = ival
        elif ival  largest:
            largest = ival

    except ValueError: #and not all errors!
        print ('Invalid input')
        continue 


print('Maximum is', largest)
print('Minimum is', smallest)

錯誤的方法

largest = None
    smallest = None
    while True:
        num = input("Enter a number: ")
        if num == 'done': break
        try:
            ival = int(num)
        except ValueError:
            print ('Invalid input')
            continue 
    if smallest is None:
                smallest = ival
                largest = ival
            elif ival  largest:
                largest = ival

    print('Maximum is', largest)
    print('Minimum is', smallest)

代碼:

largest = None
smallest = None

while True:
num = input("Enter a number: ")
if num == "done":
    break
try:
    n = int(num)
    if smallest is None or n < smallest:
        smallest = n
    if largest is None or n > largest:
        largest = n
except ValueError:
    # num cannot be converted to an int
    print ("Invalid input")

print("Maximum is", largest)
print("Minimum is", smallest)

輸出:

Invalid input
Maximum is 10
Minimum is 2
largest = None
smallest = None
while True:
    inp = raw_input("Enter a number: ")
    if inp == "done" : break
    try:
        num = int(inp)
    except ValueError: #and not all errors!
        print ("Invalid input")
    else: 
        # This block will execute if no exception is caught.
        # Yes, this is valid python.
        if smallest is None: #first number!
            smallest = num
            largest = num
        elif num < smallest:
            smallest = num
        elif num > largest:
            largest = num

print ("Maximum is", largest)
print ("Minimum is", smallest)
#by Aless
largest  = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" : break

    try:
        intNum = int(num)
    except ValueError:
        #print('Error: Invalid input', num)
        print('Invalid input')
        continue
    else:
        if (largest  < intNum): largest = intNum
        if (smallest > intNum) or (smallest is None): smallest = intNum

print("Maximum", largest)
print("Minimum", smallest)
largest = 0
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" : 
        break
    try:
        num1=int(num)
        if(num1>largest):
            largest=num1
        elif((smallest is None) or(num1<smallest)):
            smallest=num1
    except ValueError:
        print("Invalid input")    
        continue

print("Maximum is", largest)
print("Minimum is",smallest)
largest = None
smallest = None
numbers = []
while True:
    num = input("Enter a number: ")
    if num == "done":
    break
    numbers.append(num)

for value in numbers:
    try:
        value = int(value) 
        if largest is None:
            largest = value
        elif value > largest:
            largest = value
    except:
        continue

for value in numbers:
    try:
        value = int(value)
        if smallest is None:
            smallest = value
        elif value < smallest:
            smallest = value
    except:
        print ("Invalid input")
        continue       `

print("Maximum is", largest)
print("Minimum is", smallest)
largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == 'done': break
    try:
        ival = int(num)
                # This block will execute if no exception is caught.
        # Yes, this is valid python.
        if smallest is None: #first number!
            smallest = ival
            largest = ival
        elif ival>largest:
            largest = ival
        elif ival<smallest:
            smallest=ival

    except ValueError: #and not all errors!
        print ('Invalid input')
        continue 

print('Maximum is', largest)
print('Minimum is', smallest)
largest = None
smallest = None

while True:
inp = input("Enter a number: ")

if inp == "done" : break
try:
    num = float(inp)
except ValueError: 
    print ("Invalid input")
else: 
    if smallest is None:
        smallest = num
        largest = num
    elif num < smallest:
        smallest = num
    elif num > largest:
        largest = num   
print ("Maximum is", int(largest))   
print ("Minimum is", int(smallest))

5.2 編寫一個程序,反復提示用戶輸入整數,直到用戶輸入“完成”。 輸入“完成”后,打印出最大和最小的數字。 如果用戶輸入的不是有效數字的任何內容,則使用 try/except 捕獲它並發出適當的消息並忽略該數字。 輸入 7、2、bob、10 和 4 並匹配下面的輸出。

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done" :
        break
    try:
        a = int(num)
    except:
        print("Invalid input") 
        continue
    if a > largest:
        largest = a
    if smallest is None:
        smallest = a
    if  a < smallest:
    smallest = a

print("Maximum is", largest)
print("Minimum is", smallest)

輸入

7
2
bob
10
4
done

輸出

Invalid input
Maximum is 10
Minimum is 2

#試試這個代碼。 它的工作請看截圖使用 7,4,bob, 10,4 和最后“完成”。

largest = None
smallest = None

while True:
    try:
        num = raw_input("Enter a number: ")
        if num == "done":
            break
        if largest is None:
            largest = int(num)
        if int(num) > largest:
            largest = int(num)
        if smallest is None:
            smallest = int(num)
        if int(num) < smallest:
            smallest = int(num)
    except:
        print ("Invalid input")
print ("Maximum is", largest)
print ("Minimum is", smallest)

在此處輸入圖片說明

試試這個代碼....

largest = None
smallest = None

while True:
    num = input("Enter a number: ")
    if num == "done" : 
        break 
    try:
        inp=float(num)
    except:
        print("Invalid input")
        continue

for value in [7,2,10,4]: 
    if largest is None:
        largest = value
    elif value>largest:  
        largest=value
        print("Maximum is", largest)            
for value in [7,2,10,4]: 
    if smallest is None:
        smallest = value
    elif value < smallest:
        smallest=value          
        print("Minimum is", smallest)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM