python计算书页码的统计数字问题实例,python计算书


本文实例讲述了python计算书页码的统计数字问题,是Python程序设计中一个比较典型的应用实例。分享给大家供大家参考。具体如下:

问题描述:对给定页码n,计算出全部页码中分别用到多少次数字0,1,2,3,4...,9

实例代码如下:

def count_num1(page_num): 
  num_zero = 0 
  num_one = 0 
  num_two = 0 
  num_three = 0 
  num_four = 0 
  num_five = 0 
  num_six = 0 
  num_seven = 0 
  num_eight = 0 
  num_nine = 0 
  page_list = range(1,page_num + 1) 
  for page in page_list: 
    page = str(page) 
    num_zero += page.count('0') 
    num_one += page.count('1') 
    num_two += page.count('2') 
    num_three += page.count('3') 
    num_four += page.count('4') 
    num_five += page.count('5') 
    num_six += page.count('6') 
    num_seven += page.count('7') 
    num_eight += page.count('8') 
    num_nine += page.count('9') 
  result = [num_zero,num_one,num_two,num_three,num_four,num_five,num_six,num_seven,num_eight,num_nine] 
  return result 
 
print count_num1(13) 

上面这段代码略显臃肿,所以改了下代码。

改后的代码如下:

def count_num2(page_num): 
  page_list = range(1,page_num + 1) 
  result = [0 for i in range(10)] 
  for page in page_list: 
    page = str(page) 
    for i in range(10): 
      temp = page.count(str(i)) 
      result[i] += temp 
  return result
print count_num2(13)

本文实例测试运行环境为Python2.7.6

程序输出结果为:

[1, 6, 2, 2, 1, 1, 1, 1, 1, 1]

希望本文所述对大家的Python程序设计有所帮助。


算法与分析 统计数字问题与整数因子分解问题

1.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 2048 //若你有多于2048本书要计算,那后面就要申请内存了

void func(unsigned int (*ptr)[10], int m, int idx)
{
int i, j, h;
for (i=1; i<=m; ++i) {//这个for可以通过算法来提高效率,就是根据高位数字来得到低位出现的0-9的次数,累积就行了,算法很简单
j = i;
while (j > 0) {
++ptr[idx][j%10];
j /= 10;
}
}
}

int main()
{
unsigned int arr[2048][10] = {0}; //保存每本书的0-9次数
unsigned int (*ptr)[10] = 0;

unsigned int m[N], n;//m[N]保存每本书的页数
unsigned int *m_ptr;
unsigned int i;

printf("Input n (the lines of m): ");
scanf("%u", &n);
if (n > N) {//若书多于2048本,申请内存来保存
ptr = (unsigned int (*)[10])malloc(n*10*sizeof(unsigned int));
m_ptr = (unsigned int *)malloc(n*sizeof(unsigned int));
}
else {
ptr = arr;
m_ptr = m;
}

printf("Input %u numbers: ", n);
for (i=0; i<n; ++i) {
scanf("%u", m_ptr + i);
}

for (i=0; i<n; ++i) { // 跟上面的for分开,可以避免打扰编译器优化的输入缓冲,可以合到上面去.
func(ptr, m_ptr[i], i);
}
// 输出0-9
printf("number: %5u %5u %5u %5u %5u %5u %5u %5u %5u %5u\n", 0, 1, 2......余下全文>>
 

word2010页码 罗马数字问题 急 急 急

将你的文章分节,用罗马数字的作为一节,不用页码的作一节,用数字的又是一节。插入分节符即可分节。一定要取消“链接到前一个”
1、光标置于正文的页首:菜单栏——插入——分隔符——分节符类型——连续——确定。
2、菜单栏——视图——页眉和页脚——(出现“页眉和页脚”浮动工具栏)——光标置于页脚,点击取消“链接到前一个”(按钮是“两个平行页”):页脚虚框右上角的“与上一节相同”消失。
3、点“设置页码格式”(按钮是“手和页”)——页码编排——(罗马数字)数字格式:根据需要下拉选择1,2,3,……;起始页码:修改“1”——确定。
4、点“插入页码”(按钮是“纸上一个#”)。
5、关闭“页眉和页脚浮动工具栏”。
 

评论关闭