while循环 经典案例整理(九九乘法表打印加边框金字塔)
Posted 我的紫霞辣辣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了while循环 经典案例整理(九九乘法表打印加边框金字塔)相关的知识,希望对你有一定的参考价值。
流程控制之while循环语法
# 一、while语句结构:条件为真时,执行循环体代码
while 条件
do
循环体
done
# 二、until语法结构:条件为假时,一直执行循环体代码,直到条件变为真
until 条件
do
循环体
done
求1-100以内2和3的公倍数,until实现
until判断条件为假时,一直执行循环体代码,直到条件变为真
#!/bin/bash
num=100
until (( $num <= 0 )) # until 条件<=0(条件为假) ; 条件>0
do
num1=`echo "$num % 2" | bc` # %取余,取不到余数就是能被整数
num2=`echo "$num % 3" | bc` # %取余
if [ $num1 -eq 0 ] && [ $num2 -eq 0 ];then
echo "$num为2和3的公倍数"
fi
let num--
done
打印九九乘法表
python写法
a = 1
while a < 10:
b = 1
while b <= a:
print("%s*%s=%s\\t" % (a, b, a * b), end="") # end=""取消换行符,\\t相当于tab键
b += 1
print("")
a += 1
print("")
shell写法
写法一、while循环写法
#!/usr/bin/env bash
a=1
while (( $a < 10 )); do
b=1
while (( $b <= $a )) ; do
echo -en "$b*$a=$(( $a*$b ))\\t" # (echo -e \\t)相当于tab键, (echo -n)取消换行符
let b++
done
let a++
echo ""
done
写法二、until循环写法(until跟while循环条件相反,while循环条件取真进入循环,until循环条件取反进入循环)
#!/usr/bin/env bash
a=1
until (( $a >= 10 )); do
b=1
until (( $b > $a )) ; do
echo -en "$b*$a=$(( $a*$b ))\\t" # (echo -e \\t)相当于tab键, (echo -n)取消换行符
let b++
done
let a++
echo ""
done
写法三、字符串拼接
[root@m01 ~]# a=""
[root@m01 ~]# a=$a"1+1=$(echo 1+1|bc)"
[root@m01 ~]# echo $a
1+1=2
#!/bin/bash
a=1
while (( a <= 9 ))
do
str=""
b=1
while (( $b <= $a ))
do
str=$str"$b*$a=$(echo $a*$b|bc ) "
let b++
done
let a++
echo "$str"
done
写法四、for循环写法
#!/bin/bash
for i in {1..9}; do
for a in {1..9}; do
if (( $a <= $i ));then
echo -en "$a*$i=$(($a*$i))\\t" # (echo -e \\t)相当于tab键, (echo -n)取消换行符
let a++
fi
done
echo ''
let i++
done
给九九乘法表加上边框
[root@m01 ~]# bash num.sh
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 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
案例分析:
第1行打印1个横线 2个竖线
第2行打印2个横线 3个竖线
第3行打印3个横线 4个竖线
第4行打印4个横线 5个竖线
...
横线的个数=行数
竖线的个数=行数+1
方法一:
#!/bin/bash
a=1
x=" --------"
y="|"
while (( $a<=9 ));do
z=$a
while (( $z>0 ));do
echo -n "$x"
let z--
done
echo ""
b=1
while (( $b<=$a ));do
echo -n "$y $b*$a=$(($a*$b)) "
let b++
done
echo "$y"
let a++
done
while (( $a > 1 ));do
echo -n "$x"
let a--
done
echo ""
方法二:
#!/bin/bash
a=1
x="---------"
y="|"
while (( a <= 9 ))
do
b=1
str=""
c=$a
while (( $c > 0 ))
do
echo -n "$x"
let c--
done
echo ""
while (( $b <= $a ))
do
str=$str"$b*$a=$(echo $a*$b|bc) $y "
let b++
done
let a++
echo $y" "$str
done
while (( $a > 1 ))
do
echo -n "$x"
let a--
done
echo ""
打印金字塔
金字塔规律
* a = 1个*号 打印5个空格1个*号 6-1 = 5空格
*** a = 2 + 1个*号 打印4个空格3个*号 5-1 = 4空格
***** a = 2 + 3个*号 打印3个空格5个*号 4-1 = 3空格
******* a = 2 + 5个*号 打印2个空格7个*号 3-1 = 2空格
********* a = 2 + 7个*号 打印1个空格9个*号 2-1 = 1空格
*********** a = 2 + 9个*号 打印11个*号0个空格 1-1 = 0空格
# 注意点:
# print打印结束自动换行
代码实现:
n = 5 # n定义的是空格的个数,层数等于n+1
a = 1
while True:
if n < 0:
break
else:
print(n * " ", a * "*")
n -= 1
a += 2
=======================================================================================================================
代码升级:
n = int(input("输入金字塔的层数:"))
a = 1
while True:
if n - 1 < 0:
break
else:
print((n - 1) * " ", a * "*")
n -= 1
a += 2
以上是关于while循环 经典案例整理(九九乘法表打印加边框金字塔)的主要内容,如果未能解决你的问题,请参考以下文章