見出し画像

Pythonに手を出してみる②

前回(https://note.com/consida/n/n9caf859b290e)参照した萩原のコードを参考に、ちょっといじって別の計算をやってみる。

111...×111...

num = 0
n = 8
for i in range(0,n+1):
   num = num * 10 + 1
   print(num)
   nummm = num ** 2
   print('二乗は',nummm)
1
二乗は 1
11
二乗は 121
111
二乗は 12321
1111
二乗は 1234321
11111
二乗は 123454321
111111
二乗は 12345654321
1111111
二乗は 1234567654321
11111111
二乗は 123456787654321
111111111
二乗は 12345678987654321

最初、全角スペースが入っていたというだけで「SyntaxError: invalid character in identifier」などとエラーを吐かれた。Pythonにもそういう心の狭さがあるんだなぁ。

入力された数が7の倍数であるかの判定

n =int(input())
print('>入力nに',n,'が与えられました')
if(n%7==0):
   print('あたり!',n,'は7の倍数です')
else:
   print('ざんねん!',n,'は7の倍数ではありません')
>入力nに 100 が与えられました
ざんねん! 100 は7の倍数ではありません

当初コロンを抜かしただけでエラーを吐かれた。思ったほど融通が利かないなぁ。しかし、この「ざんねん!」って自分で書いたけど若干イラっとするなぁ(笑)。

入力された数の平方根を概算する

 ​n =int(input())
print('>入力nに',n,'が与えられました')
#繰り返す回数が分からないのでwhileを使う
i=0
while(i**2<=n):
   i=i+1
#iとi+1どっちが√nに近いのか分からないから
leftGosa=n-i**2
print(i,'の誤差:',leftGosa)
rightGosa=(i+1)**2-n
print(i+1,'の誤差:',rightGosa)
if(leftGosa<rightGosa):
   a=i
else:
   a=i+1
print(n,'の平方根は大体',a,'です')
>入力nに 1000 が与えられました
32 の誤差: -24
33 の誤差: 89
1000 の平方根は大体 32 です

数学的に合ってるのか今ひとつ自身がないが、答えは出てきた。実は math.sqrt などという関数があるらしいが、今回そんな武器を使わなかったことで「while処理が通った~」という喜びが得られた。

次回は数学の高校問題を解いてみたい。