Pythonプログラミング課題 第3週

7. 数値 a を1〜9の範囲から選び、項数を指定できるようにして、以下の式の結果を求めなさい:
a + aa + aaa + … + aaaaaaaaa

8. 2つのソート済みリストをマージし、結果もソートされた状態にすること

9. 非負整数の配列 A が与えられる。すべての偶数を奇数より前に配置しなさい

翌日

1. n+1 個の整数からなる配列 nums があり、各要素は 1 から n の間の値である。重複する要素が少なくとも一つあることが保証されている。重複している要素を1つだけ探す。

2. 10000未満で5または6で割り切れるが、両方同時に割り切れない数を全て求めよ(関数を使用)

3. リスト内の偶数インデックスの要素の合計を計算するメソッドを作成せよ(戻り値に注意)

4. 【選択課題】ある人が以下のような碁盤の上を移動する。左上のマスから開始し、右下のマスまで移動する必要がある(後退は不可)。このとき、移動方法は何通りあるか?

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

ハノイの塔問題

初日

第1問:

a = 120
zero_count = 0
one_count = 0
while True:
    remainder = a % 2
    a //= 2
    if remainder == 0:
        zero_count += 1
    elif remainder == 1:
        one_count += 1
    if a // 2 == 0:
        one_count += 1
        break
print(f"0の個数: {zero_count}, 1の個数: {one_count}")

第2問

def add(**kwargs):
    return kwargs

student_list = []
while True:
    print("─────────────────────────────────────────────")
    print("         学生管理システムへようこそ\n"
          "         1. 学生追加\n"
          "         2. 学生一覧表示\n"
          "         3. 終了")
    print("─────────────────────────────────────────────")
    choice = input("選択肢を入力してください:")
    if choice == "1":
        name = input("名前:")
        age = input("年齢:")
        student_data = dict(add(name=name, age=age))
        student_list.append(student_data)
        print("追加完了")
    elif choice == "2":
        print(student_list)
    elif choice == "3":
        break

第3問

i = 1
total = 0
while i <= 100:
    if i % 3 != 0:
        total += i
    i += 1
print(total)

第4問

N = int(input("数値を入力してください"))
total = 0
for num in range(1, N + 1):
    for divisor in range(2, num):
        if num % divisor == 0:
            break
    if num % 2 != 0:
        print(f"{num} は素数です")
        total += num
print(total)

第5問

def calculate_pi(iterations):
    pi_value = 0
    sign = 1
    for i in range(iterations):
        pi_value += sign / (2 * i + 1)
        sign *= -1
    return 4 * pi_value

terms = int(input("項数を入力してください"))
result = calculate_pi(terms)
print(result)

第6問

numbers = [9, 8, 7, 6, 5, 4, 3, 2, 1]

def bubble_sort(arr):
    length = len(arr)
    for i in range(length):
        for j in range(length - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    print(arr)

bubble_sort(numbers)

第7問

def calculate_sum(base_num, digit_count):
    result = 0
    for i in range(digit_count):
        result += base_num * (10 ** i)
    return result

base = int(input("1〜9の整数を入力してください"))
digits = int(input("桁数を入力してください"))
print(calculate_sum(base, digits))

第8問

list1 = [3, 9, 15, 34, 67]
list2 = [4, 7, 90, 123]

def bubble_sort(arr):
    length = len(arr)
    for i in range(length):
        for j in range(length - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

for item in list1:
    list2.append(item)
bubble_sort(list2)
print(list2)

第9問

original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_odd_list = []

for num in original_list:
    if num % 2 == 0:
        even_odd_list.append(num)
for num in original_list:
    if num % 2 == 1:
        even_odd_list.append(num)
print(even_odd_list)

タグ: Python プログラミング アルゴリズム リスト操作 整数処理

7月22日 18:16 投稿