Skip to content.

kagome.lab.tkikuchi.net

Sections
Personal tools
You are here: Home » Members » tkikuchi's Home » 授業 » 専門コア情報処理演習(2006) » 解答例11
Views

解答例11

Document Actions

問題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 が数にも文字列にも使えるということも使っています。
Created by tkikuchi
Last modified 2007-01-04 15:47
 

Powered by Plone

This site conforms to the following standards: