• 打印星星是经典面试题目,考察流程控制中的循环和条件。本文对相关方法进行总结。
  • 到的方法只要有(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. Nginx(./configure --help)

    # ./configure --help --help print this message --prefix=PATH set installation prefix --sbin-path=PAT ...

  2. 兼容性很好的纯css圆角

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  3. 【VBA】数组定义时,括号内的数值n为最大下标,其长度为n+1

    定义数组 dim arr(9) as integer注意这是数组的长度为10,而9指的是最大下标值. 所以在redim和赋值的时候要特别小心,防止错位.

  4. js工具库---Lodash

    Lodash是一个一致性.模块化.高性能的 JavaScript 实用工具库 为什么选择 Lodash ? Lodash 通过降低 array.number.objects.string 等等的使用难 ...

  5. Git- 命令及使用

    关于Git相关介绍这里就不介绍了,可转<Git- 简介>或者查看官网信息.这篇整理一下git相关的命令.   1) 远程仓库相关命令 克隆下载仓库:$ git clone git://gi ...

  6. laravel 队列发送邮件

    批量处理任务的场景在我们开发中是经常使用的,比如邮件群发,消息通知,短信,秒杀等等,我们需要将这个耗时的操作放在队列中来处理,从而大幅度缩短Web请求和相应的时间.下面讲解下Laravel中队列的使用 ...

  7. hdu5758 思维,树形dp

    /*可以推测从叶子结点传送到叶子节点才能使传送次数最少,如果是偶数个叶子结点,那么传送leaf/2次就是答案,如果是奇数个叶子结点,则还有单独一条链需要覆盖dp[u]表示覆盖完u为根的子树需要走的边数 ...

  8. nginx+tomcat实现集群,redis实现session共享,软连接实现文件共享:http://blog.csdn.net/hua1586981/article/details/78132710

    转载 2017年02月08日 16:52:41 730 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能 ...

  9. ORA-12519 ORA-12516

    目录: 错误信息 原因分析 解决方法 1. 错误信息 [oracle@test1 admin]$ oerr ora , , "TNS:no appropriate service handl ...

  10. 20165206第4次实验《Android程序设计》实验报告

    20165206第4次实验<Android程序设计>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:韩啸 学号:20165206 指导教师:娄嘉鹏 实验日期:2 ...