環境
- Visual Studio Code: 1.40.1
与えられた(引数)数値の中で、奇数の前後にダッシュ(-)マークを付けて文字列を返す関数を記述せよ。 ただし、開始および終了部分には付けないでください。
def dashatize(num): try: return ''.join(['-'+i+'-' if int(i)%2 else i for i in str(abs(num))]).replace('--','-').strip('-') except: return 'None'
以下に示すファイル名の一部を抽出する関数を記述せよ。
1231231223123131_FILE_NAME.EXTENSION.OTHEREXTENSION 1_This_is_an_otherExample.mpg.OTHEREXTENSIONadasdassdassds34 1231231223123131_myFile.tar.gz2
FILE_NAME.EXTENSION This_is_an_otherExample.mpg myFile.tar
class FileNameExtractor: @staticmethod def extract_file_name(fname): return fname.split('_', 1)[1].rsplit('.', 1)[0]
正の整数が与えられたとき、その与えられた値の各桁の数字を乗算し、1桁になるまでの回数を返す関数を記述せよ。
persistence(39) => 3 # Because 3*9 = 27, 2*7 = 14, 1*4=4 # and 4 has only one digit. persistence(999) => 4 # Because 9*9*9 = 729, 7*2*9 = 126, # 1*2*6 = 12, and finally 1*2 = 2. persistence(4) => 0 # Because 4 is already a one-digit number.
def persistence(n): from functools import reduce cnt = 0 while n >= 10 : cnt = cnt + 1 n = reduce( (lambda x,y: int(x) * int(y)), list(str(n)) ) return cnt
キャメルケースをケバブケースに変換する関数を記述せよ。
ただし、関数の戻り値(文字列)は小文字のみ含むものとする。
def kebabize(s): return ''.join(c if c.islower() else '-' + c.lower() for c in s if c.isalpha()).strip('-')
文字列を入力として、それぞれの文字をアルファベット順の位置に変換せよ。
ただし、文字列内のアルファベット以外の文字は無視すること。
"a" = 1, "b" = 2, など。
alphabet_position("The sunset sets at twelve o' clock.") # => "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11"
def alphabet_position(text): return ' '.join(str(ord(c) - 96) for c in text.lower() if c.isalpha())
配列を入力として、奇数回現れるint型の整数を見つけ、戻す関数を記述せよ。
ただし、奇数回現れる整数は必ず1個である。
def find_it(seq): for i in seq: if seq.count(i)%2!=0: return i
入力:名前を含むハッシュの配列 戻り:カンマ区切りの名前文字列を返す。ただし、最後の2名の名前はアンパサンドで区切ります。
namelist([ {'name': 'Bart'}, {'name': 'Lisa'}, {'name': 'Maggie'} ]) # returns 'Bart, Lisa & Maggie' namelist([ {'name': 'Bart'}, {'name': 'Lisa'} ]) # returns 'Bart & Lisa' namelist([ {'name': 'Bart'} ]) # returns 'Bart' namelist([]) # returns ''
def namelist(names) return ' & '.join([ h['name'] for h in names ] ).replace(' &', ',', len(names)-2)
0以上の整数(秒数)を入力として、人が認識可能な形式HH:MM:SSをフォーマットとする時刻に変換する関数を記述せよ。
入力の最大値は、359999 (99:59:59)
入力と出力例は以下の通り。
def make_readable(seconds): return '{:02}:{:02}:{:02}'.format(int(seconds / 3600), int(seconds / 60 % 60), seconds % 60 )
0以上の整数を入力とし、バイナリビットに変換したときの1の数を返す関数を記述せよ。
例: 入力:1234 のバイナリビットは10011010010。このとき、関数の戻り値は5。
def countBits(n): return bin(n).count("1")