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

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

(Python) 驗證和輸入適用于二進制,但不適用于其他基數系統

(Python) 驗證和輸入適用于二進制,但不適用于其他基數系統

喵喵時光機 2023-02-07 13:42:22
我是大學 IT 的一年級學生,我們的教授要求我們制作一個數字系統轉換器。我們不允許使用任何會自動轉換為數字系統的方法。我使用此代碼來驗證二進制輸入: def base2():    s = {'0','1'}    y = input('Allowed numbers are "0-1", Enter your whole number: ')    val = set(y)        while not (s == val or val == {'0'} or val == {'1'}):        y = input('Allowed numbers are "0-1", Enter your whole number: ')        val = set(y)    return y對于 base-2 以上的其他數字系統,我只是添加了缺少的驗證。例如在 base-3 中:def base3():    s = {'0','1','2'}    y = input('Allowed numbers are "0-2", Enter your whole number: ')    val = set(y)        while not (s == val or val == {'0'} or val == {'1'} or val == {'2'}):        y = input('Allowed numbers are "0-2", Enter your whole number: ')        val = set(y)    return y我只是添加到每個驗證的結尾。但出于某種原因,它要求驗證所有數字或允許的數字之一的重復。輸入輸出:Allowed numbers are "0-2", Enter your whole number: 20Allowed numbers are "0-2", Enter your whole number: 111['1', '1', '1']The decimal value of    " 111 "   base- 3  is 13Allowed numbers are "0-2", Enter your whole number: 211Allowed numbers are "0-2", Enter your whole number: 210['2', '1', '0']The decimal value of    " 210 "   base- 3  is 21將不勝感激任何幫助 <3
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

使用以下條件:

while any(x not in s for x in val):

代替:

while not (s == val or val == {'0'} or val == {'1'} or val == {'2'})

當您轉換為集合時,我們無法保證它的順序,因為集合本身沒有排序。因此,檢查s == val可能并不總是如您所想的那樣有效。此外,用戶可以輸入任意數字組合。


查看完整回答
反對 回復 2023-02-07
  • 1 回答
  • 0 關注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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