基本コンバータークラスへのユーザー入力の追加

unowho

だから私はあなたが電流と基数を持っていて、あなたの電流と基数を「10進数、8進数など」に変換できるはずの変換プログラムに取り組んでいます。私は基本的にプログラムを完了しましたが、新しい電流またはベースに更新する新しい電流またはベースのユーザー入力を取得しようとする最後のメソッドを実装する方法に困惑しています。

皆さん、ありがとうございました!

class numberConverter:
    def __init__(self, current=0, base=10):
        self.__current = current
        self.__base = base
    def print(self):
        print("Current set to:",
              self.__current, "Base set to:", self.__base)
    def menu(self):
        return("\n'S'et\n'C'urrent\n'B'inary\n'H'ex\n'O'ctal\n'D'ecimal\n'q'uit: ")
#Converts to Hexidecimal 
    def convHex(self):
        print("Hex Conversion Commencing")
        print("Converting:", self.__current, "Base", self.__base, "to Base 16")
        self.__current = format(int(str(self.__current), self.__base), '02X')
        self.__base = 16
        self.print()
#Converts to Octal
    def convOct(self):
        print("Octal Conversion Commencing")
        print("Converting:", self.__current, "Base", self.__base, "to Base 8")
        self.__current = format(int(str(self.__current), self.__base), '02o')
        self.__base = 8
        self.print()
#Converts to Decimal 
    def convDec(self):
        print("Decimal Conversion Commencing")
        print("Converting:", self.__current, "Base", self.__base, "to Base 10")
        self.__current = format(int(str(self.__current), self.__base))
        self.__base = 10
        self.print()
#Converts to Binary 
    def convBinary(self):
        print("Binary Conversion Commencing")
        print("Converting:", self.__current, "Base", self.__base, "to Base 2")
        self.__current = format(int(str(self.__current), self.__base), '02b')
        self.__base = 2
        self.print()
#Change the current value or base
#This is the section I am trying to work on
    def setCurrent(self):
        userInput = str(input("Set 'C'urrent or 'B'ase: "))
        if userInput.upper() == "C":
            print(input("Enter new current value: "))
        elif userInput.upper() == "B":
            print(input("Enter new base value: "))

        num1 = numberConverter(14,10)
        select = ""
        while select !='q':
            select = input(num1.menu())
            if select == "C":
                num1.print()
            if select == "H":
                num1.convHex()
            if select == "O":
                num1.convOct()
            if select == "D":
                num1.convDec()
            if select == "B":
                num1.convBinary()
            if select == "S":
                num1.setCurrent()
グラハム

ここでの主な問題は、入力フィルタリングにあるようです。この質問を読む必要があります; これは、一般的に入力をフィルタリングする方法の良い例を提供します。

あなたの場合、次のようなものを実装できます。

    def setCurrent(self):
        userInput = str(input("Set 'C'urrent or 'B'ase: "))
        if userInput.upper() == "C":
            while True:
                try:
                    value = int(input("Enter new current value: "))
                    break
                except ValueError:
                    print("Invalid number!")
            self.__current = value
        elif userInput.upper() == "B":
            while True:
                base = input(self.menu())
                if base in "HODB":
                    break
                else:
                    print('Base must be "H", "O", "D", or "B"!')
            if base == "H":
                self.convHex()
            elif base == "O":
                self.convOct()
            elif base == "D":
                self.convDec()
            elif base == "B":
                self.convBinary()

また、更新する必要がありますself.menu(); 別のメソッドとして保持するのではなく、このメソッドに文字列を追加します。

PEP-8を読む必要があります; これはPythonの標準スタイルガイドであり、他の人がコードを読みやすく、使いやすくすることができます。また、CodeReview.SEに(完成した)コードを投稿することも検討します(トピックに関するガイドラインを必ずお読みください)。現在のコードに加えることができる他の多くの改善があり、あなたは多くを学ぶでしょう。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スタンドアロンのGoogleAppsスクリプトコードへのユーザー入力の取得

分類Dev

ライブラリコールバックからのユーザー入力のデバウンス

分類Dev

コピーコンストラクターからのユーザー入力の印刷(java)

分類Dev

コピーコンストラクターからのユーザー入力の印刷(java)

分類Dev

コントローラへのユーザー入力値の保存

分類Dev

ユーザー入力をJavaのコンストラクターに渡す方法

分類Dev

javascriptユーザー入力でコンストラクターオブジェクトを追加する方法

分類Dev

ユーザー入力後の入力プロンプトへの追加

分類Dev

メインでのJavaコンストラクターのユーザー入力がコンストラクターでNullとして終了する

分類Dev

ユーザー入力によるクラス属性へのアクセス?

分類Dev

ユーザーの入力辞書へのアクセス

分類Dev

プレースホルダーへのユーザー入力の追加

分類Dev

プレースホルダーへのユーザー入力の追加

分類Dev

外部クラスからのメイン関数へのユーザー入力の供給

分類Dev

ユーザー入力のみの角度デバウンス

分類Dev

MS Server 2012-ユーザー、コンピューター、およびグループオブジェクトへの新しいクラスの追加

分類Dev

csvファイルへのユーザー入力の追加

分類Dev

ディスク使用コマンドへのユーザーリストの追加

分類Dev

通貨コンバーター(ユーザー入力)

分類Dev

ユーザー入力に応じたクラスのいくつかのインスタンス化

分類Dev

ユーザー入力の解析-バッチスクリプト

分類Dev

ユーザーからの入力とデータベースへのクエリ

分類Dev

スキャンを使用したデータフレームへの特定のユーザー入力

分類Dev

日付コンバーターのPrimefaces入力マスク

分類Dev

配列へのユーザー入力の追加とオプションリストの更新

分類Dev

ユーザー入力から複数のクラスインスタンスを作成する

分類Dev

Pythonリストフォームへのアクセスユーザー入力

分類Dev

データ構造へのperlユーザー入力

分類Dev

ユーザー入力からコンストラクターを作成するときに、クラスの重複値を許可しない

Related 関連記事

  1. 1

    スタンドアロンのGoogleAppsスクリプトコードへのユーザー入力の取得

  2. 2

    ライブラリコールバックからのユーザー入力のデバウンス

  3. 3

    コピーコンストラクターからのユーザー入力の印刷(java)

  4. 4

    コピーコンストラクターからのユーザー入力の印刷(java)

  5. 5

    コントローラへのユーザー入力値の保存

  6. 6

    ユーザー入力をJavaのコンストラクターに渡す方法

  7. 7

    javascriptユーザー入力でコンストラクターオブジェクトを追加する方法

  8. 8

    ユーザー入力後の入力プロンプトへの追加

  9. 9

    メインでのJavaコンストラクターのユーザー入力がコンストラクターでNullとして終了する

  10. 10

    ユーザー入力によるクラス属性へのアクセス?

  11. 11

    ユーザーの入力辞書へのアクセス

  12. 12

    プレースホルダーへのユーザー入力の追加

  13. 13

    プレースホルダーへのユーザー入力の追加

  14. 14

    外部クラスからのメイン関数へのユーザー入力の供給

  15. 15

    ユーザー入力のみの角度デバウンス

  16. 16

    MS Server 2012-ユーザー、コンピューター、およびグループオブジェクトへの新しいクラスの追加

  17. 17

    csvファイルへのユーザー入力の追加

  18. 18

    ディスク使用コマンドへのユーザーリストの追加

  19. 19

    通貨コンバーター(ユーザー入力)

  20. 20

    ユーザー入力に応じたクラスのいくつかのインスタンス化

  21. 21

    ユーザー入力の解析-バッチスクリプト

  22. 22

    ユーザーからの入力とデータベースへのクエリ

  23. 23

    スキャンを使用したデータフレームへの特定のユーザー入力

  24. 24

    日付コンバーターのPrimefaces入力マスク

  25. 25

    配列へのユーザー入力の追加とオプションリストの更新

  26. 26

    ユーザー入力から複数のクラスインスタンスを作成する

  27. 27

    Pythonリストフォームへのアクセスユーザー入力

  28. 28

    データ構造へのperlユーザー入力

  29. 29

    ユーザー入力からコンストラクターを作成するときに、クラスの重複値を許可しない

ホットタグ

アーカイブ