簡體   English   中英

如何正確編寫多個 if 語句

[英]how to properly write multiple if statements

試圖壓縮 if 語句並想知道是否有寫這個的正確原因。 這也是我的第一篇文章,也是編程的新手

mark1 = int(input("Enter mark 1: "))
if mark1 < 0 or mark1 > 100:
    help()
    mark1 = input(1)

mark2 = int(input("Enter mark 2: "))
if mark2 < 0 or mark2 > 100:
    help()
    mark2 = int(input("Enter mark 2: "))

mark3 = int(input("Enter mark 3: "))
if mark3 < 0 or mark3 > 100:
    help()
    mark3 = int(input("Enter mark 3: "))

mark4 = int(input("Enter mark 4: "))
if mark4 < 0 or mark4 > 100:
    help()
    mark4 = int(input("Enter mark 4: "))

mark5 = int(input("Enter mark 5: "))
if mark5 < 0 or mark5 > 100:
    help()
    mark5 = int(input("Enter mark 5: "))

首先,您應該查看獲取標記的邏輯:在您的情況下,它會提示一次,如果輸入的標記超出范圍,則會再次提示。 但是,如果在第二次詢問時輸入了無效值,它只會接受該值。 相反,您應該使用while循環,以便它一直詢問直到返回有效值。 您可能還想考慮輸入的數字不是integer 的情況。您可以通過嘗試將其轉換為int()然后捕獲生成的ValueError來做到這一點。

現在,重復的代碼可以包裝在 function 中,然后您只需調用該 function:

def get_mark(prompt):
    while True:
        m = input(prompt)
        try:
            m = int(m)
        except ValueError:
            print("Please enter an integer")
            continue # skip the rest of the loop and prompt for input again

        if 0 <= m <= 100: # If it's a valid mark, we return it
            return m

        help() # If we haven't returned so far, it was an invalid mark so we call help()

然后做

mark1 = get_mark("Enter mark 1: ")
mark2 = get_mark("Enter mark 2: ")
...

要添加到@Pranav Hosangadi 的答案,重復的任務應該循環運行。 如果您發現自己命名了許多變量,如marks0marks1等,您可能應該有一個名為marks的列表,並以marks[0]marks[1]等方式訪問它:

marks = []
for i in range(5):
    while True:
        mark = int(input(f"Enter mark {i + 1}: "))
        if 0 <= mark <= 100:
            break
    marks.append(mark)

如果使用 Pranav 的 function 來替換內部while循環,則可以使用列表理解:

marks = [get_mark(f'Enter mark {i + 1}: ') for i in range(5)]

聽起來您可以將值存儲到數字列表中; 您可以使用 try/except 結構來捕獲它。

由於您想處理用戶提供的輸入不是數字(或在您指定的范圍內)的情況; 我假設您想將其處理為“忽略”,顯示您的幫助函數的語法並繼續查詢,直到他們填寫了您最初請求的適當數量的項目?

 def help():
    print('please enter a number between 0 & 100')


numOfElements = 5
mark = []
elementNumber=0


while elementNumber < numOfElements:
    
    try:
        value=int(input("Enter mark " + str(elementNumber+1) + ":"))
        if(0<value<100):
            mark.append(value)
            elementNumber+=1
        else:
            help()
    except ValueError:
        help()

暫無
暫無

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

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