codekata 2. 数値反転

8941 ワード

パラメータとして整数をreverse関数として受信します.その数字をひっくり返して返してください.
問題の特定
要求事項:数字の順序を逆さにする.
制限事項:負数の場合、逆さまの結果で-が一番前になるはずです.なお、0が一番前にある場合は0を省略する.
入力:数値
Output:順序が逆の数字
複文を書きますか.
0を省略した部分は、文字列タイプをintタイプに変換したときに自動的に解決されます.
私の考え方
  • まずintタイプは順序をどのように変更するか分からない.したがって、str関数を使用してstringに変換します.
  • rangeを反転し、繰り返し文を実行します.
  • の空の文字列変数に順次追加します.
  • の負数であれば、一番前の文字(-)を最後に貼り付けます.
  • int関数は、前の0が自動的に解決されます.
  • 1つ目の方法:繰り返し文と逆関数range関数に3番目のパラメータ値-1を加え,逆方向に行うことができるが,新学的reversed関数を用いた.
    文字列を含む変数(ここではresult)を作成し、繰り返し文に順番に挿入します.
    def reverse(number):
        if number < 0:
            str_num = str(number)[1:] + str(number)[0]
        else:
            str_num = str(number)
        result = ""
        for c in reversed(str_num):
            result += c
        return int(result) 
    2つ目の方法:スライド
    まさかグライダー技術.負数については、-シンボルをstring全体からスライドさせ、最後にint関数の結果値を負数にします.
    def reverse(number):
        sign = 1
        if number < 0:
            sign = -1
            number = number * -1
        result = int(str(number)[::-1]) * sign
        return result
    3つ目の方法:スライドとabs関数
    2つ目の方法と似ていますが、値引を吐くabs関数を使用すると、負数でも正数でも入ることができ、条件文がきれいになります.
    def reverse(number):
        result = str(abs(number))[::-1]
        if number < 0:
            result * -1
        return result
    第四の方法:残りの性質を利用する
    stringタイプに変換せずに、繰り返し文と演算子のみを使用して解く方法があります.数値の残りの演算子(%)と除算演算子(//)を使用します.
    繰り返されるたびに、結果は既存の結果に10の値を乗算し、既存の値を1桁上げ、残りの10を加算します.そうなると、数字の中で数字をひっくり返すしかない.
    def reverse(number):
        sign = 0
        if number < 0:
            sign = -1
            number = number * -1
        else:
            sign = -1
    
        result = 0
        while number != 0:
            result = result * 10 + (number % 10)
            number = number // 10
    
        return result * sign
    第5の方法:残りの性質とabs関数
    第4の方法と同様であるが,コードをより短くするためにabs関数を用いた.
    def reverse(number):
        result = 0
        abs_num = abs(number)
        while abs_num != 0:
            result = result * 10 + (abs_num % 10)
            abs_num = abs_num // 10
        if number < 0:
            result *= -1
        return result
    思考と質問
  • は既存の考えに閉じ込められているようだ.必ず複文を書かなければならないと思います.だから皆さんの解題の仕方に耳を傾けることが大切です.方法.
  • Pythonの内蔵関数をさらに理解する必要があります.reversedまたはabs関数.