楼主: jing_2845
6324 5

[原创博文] 123题里111题读入4后为什么出medium不是high? [推广有奖]

  • 0关注
  • 0粉丝

初中生

76%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
101 点
帖子
13
精华
0
在线时间
11 小时
注册时间
2009-9-25
最后登录
2012-12-6

楼主
jing_2845 发表于 2012-8-23 15:40:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
QUESTION 111
A SAS PRINT procedure output of the WORK.LEVELS data set is listed below:
Obsname level
1 Frank 1
2 Joan 2
3 Sui 2
4 Jose 3
5 Burt 4
6 Kelly .
7 Juan 1
The following SAS program is submitted:
data work . expertise;
set work. levels;
if level = . then expertise = 'Unknown';
else if level = 1 then expertise = 'Low';
else if level = 2 or 3 then expertise =' Medium';
else expertise = 'High';
run;
Which of the following values does the variable EXPERTISE contain?
A. Low, Medium, and High only
B. Low, Medium, and Unknown only
C. Low, Medium, High, and Unknown only
D. Low, Medium, High, Unknown, and ' ' (missing character value)
Answer: B
虽然我运行出来的结果也是B但不理解为什么读入4后是medium不是high啊?求高手解答!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Medium High edi Med following following procedure medium levels values

沙发
6738431 在职认证  发表于 2012-8-23 15:48:53
else if level = 2 or 3 then expertise =' Medium';

这句是个陷阱--你测试一下下面的结果


data btest;
  zor=1 or 2 or 3 or 4 or 5;
  z_or=        (1 or 2 or 3 or 4 or 5);
  zand=        1 & 2 &3 & 4 & 5;
  z_and= (1 & 2 &3 & 4 & 5);
  z_and_1=(1=        1 & 2 &3 & 4 & 5);
  z_and_2=(2=        1 & 2 &3 & 4 & 5);
  z_and_3=(3=        1 & 2 &3 & 4 & 5);
  z_and_4=(4=        4 & 2 &3 & 4 & 5);
  z_and_5=(5=        5 & 2 &3 & 4 & 5);
  x1=(1=2 or 3);
  x2=(1=(2 or 3));
  x3=(2=2 or 3);
  x4=(2=(2 or 3));
  y1=(1=2 & 3);
  y2=(1=(2 & 3));
  y3=(2=2 & 3);
  y4=(2=(2 & 3));
  y5=(3=2 & 3);       
  put _all_;
  run;



你看一下sas-log


1    data btest;
2      zor=1 or 2 or 3 or 4 or 5;
3      z_or= (1 or 2 or 3 or 4 or 5);
4      zand= 1 & 2 &3 & 4 & 5;
5      z_and= (1 & 2 &3 & 4 & 5);
6      z_and_1=(1=   1 & 2 &3 & 4 & 5);
7      z_and_2=(2=   1 & 2 &3 & 4 & 5);
8      z_and_3=(3=   1 & 2 &3 & 4 & 5);
9      z_and_4=(4=   4 & 2 &3 & 4 & 5);
10     z_and_5=(5=   5 & 2 &3 & 4 & 5);
11     x1=(1=2 or 3);
12     x2=(1=(2 or 3));
13     x3=(2=2 or 3);
14     x4=(2=(2 or 3));
15     y1=(1=2 & 3);
16     y2=(1=(2 & 3));
17     y3=(2=2 & 3);
18     y4=(2=(2 & 3));
19     y5=(3=2 & 3);
20     put _all_;
21     run;


zor=1 z_or=1 zand=1 z_and=1 z_and_1=1 z_and_2=0 z_and_3=0 z_and_4=1 z_and_5=1 x1=1 x2=1 x3=1 x4=0
y1=0 y2=1 y3=1 y4=0 y5=0 _ERROR_=0 _N_=1


这样你就看出了   level = 2 or 3  不管leve=1,2,3,4,都是真的,下面的else是不会执行的


明白?


藤椅
ziyenano 发表于 2012-8-23 16:01:24
if level = 2 or 3  这个表达式不等价于  if level = 2 or level=3

板凳
jing_2845 发表于 2012-8-23 16:12:11
6738431 发表于 2012-8-23 15:48
else if level = 2 or 3 then expertise =' Medium';

这句是个陷阱--你测试一下下面的结果
是变成判断if (level=2) or 3 的意思吗?无论(level=2)值为0还是1 or3后最后值都是1 真的意思吗?

报纸
6738431 在职认证  发表于 2012-8-23 16:12:52
ziyenano 发表于 2012-8-23 16:01
if level = 2 or 3  这个表达式不等价于  if level = 2 or level=3;
显然不是。 2 or 3 是一个表达式,它的值与level 比较····给你程序代码了,你运行一下看看就明白了

地板
ziyenano 发表于 2012-8-23 16:19:37
6738431 发表于 2012-8-23 16:12
显然不是。 2 or 3 是一个表达式,它的值与level 比较····给你程序代码了,你运行一下看看就明白了
对哦,逻辑运算 从左向右运行

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 17:28