Practical Programming
An Introduction to Computer Science
Using Python 3
(Pragmatic Programmers)
(Pragmatic Bookshelf)
Paul Gries (著) Jennifer Campbell (著)
Jason Montojo (著) Lynn Beighley (編集)
開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 5(Making Choices)、5.6(Exercises) 8.を解いてみる。
5.6(Exercises) 8.
コード(BBEdit)
sample8.py
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
# added a new temperature scale, two if statements need to add
def convert_to_celsius(t, source):
if source == "Kelvin":
return t - 273.15
elif source == "Celsius":
return t
elif source == "Fahrenheit":
return (t - 32) * 5 / 9
elif source == "Rankine":
return (t - 491.67) * 5 / 9
elif source == "Delisle":
return 100 - t * 2 / 3
elif source == "Newton":
return t * 100 / 33
elif source == "Reaumur":
return t * 5 / 4
elif source == "Romer":
return (t - 7.5) * 40 / 21
else:
raise Exception("convert_to_celsius: {0}".format(source))
def convert_from_celsius(t, target):
if target == "Kelvin":
return t + 273.15
elif target == "Celsius":
return t
elif target == "Fahrenheit":
return t * 9 / 5 + 32
elif target == "Rankine":
return (t + 273.15) * 9 / 5
elif target == "Delisle":
return (100 - t) * 3 / 2
elif target == "Newton":
return t * 33 / 100
elif target == "Reaumur":
return t * 4 / 5
elif target == "Romer":
return t * 21 / 40 + 7.5
else:
raise Exception("convert_from_celsius: {0}".format(target))
def convert_temperatures(t, source, target):
return convert_from_celsius(convert_to_celsius(t, source), target)
units = ["Kelvin", "Celsius", "Fahrenheit", "Rankine", "Delisle","Newton",
"Reaumur", "Romer"]
# http://en.wikipedia.org/wiki/Comparison_of_temperature_scales#Comparison_of_temperature_scales
print("Absolute zero")
for target in units:
print("{0}: {1:.2f}".format(target, convert_temperatures(0, "Kelvin", target)))
print("Ice melts")
for target in units:
print("{0}: {1:.2f}".format(
target, convert_temperatures(32, "Fahrenheit", target)))
入出力結果(Terminal, IPython)
$ ./sample8.py Absolute zero Kelvin: 0.00 Celsius: -273.15 Fahrenheit: -459.67 Rankine: 0.00 Delisle: 559.72 Newton: -90.14 Reaumur: -218.52 Romer: -135.90 Ice melts Kelvin: 273.15 Celsius: 0.00 Fahrenheit: 32.00 Rankine: 491.67 Delisle: 150.00 Newton: 0.00 Reaumur: 0.00 Romer: 7.50 $
0 コメント:
コメントを投稿