《Python3程序开发指南(第二版)》第1章 过程型程序设计快速入门 练习

1. bigdigits.py程序的一个变形,不再打印*,而是打印具体的数字。

__author__ = 'Ibuki Suika'

import sys

Zero = ["  ***  ",
        " *   * ",
        "*     *",
        "*     *",
        "*     *",
        " *   * ",
        "  ***  "]
One = [" * ", "** ", " * ", " * ", " * ", " * ", "***"]
Two = [" *** ", "*   *", "*  * ", "  *  ", " *   ", "*    ", "*****"]
Three = [" *** ", "*   *", "    *", "  ** ", "    *", "*   *", " *** "]
Four = ["   *  ", "  **  ", " * *  ", "*  *  ", "******", "   *  ",
        "   *  "]
Five = ["*****", "*    ", "*    ", " *** ", "    *", "*   *", " *** "]
Six = [" *** ", "*    ", "*    ", "**** ", "*   *", "*   *", " *** "]
Seven = ["*****", "    *", "   * ", "  *  ", " *   ", "*    ", "*    "]
Eight = [" *** ", "*   *", "*   *", " *** ", "*   *", "*   *", " *** "]
Nine = [" ****", "*   *", "*   *", " ****", "    *", "    *", "    *"]

Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine]

try:
    digits = sys.argv[1:]
    row = 0
    while row < 7:
        line = ""
        column = 0
        while column < len(digits):
            number = int(digits[column])
            digit = Digits[number]
            ch = digit[row].replace('*', str(number))
            line += ch + " "
            column += 1
        print(line)
        row += 1
except IndexError:
    print("usage: bigdigits.py <number>")
except ValueError as err:
    print(err, "in", digits)
2.创建一个程序,该程序提示用户在while循环中输入数值,并根据输入的数值逐步构建一个列表。用户结束输入时,打印出输入的数值本身、输入数值个数、输入数值和、输入的最小值与最大值与平均值。

__author__ = 'Ibuki Suika'

ls = []
while True:
    s = input('enter a number or Enter to finish: ')
    if s == '':
        if len(ls) == 0:
            print('list is empty')
            break
        count = len(ls)
        total = sum(ls)
        lowest = min(ls)
        highest = max(ls)
        mean = total / count
        print("numbers: %s" % ls)
        print("count={0:d} sum={1:d} lowest={2:d} highest={3:d} mean={4:f}".format(count, total, lowest, highest, mean))
        break
    else:
        try:
            num = int(s)
            ls.append(num)
        except ValueError as err:
            print(err)
3.有些情况下,我们需要生成测试文本——比如,在网站真实内容可用之前,生成一个Web站点的设计方案,或者在开发报告写入者之前提供测试内容。为这一目的,可以编写一个用于生成可怕的诗歌的程序。

import random

articles = ["the", "a", "another", "her", "his"]
subjects = ["cat", "dog", "horse", "man", "woman", "boy", "girl"]
verbs = ["sang", "ran", "jumped", "said", "fought", "swam", "saw",
         "heard", "felt", "slept", "hopped", "hoped", "cried",
         "laughed", "walked"]
adverbs = ["loudly", "quietly", "quickly", "slowly", "well", "badly",
           "rudely", "politely"]

for _ in [1, 2, 3, 4, 5]:
    article = random.choice(articles)
    subject = random.choice(subjects)
    verb = random.choice(verbs)
    if random.randint(0, 1) == 0:
        print(article, subject, verb)
    else:
        adverb = random.choice(adverbs)
        print(article, subject, verb, adverb)
4.为了使得产生可怕诗歌的程序功能更丰富,可以向其中添加一些代码,以便于用户在命令行上输入一个数字(在1与10之间)时,程序将输出该数字的代表行数。如果没有给定命令行参数,默认像以前一样打印5行。

__author__ = 'Ibuki Suika'

import random
import sys

articles = ["the", "a", "another", "her", "his"]
subjects = ["cat", "dog", "horse", "man", "woman", "boy", "girl"]
verbs = ["sang", "ran", "jumped", "said", "fought", "swam", "saw",
         "heard", "felt", "slept", "hopped", "hoped", "cried",
         "laughed", "walked"]
adverbs = ["loudly", "quietly", "quickly", "slowly", "well", "badly",
           "rudely", "politely"]
count = 5
try:
    num = int(sys.argv[1])
    if 1 <= num <= 10:
        count = num
except ValueError as err:
    print(err)

for _ in range(count):
    article = random.choice(articles)
    subject = random.choice(subjects)
    verb = random.choice(verbs)
    if random.randint(0, 1) == 0:
        print(article, subject, verb)
    else:
        adverb = random.choice(adverbs)
        print(article, subject, verb, adverb)
5.对于练习2,计算中间值,并将其与其他相关信息一起输出。

numbers = []
indexes = []
total = 0
lowest = None
highest = None

while True:
    try:
        line = input("enter a number or Enter to finish: ")
        if not line:
            break
        indexes.append(len(numbers))
        number = int(line)
        numbers.append(number)
        total += number
        if lowest is None or lowest > number:
            lowest = number
        if highest is None or highest < number:
            highest = number
    except ValueError as err:
        print(err)

swapped = True
while swapped:
    swapped = False
    for index in indexes:
        if index + 1 == len(numbers):
            break
        if numbers[index] > numbers[index + 1]:
            temp = numbers[index]
            numbers[index] = numbers[index + 1]
            numbers[index + 1] = temp
            swapped = True

if numbers:
    index = int(len(numbers) / 2)
    median = numbers[index]
    if index and index * 2 == len(numbers):
        median = (median + numbers[index - 1]) / 2

print("numbers:", numbers)
if numbers:
    print("count =", len(numbers), "total =", total,
          "lowest =", lowest, "highest =", highest,
          "mean =", total / len(numbers), "median =", median)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值