配布プリント

Python 配布プリント (3) 16 May 2016 by 水谷正大
http://www.ic.daito.ac.jp/~mizutani/python/index.html
3 while 文
以下のスクリプトを適切なファイル名で実行し、人間計算機としてその結果を「完璧に」説明しなさい。
while 構文
while 論理式:
ブロック文
1. 論理式を評価する。False ならば while 文を終了(何もしない)。
2. True ならブロック文を実行。
3. 論理式の評価に戻る。
x = 15
while x < 20:
print "Now, inside while"
x = x + 1
# Assume min < max
max = 10
min = 3
sum = 0
i = min
while i < max:
sum = sum + i
i = i + 2
print "Sum
= ", sum
3.1 無限ループ
while True:
n = int(raw_input("Input an integer = "))
print "Square value = ", n * n
このままではいつまで経っても終了しないので、Ctrl + C(control キーを押しながら c キーを押すこと)で
「割り込み」をかけて、コマンドを強制終了させる。
3.2 文字列の長さを使う
s = raw_input("Input an arbitrary string(and hit [Return]) = ")
while len(s) != 0:
print "You just enter: " + s
s = raw_input("Another string = ")
print "Terminated!"
1
3.3 平方根を求める
与えた正実数 x > 1 の平方根
√
x を指定した精度で見つけることは、数学を使わず素早く算数だけで容易
に見つけることができる。
x = 5.0
accuracy = 0.01
print "Find square root of", x, " winthin accuracy =",accuracy
high = x
low = 0.0
num_guess = 0
guess = (high + low) / 2.0
while abs(guess ** 2 - x) >= accuracy:
print "guess =", guess, ": low =", low, " high =", high
if guess ** 2 < x:
low = guess
else:
high = guess
guess = (high + low) / 2.0
num_guess = num_guess + 1
print "Done!"
print "It takes a number of guess =", num_guess
print guess, " is close to square root of", x
問題
[問題 1] キーボードから入力した実数文字列を変数 x に実数(浮動小数点)として代入するには関数 float()
を使って、たとえば
x = float(raw_input("Input positive real number = "))
と書く。キー入力した正実数の平方根を指定した精度で求めるスクリプト square_root.py を書いて、実行
結果を報告しなさい。
[問題 2] 単語当てゲーム
変数 target に適当な英単語をセットしておく。キーボードから推測した英単語を変数 guess にセットし、
target と guess との辞書式順序関係を評価してヒントを表示して、一致するまで推測を何度も繰り返して次
のような実行結果となるようなスクリプト guess_word.py を書いて、実行結果を報告しなさい。
ヒント)while 文 while guess != target: を使って if else 文を繰り返すという方法が自然だ。
Guess a word:
Input guess word = orange
Input more previous word = lemon
Input more following word = maple
Input more following word = muscat
Input more previous word = mother
Congraturation! You hit the target =
mother
2