Views
解答例11
問題1
# -*- coding: utf-8 -*- # q1.py --- 2次方程式の解 import math def solve(a, b, c): d = b*b - 4*a*c if d < 0: print '実数の範囲を越えます' elif d == 0: print '解は: ', -b/(2*a) else: e = math.sqrt(d) print '解は: ', (-b+e)/(2*a), ',' , (-b-e)/(2*a)
- 注意:判別式 d や その平方根 e は繰り返し使用します。同じ式(計算)を 繰り返すときは、新しい変数に結果を保存して使うとプログラムの長さや 計算時間を節約することができます。また、もしプログラムにミスがあった ときにも、間違いのあった1箇所を修正すればよいことになります。
- ということは 2*a も、新しい変数に入れておいたほうがよさそうですね。
問題2
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import calendar import time calendar.setfirstweekday(calendar.SUNDAY) year = int(sys.argv[1]) month = int(sys.argv[2]) print ' %4d 年 %2d 月' % (year, month) print '日 月 火 水 木 金 土' cal = calendar.monthcalendar(year, month) for row in cal: for day in row: print '%2s' % (day or ''), print
day or ''
は day が False (0) のとき、''
になる ということです。教科書 p64 に書いてあります。- コードをよりわかりやすくするには、
if day == 0: day = ''
のようにしてから print するほうがよいかもしれません。
%s
が数にも文字列にも使えるということも使っています。