電子書籍の厳選無料作品が豊富!

pythonの課題なのですが、初心者なのでよく分かりません。分かる方教えていただけないでしょうか?

【以下、課題内容】
プログラムを開始すると、ユーザに1~20の整数の中からランダムに5個の数値を入力してもらう。
1~20以外の数値が含まれていた場合は、その数値の入力をやり直してもらう。正しく入力が完了したら、バイナリーサーチを実行するために、バブルソートで昇順(小さい順)に整列を行う。
整列後、バイナリーサーチで、入力された数値の中に、「10」がないかを調べる。あった場合は、
「Found」と画面に表示させ、なかった場合は「Not Found」を表示させたい。

①フローチャートを作成しなさい。
②pythonでプログラムを作成しなさい。また、各行に日本語で簡潔にコメントも書きなさい。

A 回答 (2件)

① メンド臭いんでパス。



#ハッキリ言うけど、現代の、構造化プログラミング以降に於いてフローチャートは必要ないと思う。要フローチャートはgoto塗れの古のプログラミングスタイルで必要だっただけ。
# いきなりプログラムを書き下せる人はフローチャートを書けるけど、フローチャートをいくら練習したトコでプログラミングが出来るようにはならない。よって書くだけ無駄。「フローチャートを書ければ・・・」ってのは単なる神話でしかないと思う(そんな無駄な時間があるなら人が書いたコードを読む、とか写経した方がマシ)。
# よってこの問題は正直、愚問以上の何物でもない。goto塗れの初期のBASICじゃねぇんだから。
# 先生、バカだろ?



#!/usr/bin/env python3

def foo():
 while True:
  val = int(input())
  if val > 0 and val < 21:
   return val

def bubbleSort(A):
 # Python には組み込みの sorted 関数があるのに
 # 生徒にわざわざバカな事やらせるんじゃない
 # あと、各行にコメントを書くなんつーアホな愚行もやらせるな(逆にコードが読みづれぇよ・怒)
 for i in range(len(A) - 1):
  for j in range(1, len(A) - i):
   if A[j] < A[j-1]:
    A[j], A[j-1] = A[j-1], A[j]
 return A

def find(val, xa):
 def ifind(minnum, maxnum):
  if maxnum < minnum:
   return False
  else:
   c = minnum + (maxnum - minnum) // 2
   if xa[c] > val:
    return ifind(minnum, c - 1)
   elif xa[c] < val:
    return ifind(c + 1, maxnum)
   else:
    return c
 val = ifind(0, len(xa) - 1)
 if val:
  print("Found")
 else:
  print("Not Found")

if __name__ == '__main__':
 find(10, bubbleSort([foo() for i in range(5)]))
    • good
    • 1

# ② の別解



#!/usr/bin/env python3

def foo(n):
 i = 0
 while i < n:
  val = int(input())
  if val > 0 and val < 21:
   i += 1
   yield val

def bubbleSort(A):
 # アホなフラグ付きコードだが、古典的なバブルソートの記述法である
 while True:
  swapped = False
  for i in range(1, len(A)):
   if A[i-1] > A[i]:
    A[i-1], A[i] = A[i], A[i-1]
    swapped = True
  if not swapped:
   break
 return A

def binary_search(A, T):
 L, R = 0, len(A) - 1
 while L <= R:
  m = (L + R) // 2
  if A[m] < T:
   L = m + 1
  elif A[m] > T:
   R = m - 1
  else:
   return m
 return False

if __name__ == '__main__':
 val = binary_search(bubbleSort(list(foo(5))), 10)
 print("Found" if val else "Not Found")
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!