2013年4月7日日曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の7章(反復)の7.7(練習問題)を解いてみる。

1.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

def double_preceding(values):
    if values == []:
        pass
    else:
        temp = values[0]
        values[0] = 0
        for i in range(1, len(values)):
            temp2 = values[i]
            values[i] = 2 * temp
            temp = temp2

values = [1, 2, 3, 4, 5]
print(values)
double_preceding(values)
print(values)

入出力結果(Terminal)

$ ./sample.py
[1, 2, 3, 4, 5]
[0, 2, 4, 6, 8]
$

2.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

def f(rat_1, rat_2):
    if rat_1[0] > rat_2[0]:
        print("Rat 1 weighed more than Rat 2 on Day 1.")
    else:
        print("Rat 1 weighed less than Rat 2 on Day 1.")

def g(rat_1, rat_2):
    if rat_1[0] > rat_2[0] and rat_1[-1] > rat_2[-1]:
        print("Rat 1 remained heavier than Rat 2.")
    else:
        print("Rat 2 became heavier than Rat 1.")

def h(rat_1, rat_2):
    if rat_1[0] > rat_2[0]:
        if rat_1[-1] > rat_2[-1]:
            print("Rat 1 remained heavier than Rat 2")
        else:
            print("Rat 2 became heavier than Rat 1.")
    else:
        print("Rat 2 became heavier than Rat 1.")

rat_1 = [10] * 10
rat_2 = [20] * 10

for func in [f, g, h]:
    func(rat_1, rat_2)
    func(rat_2, rat_1)

入出力結果(Terminal)

$ ./sample.py
Rat 1 weighed less than Rat 2 on Day 1.
Rat 1 weighed more than Rat 2 on Day 1.
Rat 2 became heavier than Rat 1.
Rat 1 remained heavier than Rat 2.
Rat 2 became heavier than Rat 1.
Rat 1 remained heavier than Rat 2
$

3, 4, 5.

入出力結果(Terminal)

$ python
Python 3.3.0 (default, Sep 29 2012, 08:16:08) 
[GCC 4.2.1 Compatible Apple Clang 3.1 (tags/Apple/clang-318.0.58)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> for x in range(33, 50):
...     print(x)
... 
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
>>> for x in range(10, 0, -1):
...     print(x,end=" ")
... 
10 9 8 7 6 5 4 3 2 1 >>> 
>>> total = 0
>>> for x in range(2, 23):
...     total += x
... 
>>> total / len(range(2, 23))
12.0
>>> quit()
$

6.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

def remove_neg(num_list):
    i = 0
    while i < len(num_list):
        if num_list[i] < 0:
            num_list.pop(i)
        else:
            i += 1

num_list = [1, 2, 3, -3, 6, -1, -3, 1]
print(num_list)
remove_neg(num_list)
print(num_list)

入出力結果(Terminal)

$ ./sample.py
[1, 2, 3, -3, 6, -1, -3, 1]
[1, 2, 3, 6, 1]
$

7, 8, 9.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

for x in range(7):
    res = ""
    for y in range(x + 1):
        print("T", end="")
    print()

for x in range(7):
    for y in range(6 - x):
        print(" ", end="")
    for y in range(x + 1):
        print("T", end="")
    print()

x = 0
while x < 7:
    y = 0
    while y < x + 1:
        print("T", end="")
        y += 1
    print()
    x += 1

x = 0
while x < 7:
    y = 0
    while y < 6 - x:
        print(" ", end="")
        y += 1
    y = 0
    while y < x + 1:
        print("T", end="")
        y += 1
    print()
    x += 1

入出力結果(Terminal)

$ ./sample.py
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
      T
     TT
    TTT
   TTTT
  TTTTT
 TTTTTT
TTTTTTT
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
      T
     TT
    TTT
   TTTT
  TTTTT
 TTTTTT
TTTTTTT
$

10.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

rat_1_weight = 10
rat_2_weight = 10
rat_1_rate = 0.04
rat_2_rate = 0.04

res = rat_1_weight * 1.25

i = 0

while rat_1_weight < res:
    rat_1_weight *= 1 + rat_1_rate
    i += 1
print(i)

rat_1_weight = 10
rat_1_rate = rat_2_rate + 0.03
i = 0
while rat_1_weight < rat_2_weight * 1.1:
    i += 1
    rat_1_weight *= 1 + rat_1_rate
    rat_2_weight *= 1 + rat_2_rate
print(i)

入出力結果(Terminal)

$ ./sample.py
6
4
$

0 コメント:

コメントを投稿