0
0

表記の訂正 (paizaランク C 相当)

Posted at

問題

paiza 研究所では実験データをわかりやすい形式で保存したいのですが、
機械によって得られる数値には、次のような表記ミスがあることがわかっています。

・ ミス 1
先頭に必要のない 0 がいくつかついてしまう
・ 本来 1 である数値が 0001 と表記されてしまう
・ 本来 0.001 である数値が 00.001 と表記されてしまう

・ ミス 2
小数である数値の末尾に必要のない 0 がいくつかついてしまう
・ 本来 0.1 である数値が 0.10 と表記されてしまう

・ ミス 3
小数である数値に小数点が複数個ついてしまう
ただし、 1 つめの小数点の位置が正しい小数点の位置であるものとします
・ 本来 0.123 である数値が 0.1.2.3 と表記されてしまう。

表記が正しくない可能性のある数値を表す文字列 S が与えられるので、その数値を正しい表記にしてください。
S を数値として扱うと上手く処理が行えないので気をつけてください。


解答例だとループ回したりして面倒な感じだったので置換や正規表現でやりました

import re
s=input()
if "." not in s:
    #ピリオドがなければ整数として扱う
    print(int(s))
else:
    #最初のピリオドを置換して退避
    s = s.replace('.','*',1)
    #その他のピリオドをカット
    s = s.replace('.','')
    #退避した文字をピリオドに戻す
    s = s.replace('*','.')
    #行頭の0の連続をカット、行末0の連続をカット
    s = re.sub('^0+','',s)
    s = re.sub('0+$','',s)
    #その結果、ピリオドで始まるなら0.に置換
    s = re.sub('^\.','0.',s)
    print(s)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0