寄り道08(ラズパイ4)

今日の目標

コラッツの問題

今日の結果

コラッツの問題
→達成

コラッツの問題

 コラッツの問題とは、自然数nは奇数だと3n+1,偶数だとn➗2と計算する処理を繰り返すと有限回の操作で必ず1になるという予想です。
 今回はラズパイ4のVSCode上でpythonソースコードを書きました。
 その途中で生じた課題点を書いておきます。

input関数の仕様

 戻り地が文字列型になってしまうので、n=input() では、nは文字列型のままです。
 解決策は、 n=int(input()) に変える。ただそれだけ。

トラップ作業中に気づいたこと

 トラップ作業中に、指定外の値が入力される対策後、コンソールをクリアして再度入力を求めるようにしました。
 この作業中、コンソールをクリアする箇所を参考サイト通りにos.system('cls')と書いていましたが、sh: 1: cls: not foundとメッセージを返されました。つまり、clsコマンドが存在しないと言われました。
 os.system('clear')と書いたらうまくいきました。これは、ラズパイのシェルがbashだったからみたいです。
 envコマンドを実行した結果、1行目にて確認できます。

今回のソースコード

import subprocess
import os
import time
def isascnum(s):
    return True if s.isdecimal() and s.isascii() else False
    #三項演算子 条件左:10進数の判別 条件右:半角かの判別
def collatz_test():
    n=input("Please enter a half size natural number:")
    if isascnum(n) and int(n)>0:
        n=int(n)
    else:
        print("Please enter a half size natural number.")
        time.sleep(3)
        os.system('clear')#shellによってclearではなくclsと書くことも。envコマンドで確認可能
        return collatz_test()
    # n=int(input("Please enter a natural number:"))
    m=n
    i=0
    while n!=1:
        if n%2:
            n=n*3+1
        else:
            n=n/2
        i=i+1
        #print(n)
        
    print("Input Value:",m,"\nNumber of Steps:",i)


# g=input("Please enter a natural number:")
# print(type(g)#これだと、gは文字列として扱われる
collatz_test()

次回の目標

Google Drive上のフォルダのショートカットを作る
Git Hubを触る

余談:特になし