本帖最后由 YCC 于 2014-12-19 21:40 编辑
昨天除了中午吃饭花了半个小时外,从昨天早上九点过4分到现在,我一直坐在现在这个位置上;辛苦的耕耘!
该是前天问过班花,我想到一道题,现在写出来;
在程序语言中,是很好写的一个小程序,现在要求用shell脚本完成;题目如下:
猜数字的小游戏;
运行程序后,提示用户输入一个0-9的数字,如果是非数字,那么就提示用户输入数字;如果用户猜中,提示用户猜对了;如果用户没有猜中,那么就提示用户重新输入一个数字;如果,用户连续五次都没有猜中,则提示用户,24小时后再来玩这个游戏;
这道题可以分为很多小题;虽然我自己想出的这道题,但我自己现在还没有想到答案!
现在我已经躺在椅子上了;欢迎给我小伙伴们解答;
昨天除了中午吃饭花了半个小时外,从昨天早上九点过4分到现在,我一直坐在现在这个位置上;辛苦的耕耘!
该是前天问过班花,我想到一道题,现在写出来;
在程序语言中,是很好写的一个小程序,现在要求用shell脚本完成;题目如下:
猜数字的小游戏;
运行程序后,提示用户输入一个0-9的数字,如果是非数字,那么就提示用户输入数字;如果用户猜中,提示用户猜对了;如果用户没有猜中,那么就提示用户重新输入一个数字;如果,用户连续五次都没有猜中,则提示用户,24小时后再来玩这个游戏;
这道题可以分为很多小题;虽然我自己想出的这道题,但我自己现在还没有想到答案!
现在我已经躺在椅子上了;欢迎给我小伙伴们解答;
0
- #!/bin/bash
- m=$[$RANDOM/900]
- cnt=5
- while [ cnt -le 5 ];do
- read -p "please input your guess number(0-9):" n
- m=`echo $n |sed 's/[0-9]//g'
- if [ ! -z $m ];then
- echo "your input is not number,please input number!" n
- cnt=$[$cnt-1]
- else
- if [ $n - eq $m ];then
- echo "you guess right!"
- break;
- fi
- fi
- done
- if [ $cnt -eq 0 ] ;then
- echo "please play games 5 hours later!"
- fi
0
1 #!/bin/bash
2
3 num=$[$RANDOM%10]
4 chance_num=5
5
6 while [ $chance_num -ge 1 ]; do
7 read -p "input a number: " n
8 match=$[$num-$n]
9 if [ $match -eq 0 ]; then
10 echo "your number is right!"
11 else
12 chance_num=$[$chance_num-1]
13 echo "the number is wrong, you have $chance_num chances."
14 fi
15 done
16
17 if [ $chance_num -eq 0 ]; then
18 echo " wait for 24 hours to play this game."
19 fi
~
2
3 num=$[$RANDOM%10]
4 chance_num=5
5
6 while [ $chance_num -ge 1 ]; do
7 read -p "input a number: " n
8 match=$[$num-$n]
9 if [ $match -eq 0 ]; then
10 echo "your number is right!"
11 else
12 chance_num=$[$chance_num-1]
13 echo "the number is wrong, you have $chance_num chances."
14 fi
15 done
16
17 if [ $chance_num -eq 0 ]; then
18 echo " wait for 24 hours to play this game."
19 fi
~
0
本帖最后由 aqi 于 2015-6-29 23:23 编辑
- #!/bin/bash
- times=1
- Random=$[$RANDOM%10]
- function Get()
- {
- case $1 in
- 1)
- read -p "Please input a number(0~9): " guess
- ;;
- 2)
- read -p "Input error , please input a number(0~9): " guess
- ;;
- esac
- filter=`echo -n $guess | sed 's/[0-9]//g'`
- }
- Get 1
- while :
- do
- if [ -z $guess ] || [ ! -z $filter ] ;then
- Get 2
- elif [ 0$guess -eq 0$Random ];then
- echo "Right !"
- break
- elif [ $times -ge 5 ];then
- echo "Guess wrong !"
- echo "Please play this game after 24 hours later !"
- break
- else
- echo "Guess wrong !"
- times=$[$times+1]
- Get 1
- fi
- done
0
- #!/bin/bash
- # liusheng @20150629
- num1=$(($RANDOM%10));
- for ((i=1;i<=5;i++))
- do
- read -p "猜数字,共五次机会,这是第 $i 次机会。请输入0-9的数字 ? " num
- n=`echo $num |sed 's/[0-9]//g'`
- if [ -z $n ];then
- [ "$num" == "$num1" ] && echo "你猜对了!" && exit
- else
- echo "你输入的是数字么?" && let i=$i-1 && continue
- fi
- done
- echo "24小时后来吧!"
0
16行 -n 去掉换行 貌似在这里没什么用
25行前加 0 防止因空值比较而出现报错 因为前一个 if 已经解决了空值问题 所以在这里并没有什么作用 只是个人习惯
21emerald 发表于 2015-7-13 20:15
请教下,你第16行echo 加选项 -n ,和第25行两个变量前都加个0,都有什么作用?
16行 -n 去掉换行 貌似在这里没什么用
25行前加 0 防止因空值比较而出现报错 因为前一个 if 已经解决了空值问题 所以在这里并没有什么作用 只是个人习惯
0
python版本
- #!/usr/bin/env python
- # coding=utf-8
- import random
- import sys
- import tab #命令补全模块
- count = 0
- while True:
- try:
- input_num = raw_input('请输入一个数字:')
- except KeyboardInterrupt:
- sys.exit('\n')
- if not input_num.isdigit():
- print '请您输入一个数字(0-9)'
- continue
- else:
- if int(input_num) == random.randint(0,10):
- print '您猜对了'
- else:
- print '您猜错了,请重新输入一个数字'
- count = count + 1
- if count == 5:
- print '24小时后再来玩这个游戏'
- sys.exit('\n')
0
#!/bin/bash
#It's written by caibingsen
#Date:2016-03-15
## 功能:猜 0-9 范围内的数字
## 要求:1、每次自动生成一个数字
## 2、猜错五次自动退出
## 3、猜对自动退出
## 4、输入非数字不报错
## 5、脚本要实现一天只能运行一次
#判断是否有执行过该脚本,有执行过就要判断执行的时间,没有执行过直接进入到for语句
if [ -a /tmp/time.txt ];then
olddate=`date +%s`
newdate=`cat /tmp/time.txt`
newolddate=$[$olddate-$newdate]
if [ $newolddate -ge 0 ];then
echo 1 > /tmp/count.sh
else
echo "请在一天后再玩"
exit
fi
fi
for i in {1..5}
do
#随机数0-9
random_number=$[RANDOM%10]
echo $random_number
read -p "请输入一个0-9的数字:" number
#判断输入的值是否为数字,纯数字时number1为空
number1=`echo $number |sed 's/[0-9]//g'`
if [ -z $number1 ];then
if [ $random_number -eq $number ];then
echo "你输入的值正确"
date -d'+1 min' +%s > /tmp/time.txt
exit
fi
fi
date -d'+1 min' +%s > /tmp/time.txt
#It's written by caibingsen
#Date:2016-03-15
## 功能:猜 0-9 范围内的数字
## 要求:1、每次自动生成一个数字
## 2、猜错五次自动退出
## 3、猜对自动退出
## 4、输入非数字不报错
## 5、脚本要实现一天只能运行一次
#判断是否有执行过该脚本,有执行过就要判断执行的时间,没有执行过直接进入到for语句
if [ -a /tmp/time.txt ];then
olddate=`date +%s`
newdate=`cat /tmp/time.txt`
newolddate=$[$olddate-$newdate]
if [ $newolddate -ge 0 ];then
echo 1 > /tmp/count.sh
else
echo "请在一天后再玩"
exit
fi
fi
for i in {1..5}
do
#随机数0-9
random_number=$[RANDOM%10]
echo $random_number
read -p "请输入一个0-9的数字:" number
#判断输入的值是否为数字,纯数字时number1为空
number1=`echo $number |sed 's/[0-9]//g'`
if [ -z $number1 ];then
if [ $random_number -eq $number ];then
echo "你输入的值正确"
date -d'+1 min' +%s > /tmp/time.txt
exit
fi
fi
date -d'+1 min' +%s > /tmp/time.txt
0
#!/bin/bash
i=1
while :
do
read -p "请输入一个0到9的数字:" num1
if [[ ${num1} =~ ^[0-9]?$ ]]
then
echo "输入正确"
exit 0
elif [[ ${num1} =~ ^[0-9][0-9]+$ ]]
then
echo "输入错误,请重新输入一个数字"
let i++
else
echo "请输入一个数字"
let i++
fi
if [ $i -eq 6 ]
then
echo "连续五次没有输入正确,请24小时后再来玩这个游戏"
exit 0
fi
done
i=1
while :
do
read -p "请输入一个0到9的数字:" num1
if [[ ${num1} =~ ^[0-9]?$ ]]
then
echo "输入正确"
exit 0
elif [[ ${num1} =~ ^[0-9][0-9]+$ ]]
then
echo "输入错误,请重新输入一个数字"
let i++
else
echo "请输入一个数字"
let i++
fi
if [ $i -eq 6 ]
then
echo "连续五次没有输入正确,请24小时后再来玩这个游戏"
exit 0
fi
done
0
- #! /bin/bash
- a=$(($RANDOM%10))
- for ((i=1;i<6;i++))
- do
- read -p "请输入0-9,共5次机会,这是第$i次:" b
- m=`echo $b|sed 's/[0-9]//g'`
- if [ -z $m ]
- then
- [ $a -eq $b ] && echo "你猜对了!"&&break
- [ $a -ne $b ]&& echo "你猜错了!!!"
- [ $i -eq 5 ] &&echo "24小时后再来玩这个游戏"&&break
- else
- echo "你输入的不是数字!!!!"
- let i=i-1;
- fi
- done
0
#!/bin/bash
##猜数字游戏
num=$[ RANDOM%100 ]
for i in `seq 1 6`
do
read -p "有个随机数[0-99],你猜:" guss
if [ -z $guss ];then
echo "你没有输入,请输入数字!"
exit
fi
expr $guss "+" 1 &>/dev/null
if [ $? -ne 0 ] ;then
echo "你输入的不是数字!"
exit
fi
if [ $guss -eq $num ];then
echo " 恭喜,你猜对了,你猜了$i次"
exit
elif [ $guss -gt $num ] ;then
echo "你猜大了,你猜了$i次"
else
echo "你猜小了,你猜了$i次"
fi
done
##猜数字游戏
num=$[ RANDOM%100 ]
for i in `seq 1 6`
do
read -p "有个随机数[0-99],你猜:" guss
if [ -z $guss ];then
echo "你没有输入,请输入数字!"
exit
fi
expr $guss "+" 1 &>/dev/null
if [ $? -ne 0 ] ;then
echo "你输入的不是数字!"
exit
fi
if [ $guss -eq $num ];then
echo " 恭喜,你猜对了,你猜了$i次"
exit
elif [ $guss -gt $num ] ;then
echo "你猜大了,你猜了$i次"
else
echo "你猜小了,你猜了$i次"
fi
done
0
#!/bin/bash
c=0
read -p "please input a number between 0 to 9: " n
if [ $n -lt 0 -o $n -gt 10 ]
then
echo "please input a number between 0 to 9"
exit
fi
a=`echo "$n" |sed 's/[0-9]//'`
if [ -z "$a" ]
then
echo "the number you input is correct"
else
while :
do
read -p "please input a number between 0 to 9: " b
a=`echo "$b" |sed 's/[0-9]//'`
if [ -n "$a" ]
then
echo "please input a number between 0 to 9"
let c=c+1
else
echo "the number you input is correct"
exit
fi
if [ $c -eq 4 ]
then
echo "please retry after 24 hours"
exit
fi
done
fi
c=0
read -p "please input a number between 0 to 9: " n
if [ $n -lt 0 -o $n -gt 10 ]
then
echo "please input a number between 0 to 9"
exit
fi
a=`echo "$n" |sed 's/[0-9]//'`
if [ -z "$a" ]
then
echo "the number you input is correct"
else
while :
do
read -p "please input a number between 0 to 9: " b
a=`echo "$b" |sed 's/[0-9]//'`
if [ -n "$a" ]
then
echo "please input a number between 0 to 9"
let c=c+1
else
echo "the number you input is correct"
exit
fi
if [ $c -eq 4 ]
then
echo "please retry after 24 hours"
exit
fi
done
fi
0
#!/bin/bash
#增加判断24小时后才能再玩一次
keylog=/tmp/keylog.txt
[ -e $keylog ]||touch $keylog
oldday=`cat $keylog`
newday=`date +%s`
if [ -z $oldday ];then
echo "The first to play this game."
elif [ $newday -lt $oldday ];then
echo "Please play this game one more time over 24 hours"
exit
fi
oldday=`date -d "+1day" +%s`
echo $oldday > $keylog
b_num=$[ $RANDOM % 10 ]
for i in `seq 0 4`;do
read -p "please input a num(0-9): " num
n=`echo $num |sed -r 's/[0-9]//g'`
if [ ! -z $n ];then
echo "your input is not a num."
elif [ "$num" == "$b_num" ];then
echo "you are right."
exit
fi
done
echo "the right num is $b_num"
编辑回复