第6章の解答。以下ネタバレなので、読みたくない方は立ち去りましょう。問題文は載せませんので悪しからず。必要なら買いましょう。その前にこの章の個人的なメモ。
- 0、0.0はFalseであるが、それ以外の値はTrue
1
>>> True and not False True >>> True or True and False True >>> not True or not False True >>> True and not 0 True >>> 52 < 52.3 True >>> 1 + 52 < 52.3 False >>> 4 != 4.0 False
2
後半のルールはよくない。被演算子のうち、0やFalseになるものを返すべきである。例えばx = 3 and 0はFalseだが、3を返すのはTrueを意味することになるので矛盾する。
3
>>> z = x and y # a)の解答 >>> z = not x # b)の解答 >>> z = x or y # c)の解答
4
>>> result = full or empty
5
友人の発言は正しい。二つの論理値がTrueとFalseという異なった値になっているときにifの中がTrueになるようにできているからである。
6
>>> x = -1 >>> result = x == abs(x) >>> result False
7
def different(a, b): return a != b
8
population = 10000 land_area = 200 if population > 10000000: print population if 10000000 >= population >= 35000000: print population if population / land_area > 100: print "過密" if population / land_area > 100: print "過密" else: print "過疎"
9
wikipediaで温度変換の公式を参照せよということなのですが、多少変更が加えられたのか、Newtonなどの温度へ変換する公式が指定されたページ内に見つからないため、全部実装するのは断念しています。考え方のみ参考にしてください。b)の解答は新しい単位を追加すると、if文を2回追加することになります。これはsourceをセルシウス度に変換するときに1度、セルシウス度からtargetに変更するのに1度追加する必要があるためです。
def temperatures(t, source, target): ''' Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Reaumur とあるのだが、wikipediaでは最初の4つしかないので、4つのみで実装する ''' if source == 'Kelvin': temp = float(t) - 273.15 pass elif source == 'Celsius': temp = float(t) pass elif source == 'Fahrenheit': temp = (t - 32) * 5.0 / 9 pass elif source == 'Rankine': temp = (t - 491.67) * 5.0 / 9 pass else: return 'Error in source' if target == 'Kelvin': return temp + 273.15 elif target == 'Celsius': return temp elif target == 'Fahrenheit': return temp * 9.0 / 5 + 32 elif target == 'Rankine': return (temp + 273.15) * 9.0 / 5 else: return 'Error in target' print temperatures(10, 'Celsius', 'Celsius') print temperatures(10, 'Celsius', 'Kelvin')
10
先に3.0未満か評価した。もしくは最初のifで3.0以上7.0未満で「酸性」と表示するような変更をしてもよいでしょう。
ph = 2.5 if ph < 3.0: print "%sは強酸性です。注意してください。" % ph elif ph < 7.0: print "%sは酸性です。" % ph
11
a)、b)はどちらも"酸性です!"と表示される。c)の解答は以下の通り。
ph = float(raw_input("ph値を入力してください")) if ph < 7.0: print "酸性です!" if ph < 4.0: # elifからifに書き換える print "強酸性です!"
12
以下のようにすれば同じように書き換えればよい。
age = 30 bmi = 19.2 table = [['高', '中'], # 中、高を入れ替えておく ['中', '低']] # 低、中も同様 young = age < 45 light = bmi < 22.0 # heavy = bmi >= 22.0からの書き換え risk = table[young][light] print risk
0 件のコメント:
コメントを投稿