簡體   English   中英

如何阻止 Python 在我的代碼中將兩位數 integer 拆分為兩個單個整數

[英]How do I stop Python from splitting a double digit integer into two single integers in my code

這是任務

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

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

print("Maximum is", largest)
print('Minimum is', smallest)type here

當我使用一位數字時,該代碼有效,但如果我使用像 10 這樣的兩位數,那么它會打印 0 作為最小數字

例如,如果我輸入

1,3,10,2,6, done

即使最小的數字是 1,它也會打印:

maximum is 6
minimum is 0

我正在努力弄清楚所以任何幫助將不勝感激,謝謝!

你幾乎是對的,你可以刪除 for 循環,只需將最大值和最小值與intnum變量進行比較。 代碼看起來像這樣。

largest = None
smallest = None

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

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

這很好用。

您可以通過應用反向循環來減少 if 語句。

從開始用最小值初始化最大,即(float('-inf'))和用最大值初始化最小,即(float('inf'))

並在number>largest修改largest時檢查用戶輸入。 number<smallest修改smallest

一個邊緣案例假設用戶沒有直接輸入任何數字,而不是打印inf -inf ,這是不正確的。 所以只是將它們轉換為no minimum no maximum

代碼:

largest = float('-inf')
smallest = float('inf')

while True:
    num = input("Enter a number: ")
    if num.lower() == "done":  #Works for Done also..
        break
    try:
        intnum = int(num)
    except ValueError:
        print('Invalid')
        continue
    if intnum>largest:
        largest=intnum
    if intnum<smallest:
        smallest = intnum

print("Maximum is", largest if largest!=float('-inf') else 'No maximum')
print('Minimum is', smallest if smallest!=float('inf') else 'No minimum')

你也可以在 try 語句中同時使用這兩個if ..!

Output:

當用戶未輸入任何數字時

Enter a number: done
Maximum is No maximum
Minimum is No minimum

當用戶只輸入一個數字時

Enter a number: 4
Enter a number: done
Maximum is 4
Minimum is 4

用戶輸入超過 1 個數字的正常情況

Enter a number: 2
Enter a number: 7
Enter a number: 1
Enter a number: 3
Enter a number: 8
Enter a number: 9
Enter a number: done
Maximum is 9
Minimum is 1

暫無
暫無

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

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