第1关:算术、比较、赋值运算符
任务描述
在编程时,我们常常需要对数值或对象进行算术、比较运算和赋值运算,以此来实现我们的功能需求。
本关介绍python中的一些基本运算符,并要求对给定的苹果和梨的数量进行算术运算、比较、赋值运算,并输出相应结果。
相关知识
要实现上述功能,需要用到python中的各种运算符。python中的运算符包括:
算术运算符
比较(关系)运算符
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符
本关先介绍前三种运算符。
算术运算符
算术运算符包括:加(+)、减(-)、乘(*)、除(/)、取模-返回除法的余数(%)、幂-返回x的y次幂(**)、取整数-返回商的整数部分(//)。
例如,计算a与b的和:
a = 10
b = 20
print(a + b)
输出结果为:
30
计算b除以a的余数:
print(b % a)
输出结果为:
0
比较(关系)运算符
比较(关系)运算符包括:等于(==)、不等于(!=或者<>)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。
例如,判断a与b是否相等:
a = 10
b = 20
a == b
返回:
false
判断a与b是否不相等:
a = 10
b = 20
a <> b
返回:
true
赋值运算符
赋值运算符包括:简单的赋值运算符(=)、加法赋值运算符(+=)、减法赋值运算符(-=)、乘法赋值运算符(*=)、除法赋值运算符(/=)、取模赋值运算符(%=)、幂赋值运算符(**=)、取整除赋值运算符(//=)。
例如,将a与b的和赋值给c:
c = (a + b)
将c乘以a的值赋值给c:
c *= a
等价于
c = (c * a)
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第二章。
编程要求
本关的编程任务是补全operater.py文件中几个运算代码。具体要求如下:
对于输入的苹果数量apple和梨的数量pear,写出apple加pear的代码
对于输入的苹果数量apple和梨的数量pear,写出apple除以pear的代码
对于输入的苹果数量apple,写出apple的2次幂的代码
对于输入的苹果数量apple和梨的数量pear,判断apple是否与pear相等
对于输入的苹果数量apple和梨的数量pear,判断apple是否大于等于pear
对于输入的梨的数量pear,用赋值乘法运算符计算pear乘以2,并赋值给pear
本关涉及的代码文件operater.py的代码框架如下:
定义theOperation方法,包括apple和pear两个参数,分别表示苹果和梨子的数量 def
theOperation(apple,pear):
#请在此处填入计算苹果个数加梨的个数的代码,并将结果存入sum_result变量
###### Begin ######
####### End #######
print(sum_result)
# 请在此处填入苹果个数除以梨的个数的代码,并将结果存入 div_result变量
###### Begin ######
####### End #######
print(div_result)
# 请在此处填入苹果个数的2次幂的代码,并将结果存入exp_result变量
###### Begin ######
####### End #######
print(exp_result)
# 请在此处填入判断苹果个数是否与梨的个数相等的代码,并将结果存入isequal变量
###### Begin ######
####### End #######
print(isequal)
# 请在此处填入判断苹果个数是否大于等于梨的个数的代码,并将结果存入ismax变量
###### Begin ######
####### End #######
print(ismax)
# 请在此处填入用赋值乘法运算符计算梨个数乘以2的代码,并将结果存入multi_result变量
###### Begin ######
####### End #######
print(multi_result)
测试说明
本关的测试文件是src/step1/operatertest.py文件,测试过程如下:
1.读者将 src/step1/operater.py 中的代码补充完毕,然后点击评测,平台自动编译运行 operatertest.py,并以标准输入方式提供测评输入;
2.平台调用并执行读者编写的operater.py中的方法,获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step1/operatertest.py的样例测试集:
测试输入:
10
20
预期输出:
30
0.5
100
False
False
40
开始你的任务吧,祝你成功!
不要瞧不起你手头上所做的每一件琐碎小事,把它们干漂亮了,才能成就将来的大事。
相关代码
# 定义theOperation方法,包括apple和pear两个参数,分别表示苹果和梨子的数量
def theOperation(apple,pear):
#请在此处填入计算苹果个数加梨的个数的代码,并将结果存入sum_result变量
###### Begin ######
sum_result = apple + pear
####### End #######
print(sum_result)
# 请在此处填入苹果个数除以梨的个数的代码,并将结果存入div_result变量
###### Begin ######
div_result = apple / pear
####### End #######
print(div_result)
# 请在此处填入苹果个数的2次幂的代码,并将结果存入exp_result变量
###### Begin ######
exp_result = apple * apple
####### End #######
print(exp_result)
# 请在此处填入判断苹果个数是否与梨的个数相等的代码,并将结果存入isequal变量
###### Begin ######
isequal = (apple == pear)
####### End #######
print(isequal)
# 请在此处填入判断苹果个数是否大于等于梨的个数的代码,并将结果存入ismax变量
###### Begin ######
ismax = apple >= pear
####### End #######
print(ismax)
# 请在此处填入用赋值乘法运算计符算梨个数乘以2的代码,并将结果存入multi_result变量
###### Begin ######
multi_result = pear * 2
####### End #######
print(multi_result)
第2关:逻辑运算符
任务描述
本关介绍运算符中的逻辑运算符,逻辑运算符能够将语句连接成更加复杂的复杂语句。逻辑运算符要求操作数的类型为逻辑型,其运算结果也为逻辑型的值。以下为逻辑运算的现实场景:
假设没有说谎代表逻辑真,说了谎代表逻辑假。tom没有说谎,jerry也没有说谎,则逻辑与表示tom与jerry都没有说谎,逻辑与的值为真;tom没有说谎,jerry说谎了,则逻辑与的值为假。
本关的任务就是让读者运用python中的逻辑运算符来得出tom与jerry是否有说谎。
相关知识
python中的逻辑运算符包括如下三种:
and(逻辑与)
or(逻辑或)
not(逻辑非)
and(逻辑与)
逻辑表达式为x and y。
如果 x 为 False,x and y 返回 False,否则它返回y 的计算值。
or(逻辑或)
逻辑表达式为x or y。
当x为true,y为false时,得到的结果为true,只有当x与y都为false时,得到的结果为false,如果 x 是非 0,它返回 x 的值,否则它返回y的计算值。
not(逻辑非)
逻辑表达式为not x。
当x为true,得到的结果为false,当x为false时,得到的结果为true。
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第二章
编程要求
本关的编程任务是补全logic.py文件中的代码,对于输入的tom与jerry的真假性实现如下功能:
计算jerry的逻辑非,并打印输出;
计算tom与jerry的逻辑与,并打印输出。
本关涉及的代码文件框架如下:
定义逻辑运算处理函数theLogic,其中tom与Jerry分别代表两个输入参数 def theLogic(tom,jerry):
# 请在此处填入jerry的布尔“非”代码,并将结果存入到not_result这个变量
###### Begin ######
####### End #######
print(not_result)
# 请在此处填入tom,jerry的逻辑与代码,并将结果存入到and_result这个变量
###### Begin ######
####### End #######
print(and_result)
测试说明
本关的测试文件是src/step2/logictest.py文件,测试的具体过程如下:
读者将 src/Step2/logic.py 中的代码补充完毕。
读者点击评测,平台自动编译运行 logictest.py,并以标准输入方式提供测评输入,并调用读者在logic文件中实现的函数;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step2/logictest.py的样例测试集:
测试输入:
2
5
预期输出:
False
5
开始你的任务吧,祝你成功!
在成功的道路上,激情是需要的,志向是可贵的,但更重要的是那毫无情趣的近乎平常的坚守的毅力和勇气。
相关代码
# 定义逻辑运算处理函数theLogic,其中tom与Jerry分别代表两个输入参数
def theLogic(tom,jerry):
# 请在此处填入jerry的布尔“非”代码,并将结果存入到not_result这个变量
###### Begin ######
not_result = not jerry
####### End #######
print(not_result)
# 请在此处填入tom,jerry的逻辑与代码,并将结果存入到and_result这个变量
###### Begin ######
and_result = tom and jerry
####### End #######
print(and_result)
第3关:位运算符
任务描述
程序中所有的数都是以二进制形式存储在计算机中的。例如,a = 13转化成二进制就是a = 1101,每一个数称为一位。位运算就是对二进制按位进行运算。
本关的任务就是让读者了解并能运用python中的位运算符来进行运算。
相关知识
python中的位运算符包括如下六种:
&(按位与)
|(按位或)
^(按位异或)
~(按位取反)
<<(左移动)
>>(右移动)
&(按位与)
将两个二进制数按位进行逻辑与,对应位都为1时则结果为1,否则为0,最后得出结果。
例如,a = 10,二进制数为a = 1010,b = 8,二进制数为b = 1000,按位与的结果为a & b = 1000,换成十进制结果为8。
|(按位或)
将两个二进制数按位进行逻辑或,对应位中有一个为1则结果为1,两个都为0则结果为0,最后得出结果。
例如,a = 12,二进制数为a = 1100,b = 8,二进制数为b = 1000,则其按位或的结果为a | b = 1100,换成十进制结果为12。
^(按位异或)
将两个二进制数按位进行逻辑异或,对应位不同结果为1,相同为0,最后得出结果。
例如,a = 12,二进制数为a = 1100,b = 8,二进制数为b = 1000,则其按位异或的结果为a ^ b = 0100,换成十进制结果为4。
~(按位取反)
将一个二进制数按位进行取反,当前位为1,则取反为0,当前位为0,则取反为1,最后得出结果。
例如,a = 18,二进制数为a = 10010,则其按位取反的结果为~a = 01101,换成十进制结果为13。
<<(左移动)
将一个二进制数进行左移,就是按二进制形式把所有的数字全部向左移动对应的位数,移动时高位舍弃,低位补零。
例如,a = 3,二进制数为a = 0011,则其向左移动两位的结果为a << 2 = 1100,换成十进制结果为12。
>>(右移动)
将一个二进制数进行右移,就是按二进制形式把所有的数字全部向右移动对应的位数,移动时低位舍弃,高位补符号位。
例如,a = 4,二进制数为a = 0100,则其向右移动两位的结果为a >> 2 = 0001,换成十进制结果为1。
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第二章。
编程要求
本关的编程任务是补全bit.py文件中的代码,实现如下功能:
计算两个输入变量bitone,bittwo按位与的值
计算两个输入变量bitone,bittwo按位或的值
计算两个输入变量bitone,bittwo按位异或的值
计算一个输入变量bitone按位取反的值
计算一个输入变量bittwo左移动两位的值
计算一个输入变量bittwo右移动两位的值
本关涉及的代码文件框架如下:
定义位运算处理函数bit, 其中bitone和bittwo两个参数为需要进行位运算的变量,由测试程序读入。 def
bit(bitone,bittwo):
# 请在此处填入将bitone,bittwo按位与的代码,并将运算结果存入result变量
###### Begin ######
####### End #######
print(result)
# 请在此处填入将bitone,bittwo按位或的代码,并将运算结果存入result变量
###### Begin ######
####### End #######
print(result)
# 请在此处填入将bitone,bittwo按位异或的代码,并将运算结果存入result变量
###### Begin ######
####### End #######
print(result)
# 请在此处填入将bitone按位取反的代码,并将运算结果存入result变量
###### Begin ######
####### End #######
print(result)
# 请在此处填入将bittwo左移动两位的代码,并将运算结果存入bittwo变量
###### Begin ######
####### End #######
print(bittwo)
# 请在此处填入将bittwo右移动两位的代码,并将运算结果存入result变量
###### Begin ######
####### End #######
print(result)
测试说明
本关的测试文件是src/step3/bittest.py文件,测试的具体过程如下:
读者将 src/Step3/bit.py 中的代码补充完毕,然后点击评测,平台自动编译运行bittest.py ,以标准输入方式提供测评输入,并调用读者在bit中实现的函数;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step3/bittest.py的样例测试集:
测试输入:
12
6
预期输出:
4
14
10
-13
24
1
开始你的任务吧,祝你成功!
我们能做的就是拼尽全力,即使迈出的步子再小,我们也比昨天要更接近自己的目标了。
相关代码
# 定义位运算处理函数bit, 其中bitone和bittwo两个参数为需要进行位运算的变量,由测试程序读入。
def bit(bitone,bittwo):
# 请在此处填入将bitone,bittwo按位与的代码,并将运算结果存入result变量
###### Begin ######
result = bitone & bittwo
####### End #######
print(result)
# 请在此处填入将bitone,bittwo按位或的代码,并将运算结果存入result变量
###### Begin ######
result = bitone | bittwo
####### End #######
print(result)
# 请在此处填入将bitone,bittwo按位异或的代码,并将运算结果存入result变量
###### Begin ######
result = bitone ^ bittwo
####### End #######
print(result)
# 请在此处填入将bitone按位取反的代码,并将运算结果存入result变量
###### Begin ######
result = ~bitone
####### End #######
print(result)
# 请在此处填入将bittwo左移动两位的代码,并将运算结果存入result变量
###### Begin ######
result = bittwo << 2
####### End #######
print(result)
# 请在此处填入将bittwo右移动两位的代码,并将运算结果存入result变量
###### Begin ######
result = bittwo >> 2
####### End #######
print(result)
第4关:成员运算符
任务描述
如果我们想知道自己是否是篮球队成员,我们就要在成员名单中一一查找,如果名单中有一百人,最坏的情况下我们需要查找一百次,这需要多久的时间呀!
与此同理,当我们在编程时判断一个元素是否存在于一大堆数据中,如果通过遍历一一对比,则大大增加运行时间。而成员运算符就可以轻松解决这个问题,它能很快地判断某一元素是否存在于大量数据中。
本关的任务是让读者学习并学会运用成员运算符。
相关知识
python的成员运算符有以下两种:
in
not in
in
若x在y序列中,则返回true,若不存在则返回false。
例如:
a = 10
list = [1, 2, 3, 4, 5 ]
a in list
结果为:
false
not in
如果x不在y序列中,则返回True,否则返回false。
例如:
a = 10
list = [1, 2, 3, 4, 5 ]
a not in list
结果为:
True
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第二章。
编程要求
本关的任务是补全member.py文件中的代码,实现如下功能:
判断输入的人名me是否存在于输入的成员名单中
判断输入的人名me是否不存在于输入的成员名单中
本关涉及的代码文件框架如下:
#定义成员片段函数member,参数me为待判断的人名,member_list为成员名单 def member(me,member_list= []):
# 请在if后面的括号中填入判断变量me是否存在于list中的语句
###### Begin ######
if():
print(“我是篮球社成员”)
else:
print(“我不是篮球社成员”)
####### End #######
# 请在if后面的括号中填入判断变量me是不否存在于list中的语句
###### Begin ######
if():
print(“我不是篮球社成员”)
else:
print(“我是篮球社成员”)
####### End #######
测试说明
本关的测试文件是src/step4/membertest.py文件,测试的具体过程如下:
读者将 src/step4/membertest.py 中的代码补充完毕,然后点击评测,平台自动编译运行membertest.py ,并以标准输入方式提供测评输入;
平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step4/membertest.py的样例测试集:
测试输入:
Akone
Akone,Jim,Abel,Bob,Carl
预期输出:
我是篮球社成员
我是篮球社成员
开始你的任务吧,祝你成功!
别放弃,一步一步走下去,别让机会从眼前溜走,最终你会到达你想去的地方。
相关代码
# 定义成员片段函数member,参数me为待判断的人名,member_list为成员名单
def member(me,member_list = []):
# 请在if后面的括号中填入判断变量me是否存在于list中的语句
###### Begin ######
Me = me in member_list
if(Me):
print("我是篮球社成员")
else:
print("我不是篮球社成员")
####### End #######
# 请在if后面的括号中填入判断变量me是否存在于list中的语句
###### Begin ######
Me = me not in member_list
if( Me):
print("我不是篮球社成员")
else:
print("我是篮球社成员")
####### End #######
第5关:身份运算符
任务描述
变量是存储在内存中的值。在python中,变量不需要声明,变量的赋值操作就是变量的声明和定义过程,这个过程会在内存中为我们开辟一段存储空间存放我们所声明的变量。
本关的任务是让读者学习并掌握身份运算符,这个运算符可以判断两个变量的存储单元是否相同。
相关知识
python的身份运算符有以下两种:
is
is not
is
运算符is表示判断两个标识符的存储单元是否相同,若相同,则返回true,否则返回false。
例如:
a = 10
b = 10
a is b
结果为:
true
is not
运算符is not表示判断两个标识符的存储单元是否不相同,若不相同,则返回true,否则返回false。
例如:
a = 10
b = 10
a is not b
结果为:
False
本关要求判断给定的两个对象的存储单元是否相同。
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第二章。
编程要求
本关的任务是补全identity.py文件中的代码,实现如下功能:
判断输入的两个数addressone,addresstwo是否有相同的存储单元
判断输入的两个数addresstwo,addressthree是否没有相同的存储单元
本关涉及的代码文件框架如下:
#定义addressone和addresstwo两个变量,并为其赋值 addressone = 20 addresstwo = 20 addressthree = 12
#在if后面的括号中填入判断变量addressone与变量addresstwo是否有相同的存储单元的语句
###### Begin ######
if():
print(“变量addressone与变量addresstwo有相同的存储单元”) else:
print(“变量addressone与变量addresstwo的存储单元不同”)
####### End #######
#在if后面的括号中填入判断变量addresstwo与变量addressthree是否没有相同的存储单元的语句
###### Begin ######
if():
print(“变量addresstwo与变量addressthree的存储单元不同”) else:
print(“变量addresstwo与变量addressthree有相同的存储单元”)
####### End #######
测试说明
本关无测试文件,通关与否以输出结果作为判定。
以下是平台对src/step5/identity.py的样例测试集:
预期输出:
变量addressone与变量addresstwo有相同的存储单元
变量addressone与变量addresstwo有相同的存储单元
开始你的任务吧,祝你成功!
别放弃,一步一步走下去,别让机会从眼前溜走,最终你会到达你想去的地方。
相关代码
# 定义addressone和addresstwo两个变量,并为其赋值
addressone = 20
addresstwo = 20
addressthree = 12
# 在if后面的括号中填入判断变量addressone与变量addresstwo是否有相同的存储单元的语句
###### Begin ######
if(addressone is addresstwo):
print("变量addressone与变量addresstwo有相同的存储单元")
else:
print("变量addressone与变量addresstwo的存储单元不同")
####### End #######
# 在if后面的括号中填入判断变量addresstwo与变量addressthree是否没有相同的存储单元的语句
###### Begin ######
if(addresstwo is not addressthree):
print("变量addresstwo与变量addressthree的存储单元不同")
else:
print("变量addresstwo与变量addressthree有相同的存储单元")
####### End #######
第6关:运算符的优先级
任务描述
运算符的优先级是不同的,有高低之分,所以并不是所有的计算语句都是从左至右运算的。
在编写程序时,若在一个计算语句中出现了多个运算符,那就要根据运算符的优先级来排列规划数值计算顺序,不然就会得到错误的计算结果。
本关的任务是让读者掌握运算符的优先级,并能根据要求写出运算语句。
相关知识
运算符优先级
要实现上述功能,需要掌握运算符的优先级,下表列出了优先级由高到低的所有运算符:
类别 | 类型名 |
---|---|
** | 指数(最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 比较运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第二章。
编程要求
本关的编程任务是补全priority.py文件中的功能。具体要求如下:
先将var1左移两位,然后计算var1与var2的和,最后后将这个值乘以var3,输出最后的值
先将var1与var2按位与,然后计算得到的值与var3的和,最后后将这个值乘以var4,输出最后的值
本关涉及的代码文件框架如下:
#定义并实现优先级运算函数theProirity def thePriority(var1,var2,var3,var4):
#先将var1左移两位,然后计算var1与var2的和,最后将这个值乘以var3,并将最终结果存入result变量
###### Begin ######
####### End #######
print(result)
#先将var1与var2按位与,然后计算得到的值与var3的和,最后将这个值乘以var4,,并将最终结果存入result变量
###### Begin ######
####### End #######
print(result)
测试说明
本关的测试文件是src/step6/prioritytest.py文件,测试的具体过程如下:
1.读者将 src/Step6/priority.py 中的代码补充完毕,然后点击评测,平台自动编译运行 prioritytest.py ,并以标准输入方式提供测评输入,调用prority中的thePriority函数;
2.平台获取程序的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
以下是平台对src/step6/prioritytest.py的样例测试集:
测试输入:
5
3
12
43
预期输出:
276
559
开始你的任务吧,祝你成功!
胜利不是战胜敌人,而是提高自己。我们只要每天进步百分之一,那就是成功。
相关代码
# 定义并实现优先级运算函数theProirity
def thePriority(var1,var2,var3,var4):
#先将var1左移两位,然后计算var1与var2的和,最后后将这个值乘以var3,并将最终结果存入result变量
#********** Begin *********#
result = ((var1 << 2) + var2) * var3
#********** End **********#
print(result)
#先将var1与var2按位与,然后计算得到的值与var3的和,最后后将这个值乘以var4,并将最终结果存入result变量
#********** Begin *********#
result = ((var1 & var2) + var3) * var4
#********** End **********#
print(result)