亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python - 嘗試/除了 sum 函數

Python - 嘗試/除了 sum 函數

呼啦一陣風 2021-09-02 16:36:54
我是 python 新手,我正在練習,所以我正在做一個 sum 函數,現在我想在輸入不是我嘗試過的數字的東西時顯示一條消息錯誤try/excpet,它有點工作,但有時它沒有,這是我的代碼現在有:def sum(num_1, num_2):    sum_total = num_1 + num_2    print('The answer is:',sum_total)    return sum_totaldef app_sum():    try:        inp_1 = int(input('Number 1?: '))    except ValueError:        print('Invalid input, try again')        app_sum()    try:        inp_2 = int(input('Number 2?: '))    except ValueError:        print('Invalid input, try again')        app_sum()    sum(inp_1,inp_2)app_sum()這是我的輸出:Number 1?: 1Number 2?: 2The answer is: 3Number 1?: AInvalid input, try againNumber 1?: 1Number 2?: AInvalid input, try againNumber 1?: 1Number 2?: 1The answer is: 2Traceback (most recent call last):  File "suma.py", line 9, in app_sum    inp_1 = int(input('Number 1?: '))ValueError: invalid literal for int() with base 10: 'A'During handling of the above exception, another exception occurred:Traceback (most recent call last):  File "suma.py", line 24, in <module>    app_sum()  File "suma.py", line 12, in app_sum    app_sum()  File "suma.py", line 20, in app_sum    sum(inp_1,inp_2)UnboundLocalError: local variable 'inp_2' referenced before assignment
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

您收到此錯誤的原因是因為有一種情況,您將其拖到程序末尾,


sum(inp_1,inp_2)

沒有實際定義 inp_1 或 inp_2。這是因為當您點擊“除外”時,您又在運行該程序。這不會“殺死”失敗的程序,它只是啟動它的另一個實例。當該實例完成時,第一個實例也想結束,但正如我們之前提到的,它缺少一個變量,因此會引發錯誤。見堆棧;


考慮一下食堂里盤子疊在一起的例子。位于頂部的板是第一個被移除的板,即已放置在最底部位置的板在堆疊中保留的時間最長......


雖然最后一個“盤子”留在堆棧中的時間最長,但它仍然需要脫落。在我們的例子中,“最后一個盤子”是 app_sum() 的實例,它有錯誤的輸入。當它離開堆棧時,它會為您提供您在帖子中包含的錯誤。


試試這個:


def sum(num_1, num_2):

    sum_total = num_1 + num_2

    print('The answer is:',sum_total)

    return sum_total


def app_sum():

    while True:

        try:

            inp_1 = int(input('Number 1?: '))

            inp_2 = int(input('Number 2?: '))

            break

        except ValueError:

            print('Invalid input, try again')

    sum(inp_1, inp_2)

app_sum()

輸出如下所示:


root@alarmux:/home/abdmin/python# ./test.py

Number 1?: 1

Number 2?: 2

The answer is: 3

root@alarmux:/home/abdmin/python# ./test.py

Number 1?: a

Invalid input, try again

Number 1?: 2

Number 2?: 3

The answer is: 5


查看完整回答
反對 回復 2021-09-02
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

您可以重復直到給出有效答案,而不是遞歸:


def sum(num_1, num_2):

    sum_total = num_1 + num_2

    print('The answer is:',sum_total)

    return sum_total


def app_sum():

    inp_1 = None

    while inp_1 is None:

        try:

            inp_1 = int(input('Number 1?: '))

        except ValueError:

            print('Invalid input, try again')

    inp_2 = None

    while inp_2 is None:

        try:

            inp_2 = int(input('Number 2?: '))

        except ValueError:

            print('Invalid input, try again')


    sum(inp_1,inp_2)


app_sum()

示例輸出:


Number 1?: fjksdfsdflkj

Invalid input, try again

Number 1?: 3

Number 2?: fds

Invalid input, try again

Number 2?: 4

The answer is: 7


查看完整回答
反對 回復 2021-09-02
  • 2 回答
  • 0 關注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號