• 打印星星是经典面试题目,考察流程控制中的循环和条件。本文对相关方法进行总结。
  • 到的方法只要有(1)嵌套循环(2)center(3)format(^)(4)字符串乘法
# -*- coding:utf-8 -*-

# 方法一:循环嵌套
num = 10
for row in range(num):
print('{:<8d}'.format(row+1), end='')
print((num - row) * ' ', end='') # 输出空格,这里可以用乘号 for col in range(2 * row + 1):
if col == 0 or col == 2*row or row == num-1: # 条件:左右边界或下边界,打印*,否则打印空格
print('*', end='')
else:
print(' ', end='')
print() # 打印完没一行,一定要记得换行 for row in range(num-2, -1, -1):
print('{:<8d}'.format(row+1), end='')
for j in range(num-row): # 输出空格,这里有可以用循环
print(' ', end = '') for col in range(2 * row + 1):
if col == 0 or col == 2*row:
print('*', end='')
else:
print(' ', end='')
print() # 以下方法只使用于实心情形
# 方法二:center
num = 10
print(2*num*'-','原始center')
for row in range(num):
print('{:<8d}'.format(row + 1), end='')
print(((row+1) * '*').center(20, ' ')) print('\n', 2*num*'-', '改进版本1-奇数-center')
for row in range(1, 2*num, 2):
print('{:<8d}'.format(row), end='')
print((row * '*').center(20, ' ')) print('\n', 2*num*'-', '改进版本2-空格-center')
for row in range(num):
print('{:<8d}'.format(row + 1), end='')
print(((row+1) * '* ').center(20, ' ')) # 方法三:format(^)
num = 10
print('\n',2*num*'-','方法3-空格-format', end='')
for row in range(num):
print('{:<8d}'.format(row), end='')
print('{:^20s}'.format('* '*row))

运行结果如下:

1                 *
2 * *
3 * *
4 * *
5 * *
6 * *
7 * *
8 * *
9 * *
10 *******************
9 * *
8 * *
7 * *
6 * *
5 * *
4 * *
3 * *
2 * *
1 *
-------------------- 原始center
1 *
2 **
3 ***
4 ****
5 *****
6 ******
7 *******
8 ********
9 *********
10 ********** -------------------- 改进版本1-奇数-center
1 *
3 ***
5 *****
7 *******
9 *********
11 ***********
13 *************
15 ***************
17 *****************
19 ******************* -------------------- 改进版本2-空格-center
1 *
2 * *
3 * * *
4 * * * *
5 * * * * *
6 * * * * * *
7 * * * * * * *
8 * * * * * * * *
9 * * * * * * * * *
10 * * * * * * * * * * -------------------- 方法3-空格-format0
1 *
2 * *
3 * * *
4 * * * *
5 * * * * *
6 * * * * * *
7 * * * * * * *
8 * * * * * * * *
9 * * * * * * * * * Process finished with exit code 0

补充一个C++版本:

(2018/10/22)

#include <iostream>

using namespace std;
int main()
{
const int size = 6; for (int i = 0; i < size; i++) {
cout << i << '\t';
for (int j = 0; j < (2*size-1); j++) {
if (j == i || j == (2*size-2-i) || i == 0) {
cout << '*';
} else {
cout << ' ' ;
}
}
cout << endl;
}
return 0;
}

运行结果:

0       ***********
1 * *
2 * *
3 * *
4 * *
5 *

打印星星 - Python的更多相关文章

  1. JavaScript--循环--打印星星和99乘法表

    1.打印99乘法表 function chengfa(){ //反复调用公式 for(var r=1;r<=9;r++){ for(var i=1,str="";i<= ...

  2. JS控制台打印星星,总有你要的那一款~

    用JS语句,在控制台中打印星星,你要的是哪一款呢~来认领吧~ 1.左直角星星 效果: 代码: let readline=require("readline-sync"); cons ...

  3. C#基础第二天-作业答案-九九乘法表-打印星星

    题一:九九乘法表的答案 //正三角 ; i < ; i++) { ; j <= i; j++) { Console.Write("{0}*{1}={2} ", j, i ...

  4. python中while循环打印星星的四种形状

    在控制台连续输出五行*,每一行星号数量一次递增 * ** *** **** ***** #1.定义一个行计数器 row = 1 while row <= 5: #定义一个列计数器 col = 1 ...

  5. C#基础第二天-作业-九九乘法表-打印星星

    一.打印九九乘法表图形为下列效果图中的三角型的一种例: 图一效果1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 ...

  6. 从上往下打印二叉树(python)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # ...

  7. 顺时针打印矩阵(python)

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  8. 从尾到头打印链表(python)

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, ...

  9. 22.从上往下打印二叉树(python)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. class Solution: # 返回从上到下每个节点值列表,例:[1,2,3] def PrintFromTopToBottom( ...

随机推荐

  1. iOS项目国际化详解

    现在的开发中难免会遇到项目国际化处理,下面把我理解到的国际化相关的知识点进行总结归纳 1 首先是对项目名称,系统性的文字进行名字化,比如程序名字 1,先给项目添加语言 2 添加InfoPlist.st ...

  2. (五)STL算法

    .算法 1.算法通过迭代器来操作容器中的数据: 2.算法为模板函数: 二.迭代器与算法 1.根据移动能力,将迭代器分成了五类 2.使用萃取,输出各个容器中,迭代器的类别 3.其中istream, os ...

  3. LeetCode(122):卖股票的最佳时机 II

    Easy! 题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参 ...

  4. laravel 频率限制throttle

    在 Laravel 5.6 中,还引入了频率限制功能.所谓频率限制,指的是在指定时间单个用户对某个路由的访问次数限制,该功能有两个使用场景,一个是在某些需要验证/认证的页面限制用户失败尝试次数,提高系 ...

  5. PAT Basic 1069. 微博转发抽奖(20)

    小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数M(<= 1000).N ...

  6. GZipStream 压缩与解压数据

    简介:此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法.这种格式包括一个检测数据损坏的循环冗余校验值.GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但 ...

  7. yarn的安装与使用及与npm对应的命令

    在Nodejs环境下,通过npm install -g yarn 命令进行全局安装 例如:yarn versionyarn inityarn installyarn add vueyarn add v ...

  8. Cisco交换机基础命令 + Win Server08 R2 多网卡配置链路聚合

    最近捣鼓服务器链路集合需要配置交换机… 以前没弄过交换机,现学现卖… 一般交换机是支持telnet的,配置好ip可以直接telnet,当然如果没配的话就要用串口了,串口要选择Serial… 还好我们万 ...

  9. (转载)Memcached和Redis简介

    转载自: Memcached和Redis简介 博主的Redis资料列表.http://www.cnblogs.com/programlearning/category/1003158.html 前言: ...

  10. 【BZOJ4764】弹飞大爷

    题解: 这个应该还是比较简单的 首先比较容易想到用lct来维护 我们可以建立一个特殊点 然后我们要处理环 其实只要判断它和不和这个特殊点联通就行了 那么当它不是环了我们怎么还原呢 只要对每个在根节点记 ...