目录
Day 7
图纸和实例的基本关系(实例化)
1. 数据类型和变量
2. 类和对象
- 类实际上是自定义图纸
3. 函数定义和函数调用
- 两次函数调用是不一样的
4. 程序和进程
程序,进程,线程之间的关系和区别
Shell语言
1.弱类型变量
python变量为引用,没有类型
shell 语言内核
分组+替换+执行
分组:将一行字符串根据空格分割成多个单词,每个单词就是一个分组,唯一违反此原则的是赋值语句
替换:找到所有的可替换元素,将其替换成值
作业
1.画一行5颗星
#!/bin/sh
line=""
s='\x2a'
n=5
for ((i=0;i<n;i++))
do
line=$line$s
done
echo -e $line
2.画5行5颗星
#!/bin/sh
line=""
s='\x2a'
n=5
for ((i=0;i<n;i++))
do
line=$line$s
done
for ((j=0;j<n;j++))
do
echo -e $line
done
3.裁剪出左侧直角的三角形两个
#!/bin/sh
s='\x2a'
for ((y=0;y<5;y++))
do
line=""
for ((x=0;x<=y;x++))
do
line=$line$s
done
echo -e $line
done
for ((y=0;y<5;y++))
do
line=""
for ((x=0;x+y<5;x++))
do
line=$line$s
done
echo -e $line
done
4.裁剪出右侧直角的三角形两个
#!/bin/sh
for ((y=0;y<5;y++))
do
line=""
s='\x20'
for ((x=0;x<5;x++))
do
if ((x==y))
then
s='\x2a'
fi
line=$line$s
done
echo -e $line
done
for ((y=0;y<5;y++))
do
line=""
s='\x20'
for ((x=0;x<5;x++))
do
if ((x+y==4))
then
s='\x2a'
fi
line=$line$s
done
echo -e $line
done
5.画一个等腰三角形
#!/bin/sh
for ((y=0;y<5;y++))
do
line=""
s='\x20'
for ((x=0;x-y<5;x++))
do
if ((x+y==4))
then
s='\x2a'
fi
line=$line$s
done
echo -e $line
done
6.将5平移至屏幕中间位置(引入左右两侧边界的变量)
#!/bin/sh
left=35
right=35
for ((y=0;y<5;y++))
do
line=""
s='\x20'
for ((x=0;x<=right;x++))
do
if ((x==left))
then
s='\x2a'
fi
line=$line$s
done
echo -e $line
((left--))
((right++))
done
7.画一个平行四边形
#!/bin/sh
left=35
right=45
for ((y=0;y<5;y++))
do
line=""
s='\x20'
for ((x=0;x<=right;x++))
do
if ((x==left))
then
s='\x2a'
fi
line=$line$s
done
echo -e $line
((left--))
((right--))
done
8.画一个菱形
#!/bin/sh
left=45;right=45
ldlt=-1;rdlt=1;
maxy=9
for ((y=0;y<maxy;y++))
do
line=""
s='\x20'
for ((x=0;x<=right;x++))
do
if ((x==left))
then
s='\x2a'
fi
line=$line$s
done
echo -e $line
if ((y==maxy/2))
then
((rdlt*=-1))
((ldlt*=-1))
fi
((left+=ldlt))
((right+=rdlt))
done
9. 将8镂空
#!/bin/sh
left=45;right=45
ldlt=-1;rdlt=1;
maxy=9
for ((y=0;y<maxy;y++))
do
line=""
s='\x20'
for ((x=0;x<=right;x++))
do
if ((x==left || x==right))
then
s='\x2a'
else
s='\x20'
fi
line=$line$s
done
echo -e $line
if ((y==maxy/2))
then
((rdlt*=-1))
((ldlt*=-1))
fi
((left+=ldlt))
((right+=rdlt))
done
10.制作一个猜数字的游戏:
游戏开始提示用户分别输入最小和最大的数值
程序在最小和最大值之间生成一个随机数
程序循环提示用户猜测这个数字是多少
如果猜中则退出循环
如果用户猜的数字大于前面的随机数,则提示"数字大了"
如果用户猜的数字小于前面的随机数,则提示"数字小于"
循环结束后对循环的次数(也就是用户猜测的次数进行判断)
如果次数>10:提示"您的智商还有很大进化空间"
如果次数>5:提示…
#!/bin/sh
read -p "请输入最小值" min
read -p "请输入最大值" max
num=$[(($RANDOM%$((max-min+1))+min))];
guess=$((min-1))
times=0
while ((1))
do
read -p "猜数字" guess
((times++))
if ((guess>num))
then
echo "数字大了"
fi
if ((guess<num))
then
echo "数字小了"
fi
if ((guess==num))
then
echo "猜对了"
break
fi
done
if ((times>10))
then
echo "您的智商还有很大进化空间"
elif ((times>5))
then
echo "不错"
elif ((times>3))
then
echo "运气不错"
elif((times<3))
then
echo "真厉害"
fi
11.打印乘法表
#!/bin/sh
for ((i=1;i<=9;i++))
do
for ((j=1;j<=9;j++))
do
if ((i>=j))
then
echo -e -n "${i}*${j}=$((i*j))\t "
fi
done
echo ""
done
12.初始化扫雷地图
10*10的棋盘,随机生成10颗地雷,实现游戏的布雷初始化
并且最后将这个棋盘打印出来
- 方法一
#!/bin/sh
# 读地图
read -p "扫雷地图宽:" width
read -p "扫雷地图高:" high
read -p "地雷个数(小于地图格数):" num
max=$((width*high))
# 初始化数组
for ((y=0;y<high;y++))
do
for ((x=0;x<width;x++))
do
((temp=x+y*high))
map[$temp]=0
done
done
# 生成地雷
n=0
while((n!=num))
do
temp=$((RANDOM%max))
if ((map[$temp]==0))
then
map[$temp]=1
((n++))
fi
done
# 打印地图
for ((y=0;y<high;y++))
do
line=""
for ((x=0;x<width;x++))
do
((temp=x+y*high))
line=$line' '${map[$temp]}
done
echo $line
done
获取数组内的值用${array[id]}