![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
pythonの課題なのですが、初心者なのでよく分かりません。分かる方教えていただけないでしょうか?
【以下、課題内容】
プログラムを開始すると、ユーザに1~20の整数の中からランダムに5個の数値を入力してもらう。
1~20以外の数値が含まれていた場合は、その数値の入力をやり直してもらう。正しく入力が完了したら、バイナリーサーチを実行するために、バブルソートで昇順(小さい順)に整列を行う。
整列後、バイナリーサーチで、入力された数値の中に、「10」がないかを調べる。あった場合は、
「Found」と画面に表示させ、なかった場合は「Not Found」を表示させたい。
①フローチャートを作成しなさい。
②pythonでプログラムを作成しなさい。また、各行に日本語で簡潔にコメントも書きなさい。
No.1ベストアンサー
- 回答日時:
① メンド臭いんでパス。
#ハッキリ言うけど、現代の、構造化プログラミング以降に於いてフローチャートは必要ないと思う。要フローチャートは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)]))
No.2
- 回答日時:
# ② の別解
#!/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")
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Ruby プログラミング 3 2023/06/09 14:30
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Java Java 年数計算 3 2023/01/28 10:52
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Java Java 南京錠 2 2023/02/04 11:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フローチャートの菱形が狭い。。。
-
フローチャートで。
-
【fortran】フーリエ級数について
-
ホームページのプログラムの見...
-
あるプログラムのコマンドライ...
-
65536は2の何乗なのでしょうか?
-
0除算して、落ちるプログラムと...
-
VBAで仕様書は書きますか?
-
正しい五十音順について
-
Excelで4096点以上のFFTの方法
-
VBAが止まります。
-
VBAで関数をつくる
-
変数の値が勝手に変化する原因
-
傾いた四角形内の範囲の条件式
-
バッチ、vbs等でのソフトウェア...
-
[ EXCEL VBA ] 図形を読み込む...
-
VBAにてメール作成した際、一部...
-
バッチファイルでUSB挿入時に実行
-
エクセルとワードをデスクトッ...
-
GPIB制御
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フローチャートの菱形が狭い。。。
-
フローチャートで 変数に代入す...
-
fortran errorについて
-
フローチャートで。
-
フローチャート(本当に困って...
-
フローチャート
-
フローチャート
-
フローチャートの書き方
-
fortran go to 文
-
フローチャート
-
for文のフローチャート
-
Rの質問です。 x<-rnorm(n=100,...
-
カシオ fx-4800pにて
-
連立1次方程式を計算するFortra...
-
配列 x に入っているデータの最...
-
フローチャートの演算記号
-
C言語のプログラミングに関する...
-
fortran
-
fortaran初心者です...(複数条...
-
フロートチャートをVBAで表すには
おすすめ情報