一、第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
apple = int(input())
pear = int(input())
sum_result = apple + pear
print(sum_result)
div_result = apple / pear
print(div_result)
exp_result = apple*apple
print(exp_result)
if apple == pear :
isequal = True
else :
isequal = False
print(isequal)
if apple > pear :
ismax = True
else :
ismax = False
print(ismax)
multi_result = pear * 2
print(multi_result)
二、逻辑运算符
任务描述 本关介绍运算符中的逻辑运算符,逻辑运算符能够将语句连接成更加复杂的复杂语句。逻辑运算符要求操作数的类型为逻辑型,其运算结果也为逻辑型的值。
以下为逻辑运算的现实场景: 假设没有说谎代表逻辑真,说了谎代表逻辑假。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
tom = input()
jerry = input()
not_result=not jerry
print(not_result)
and_result = tom and jerry
print(and_result)
3.成员运算符
任务描述 如果我们想知道自己是否是篮球队成员,我们就要在成员名单中查找,如果名单中有一百人,最坏的情况下我们需要查找一百次,这需要多久的时间呀!与此同理,当我们在编程时判断一个元素是否存在于一大堆数据中,如果通过遍历一一对比,则大大增加了运行时间。而成员运算符就可以轻松解决这个问题,它能很快地判断某一元素是否存在于大量数据中。
本关的任务就是学习并运用成员运算符。
相关知识 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 预期输出:
我是篮球社成员 我是篮球社成员
def member(me,member_list = []):
if(me in member_list):
print("我是篮球社成员")
else:
print("我不是篮球社成员")
if(me not in member_list ):
print("我不是篮球社成员")
else:
print("我是篮球社成员")
4.身份运算符
任务描述 变量是存储在内存中的值。在 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 = 20
addresstwo = 20
addressthree = 12
if(addressone is addresstwo ):
print("变量addressone与变量addresstwo有相同的存储单元")
else:
print("变量addressone与变量addresstwo的存储单元不同")
if(addresstwo is not addressthree ):
print("变量addresstwo与变量addressthree的存储单元不同")
else:
print("变量addresstwo与变量addressthree有相同的存储单元")
5.运算符的优先级
任务描述 运算符的优先级是不同的,并且存在高低之分,所以并不是所有的计算语句都是从左至右运算的。在编写程序时,若在一个计算语句中出现了多个运算符,那就要根据运算符的优先级来排列规划数值计算顺序,不然就会得到错误的计算结果。本关的任务是让学习者掌握运算符的优先级,并能根据要求写出运算语句。
相关知识 运算符优先级 要实现上述功能,需要掌握运算符的优先级。下表列出了优先级由高到低的所有运算符:
类别 类型名 ** 指数(最高优先级) ~ + - 按位翻转,一元加号和减号(最后两个的方法名为 +@ 和 -@)
<< 右移,左移运算符 & 位 (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
def thePriority(var1,var2,var3,var4):
result=((var1<<2)+var2)*var3
print(result)
result=((var1 & var2)+var3)*var4
print(result)
|