在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
项目三-tiger机说明:每玩一次老ji游戏需要花费一元钱。钻石符号(DD)可以百搭,并且能够将最终的金额加倍。
任务分解:任务分解的步骤:
将复杂的任务分解为一些简单的子任务;
使用实例;
用通俗的语言描述解决方案,然后将其转换成R代码。
任务分解的种类:有序步骤和同类情况
老虎JI程序任务的初步分解
生成符号组合:#生成符号组合 get_symbols<-function(){ wheel<-c("DD","7","BBB","BB", "B","C","0") sample(wheel,size = 3,replace = T, prob = c(0.03,0.03,0.06,0.1, 0.25,0.01,0.52)) } get_symbols() 显示符号组合#显示符号组合 print("hello \nworld") cat("hello \nworld") print(get_symbols()) #分支语句> > #if、ifelse、switch > #if:主要处理单个的逻辑条件 > #如果一个数值小于0,取他的绝对值 > qz<-function(x){ + if(x<0){ + abs(x) + -x + } + } > qz(-9) [1] 9 > #如果一个数值大于0,返回1,如果小于0, > #返回-1,如果等于0,返回0 > jc<-function(x){ + if(x>0){ + return(1) + }else if(x<0){ + return(-1) + }else{ + return(0) + } + } > jc(9) [1] 1 > jc(-9) [1] -1 > jc(0) [1] 0 > jc1<-function(x){ + if(x>0) 1 else if(x<0)-1 else 0 + } > jc1(9) [1] 1 > jc1(-9) [1] -1 > jc1(0) [1] 0 > dj<-function(x){ + if(x>=90){ + "A" + }else if(x>=80){ + "B" + }else if(x>=70){ + "C" + }else if(x>=60){ + "D" + }else "F" + } > dj(60) [1] "D" > dj(50) [1] "F" ifelse:可以处理一个向量> #ifelse:可以处理一个向量 > jc2<-function(x){ + ifelse(x>0,1,-1) + } > jc2(c(3,-7)) [1] 1 -1 > #练习:如果x>0,返回x本身, > #如果x<0,取它的绝对值 > jc3<-function(x){ + ifelse(x>0,x,abs(x)) + } > jc3(c(3,-3)) [1] 3 3 > abs(-3:3) [1] 3 2 1 0 1 2 3 > #如果一个数值大于5,就返回5, > #如果-5到5之间,保持本身不变 > #如果小于-5,返回-5 > jc4<-function(x){ + ifelse(x>5,5,ifelse(x>=-5,x,-5)) + } > jc4(-2) [1] -2 #pmax、pminpmax(c(3,8,9),c(1,9,7))
[1] 3 9 9
> pmin(c(3,8,9),c(1,9,7))
[1] 1 8 7
> jc5<-function(x){
+ pmax(-5,pmin(5,x))
+ }
> jc5<-function(x){
+ pmin(5,pmax(-5,x))
+ }
> jc5(c(-3,6))
[1] -3 5
switch#switch:针对一个数字或者一个字符串来选择性的
#执行某些语句
switch(1,"x","y")
switch(2,"x","y")
switch(3,"x","y")
switch("a",a=1,b=2)
switch("c",a=1,b=2)
switch("c",a=1,b=2,3)
switch("d",a=1,b=2,3)
switchf<-function(x){
switch(x,
a=1:3,
b=list(x=0,y=1),
c={
cat("你选择了c\n")
list(name="c",value="haha")
})
}
switchf("a")
switchf("b")
switchf("c")
#循环:for、while、repeat#for循环 #语法结构: for (variable in vector) { expr } for (i in 1:3) { cat("当前的i值为",i,"\n") } i for (i in c("你","hao")) { cat("当前的i值为",i,"\n") }
#打印每个元素的长度和类 nk<-list(a=c(1,2,1),b=letters[1:4]) for (i in nk) { cat("i的长度:",length(i),"\nclass:",class(i),"\n") } #求1到100的和 sum(1:100) s<-0 for (i in 1:100) { s<-s+i } s #管理for循环:break、next#管理for循环:break、next
#break:终止循环
#1到5,遇到3时终止,打印1和2
for (i in 1:5) {
if(i==3) break
cat("message:",i,"\n")
}
#1000到1100,满足的条件是i的平方除以11的余数 #与i的3次方除以17的余数相同,取出i的值 #取余数:%% 9%%4 for (i in 1100:1000) { if((i^2)%%11==(i^3)%%17){ cat(i,"\n") break } } #next:跳过本次循环 #1到5,跳过3,打印1,2,4,5 for (i in 1:5) { if(i==3) next cat("message:",i,"\n") } #while循环#语法结构 while(cond){ expr } #当x<=5时,打印x的值 x<-0 while (x<=5) { cat(x,"\n") x<-x+1 }
#x从0开始,自增加1,当x=2时,执行下一次 #循环,当x=4时,终止循环 x<-0 repeat{ x<-x+1 if(x==2) next else if(x==4) break else cat(x,"\n") } 计算中奖金额#第一种情况:三个符号都相同 #7 7 7 symbol<-rep("7",3) #第一种方法 symbol[1]==symbol[2]&symbol[2]==symbol[3] #第二种方法 unique(symbol) length(unique(symbol))==1 #第三种方法 all(symbol==symbol[1]) #3个相同情况下: 第一种方式 if (all(symbol==symbol[1])) { if(symbol[1]=="DD") prize<-100 else if(symbol[1]=="7") prize<-80 else if(symbol[1]=="BBB") prize<-40 else if(symbol[1]=="BB") prize<-25 else if(symbol[1]=="B") prize<-10 else if(symbol[1]=="C") prize<-10 else prize<-0 } prize #第二种方式: switch(symbol[1],"DD"=100,"7"=80,"BBB"=40, "BB"=25,"B"=10,"C"=10,"0"=0) #第三种方式 查找表的方式 if (all(symbol==symbol[1])) { payout<-c("DD"=100,"7"=80,"BBB"=40, "BB"=25,"B"=10,"C"=10,"0"=0) prize<-unname(payout[symbol[1]]) } prize # 去掉名称unname unname(payout[symbol[1]]) payout[[symbol[1]]]
第二种情况:全是杠#第二种情况:全是杠
#B BB B
symbol<-c("B","BB","BBB")
all(c("7","BB","BBB") %in% c("B","BB","BBB"))
if (all(symbol==symbol[1])) {
payout<-c("DD"=100,"7"=80,"BBB"=40,
"BB"=25,"B"=10,"C"=10,"0"=0)
prize<-unname(payout[symbol[1]])
}else if(all(symbol %in% c("B","BB","BBB"))){
prize<-5
}
第三种情况:计算樱桃的数量symbol<-c("C","BB","BBB") sum(symbol=="C") if (all(symbol==symbol[1])) { payout<-c("DD"=100,"7"=80,"BBB"=40, "BB"=25,"B"=10,"C"=10,"0"=0) prize<-unname(payout[symbol[1]]) }else if(all(symbol %in% c("B","BB","BBB"))){ prize<-5 }else { yt<-sum(symbol=="C") prize<-c(0,2,5)[yt+1] } if(yt==0){ prize<-0 }else if(yt==1){ prize<-2 }else if(yt==2){ prize<-5 } prize |
请发表评论