環境
- 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")