第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Python:用字符串替換數值

Python:用字符串替換數值

湖上湖 2021-09-25 09:33:49
我正在嘗試用字符串替換用戶輸入的值以使輸出更清晰我認為 if 語句會有所幫助,但我不確定它如何與我的預期輸出相關聯 def main() :    number = int(input("Enter your number: "))    base = int(input("Convert to\n" \    "   Binary[2] - Octal[8] - Hexadecimal[16]: "))    if base == 2 :        "binary"     elif base == 8 :        "octal"    else:        "hexadecimal"    print("\n"+str(number) +" in "+ str(base) + " is: " + str(convert(number, 10, base)))  def convert(fromNum, fromBase, toBase) :    toNum = 0    power = 0    while fromNum > 0 :        toNum += fromBase ** power * (fromNum % toBase)        fromNum //= toBase        power += 1    return toNummain()我想要得到的是:如果用戶輸入 5 作為他們的數字和 2 作為轉換。輸出將是:“二進制中的 5 是:101”
查看完整描述

6 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

順便說一句,看起來您的基本轉換實際上不會做您想要的。您應該查看如何將任何基數中的整數轉換為字符串?正確地進行轉換(例如,十六進制中有字母 AF,這些不是由您的代碼處理的)。


要接受名稱而不是數字,您需要更改這行代碼:


base = int(input("Convert to\n   Binary[2] - Octal[8] - Hexadecimal[16]: "))

這里發(fā)生了什么事?input()從標準輸入中取出一行。在交互式情況下,這意味著用戶輸入一些東西(希望是一個數字)然后按回車鍵。我們得到那個字符串。然后int將該字符串轉換為數字。


你的convert期望base是一個數字。你想輸入等"binary"以對應base = 2。實現這一目標的一種方法是使用 dict。它可以將字符串映射到數字:


base_name_to_base = {'binary': 2, 'octal': 8, 'hexadecimal': 16}

base = base_name_to_base[input('Choose a base (binary, octal, hexadecimal): ')]

請注意,如果不是字典中的鍵,則base_name_to_base[x]可能會失?。╮aise KeyError)x。所以你想處理這個(如果用戶輸入"blah"怎么辦?):


while True:

    try:

        base = base_name_to_base[input('Choose a base (binary, octal, hexadecimal): ')]

        break

    except KeyError:

        pass

這將循環(huán)直到我們遇到中斷(這僅在索引base_name_to_base不會引發(fā)鍵錯誤時發(fā)生。


此外,您可能希望處理不同的情況(例如"BINARY")或任意空格(例如"  binary  ")。您可以通過調用.lower()和.strip()返回的字符串來做到這一點input()。


查看完整回答
反對 回復 2021-09-25
?
阿波羅的戰(zhàn)車

TA貢獻1862條經驗 獲得超6個贊

嘗試


 def main() :

    number = int(input("Enter your number: "))

    base = int(input("Convert to\n" \

    "   Binary[2] - Octal[8] - Hexadecimal[16]: "))

    base_string = "None"        


    if base == 2 :

        base_string = "binary"

     elif base == 8 :

        base_string = "octal"

    else:

        base_string = "hexadecimal"


    print("\n {} in {} is: {}".format(str(number), base_string, str(convert(number, 10, base))))



  def convert(fromNum, fromBase, toBase) :

    toNum = 0

    power = 0


    while fromNum > 0 :

        toNum += fromBase ** power * (fromNum % toBase)

        fromNum //= toBase

        power += 1

    return toNum


main()

您的問題是 if 語句中的“二進制”部分。它對您的代碼和輸出幾乎沒有影響。您必須將文字表示(“二進制”,...)存儲在某個變量(“base_string”)中。然后你可以在你的輸出中使用這個變量。


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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