100+ Python挑战性编程练习(2)
熟能生巧,多撸代码多读书
21、机器人从原点(0,0)开始在平面内移动。机器人可以按照给定的步骤向上、向下、向左和向右移动。机器人运动轨迹如右所示: 上 5 下 3 左 3 右2 i;方向后面的数字是步骤。请写一个程序来计算从当前位置经过一系列的移动和原始点的距离。如果距离是一个浮点数,那么只需打印最近的整数。
例如:输入 UP 5 DOWN 3 LEFT 3 RIGHT 2 输出为 2
import math
pos = [0,0]
while True:
s = input()
if not s:
break
movement = s.split(" ")
direction = movement[0]
steps = int(movement[1])
if direction=="UP":
pos[0]+=steps
elif direction=="DOWN":
pos[0]-=steps
elif direction=="LEFT":
pos[1]-=steps
elif direction=="RIGHT":
pos[1]+=steps
else:
pass print(int(round(math.sqrt(pos[1]**2+pos[0]**2))))
注意:考察点为-- int(round(math.sqrt(pos[1]**2+pos[0]**2)))
22、编写一个程序来计算输入单词的频率。输出应该在对关键字进行数字排序后输出。
假设向程序提供以下输入:
是Python新手还是在python2和python3之间选择?阅读python2或python3。
则输出为: (没看明白什么意思,后期在研究)

freq = {} # frequency of words in text 文本中单词的频率
line = input()
for word in line.split():
freq[word] = freq.get(word,0)+1
words = freq.keys()
words.sort()
for w in words:
print("%s:%d" % (w,freq[w]))
23、写一个计算数字平方值的方法 (Using the ** operator)
def square(num):
return num ** 2 print(square(2))
print(square(3))
24、Python有许多内置函数,如果您不知道如何使用它,您可以在线阅读文档或查找一些书籍。但是Python对于每个内置函数都有一个内置的文档函数,请编写程序打印一些Python内置函数文档,如abs(), int(), raw_input(),并为自己的函数添加文档。
The built-in document method is __doc__
def square(num):
'''Return the square value of the input number. The input number must be integer.
'''
return num ** 2 print(square(2))
print(square.__doc__)
# print(int.__doc__)
# print(abs.__doc__)

25、定义一个类,该类有一个类参数和一个相同的实例参数。
Define a instance parameter, need add it in __init__ method You can init a object with construct parameter or set the value later.
定义一个实例参数,需要在_init__方法中添加它,您可以使用构造参数初始化一个对象,或者稍后设置该值。
class Person:
# Define the class parameter "name"
name = "Person" def __init__(self, name=None):
# self.name is the instance parameter
self.name = name jeffrey = Person("Jeffrey")
print("%s name is %s" % (Person.name, jeffrey.name)) nico = Person()
nico.name = "Nico"
print("%s name is %s" % (Person.name, nico.name)) # 输出结果为:
# Person name is Jeffrey
# Person name is Nico
26、定义一个可以计算两个数字和的函数。
def SumFunction(number1, number2):
return number1+number2 print(SumFunction(1,2))
27、定义一个可以将整数转换为字符串并在控制台中打印它的函数。 --Use str() to convert a number to string.
def printValue(n):
print(str(n)) printValue(3.0)
28、定义一个函数,该函数可以接收两个字符串形式的整数并计算它们的和,然后在控制台中打印它们。 --Use int() to convert a string to integer.
def printValue(s1,s2):
print(int(s1)+int(s2)) printValue("","") #
29、定义一个函数,该函数可以接受两个字符串作为输入,并连接它们,然后在控制台中打印它们。
def printValue(s1,s2):
print(s1+s2) printValue("","") #
30、定义一个函数,该函数可以接受两个字符串作为输入,并在控制台中打印最大长度的字符串。如果两个字符串的长度相同,那么该函数应该逐行打印所有l字符串。
def printValue(s1, s2):
len1 = len(s1)
len2 = len(s2)
if len1 > len2:
print(s1) elif len2 > len1:
print(s2)
else:
print(s1)
print(s2) printValue("fuck", "you")
31、定义一个可以接受整数作为输入的函数,如果数字是偶数,则打印“它是偶数”,否则打印“它是奇数”。
def checkValue(n):
if n % 2 == 0:
print("It is an even number-偶数")
else:
print("It is an odd number-奇数") checkValue(72)
32、定义一个可以打印字典的函数,其中键是1到3之间的数字(包括),值是键的平方。
def printDict(n):
d = dict()
d[1] = 1
d[2] = 2 ** 2
d[3] = 3 ** 2
d[n] = n ** 2
print(d) printDict(78) # 输出: {1: 1, 2: 4, 3: 9, 78: 6084}
33、定义一个可以打印字典的函数,其中键是1到20之间的数字(包括),值是键的平方。
使用dict[key]=value模式将条目放入字典。 使用**运算符得到一个数的幂。 对循环使用range()。
---->>> 由于下面几题类似,code直接显示。
def printDict():
d = dict()
for i in range(1, 21):
d[i] = i ** 2
print(d) printDict()
#{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361, 20: 400}
34、定义一个函数,它可以生成一个字典,其中键是1到20之间的数字(包括),值是键的平方。函数应该只打印值。
def printDict():
d = dict()
for i in range(1, 21):
d[i] = i ** 2
for (k, v) in d.items():
print(v) printDict()
35、定义一个函数,它可以生成一个字典,其中键是1到20之间的数字(包括),值是键的平方。该函数应该只打印键。
def printDict():
d = dict()
for i in range(1, 21):
d[i] = i ** 2
for k in d.keys():
print(k) printDict()
36、定义一个函数,它可以生成和打印一个列表,其中的值是1到20之间的数字的平方(都包括在内)。(什么鬼,没完没了吗o(╥﹏╥)o)
def printList():
li = list()
for i in range(1, 21):
li.append(i ** 2)
print(li) printList()
# # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]
37、定义一个函数,它可以生成一个列表,其中的值是1到20之间的数字的平方(都包括在内)。然后该函数需要打印列表中的前5个元素。
def printList():
li = list()
for i in range(1, 21):
li.append(i ** 2)
print(li[:5]) printList()
# [1, 4, 9, 16, 25] 我怀疑这老哥是在凑题目总数
38、定义一个函数,它可以生成一个列表,其中的值是1到20之间的数字的平方(都包括在内)。然后该函数需要打印列表中的最后5个元素。
def printList():
li = list()
for i in range(1, 21):
li.append(i ** 2)
print(li[-5:]) printList()
# [256, 289, 324, 361, 400]
39、定义一个函数,它可以生成一个列表,其中的值是1到20之间的数字的平方(都包括在内)。然后,该函数需要打印列表中除前5个元素之外的所有值。
40、定义一个函数,它可以生成和打印一个元组,其中的值是1到20之间的数字的平方(都包括在内)。
def printTuple():
li = list()
for i in range(1, 21):
li.append(i ** 2)
print(tuple(li)) printTuple()
# (1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400)
=============================分割线================缓一缓=======================================
41、对于给定的元组(1、2、3、4、5、6、7、8、9、10),编写一个程序将前半值打印在一行中,后半值打印在一行中。
tp=(1,2,3,4,5,6,7,8,9,10)
tp1=tp[:5]
tp2=tp[5:]
print(tp1)
print(tp2)
42、编写一个程序来生成和打印另一个元组,它的值是给定元组中的偶数(1、2、3、4、5、6、7、8、9、10)。
tp=(1,2,3,4,5,6,7,8,9,10)
li=list()
for i in tp:
# print(i)
if i%2==0:
li.append(i) tp2=tuple(li)
print(tp2)
#(2, 4, 6, 8, 10)
43、Write a program which accepts a string as input to print "Yes" if the string is "yes" or "YES" or "Yes", otherwise print "No".
s= input()
if s=="yes" or s=="YES" or s=="Yes":
print("Yes")
else:
print("No")
44、编写一个程序,可以过滤列表中的偶数使用过滤功能。列表是:[1、2、3、4、5、6、7、8、9、10]。
li = [1,2,3,4,5,6,7,8,9,10]
evenNumbers = filter(lambda x: x%2==0, li)
print(evenNumbers)
#<filter object at 0x000001891A2162B0>
# 它生成的是一个对象, 这是想表达什么意思?求解
45、编写一个可以映射()的程序,生成一个元素是[1,2,3,4,5,6,7,8,9,10]中元素的平方的列表。
li = [1,2,3,4,5,6,7,8,9,10]
squaredNumbers = map(lambda x: x**2, li)
print(squaredNumbers)
# <map object at 0x000002CCD4976208>
46、编写一个程序,可以映射()和过滤器(),使一个列表的元素是偶数的平方在[1,2,3,4,5,6,7,8,9,10]。
li = [1,2,3,4,5,6,7,8,9,10]
evenNumbers = map(lambda x: x**2, filter(lambda x: x%2==0, li))
print(evenNumbers)
# <map object at 0x000001F9391D6BA8>
47、编写一个可以filter()的程序,生成一个元素在1到20之间的偶数列表(都包含在内)。
evenNumbers = filter(lambda x: x%2==0, range(1,21))
print (evenNumbers)
# <filter object at 0x00000254AE8F6630>
48、编写一个可以映射()的程序,生成一个元素为1到20之间的数字的平方的列表(都包含在内)。
squaredNumbers = map(lambda x: x**2, range(1,21))
print(squaredNumbers)
# <map object at 0x000001F2ABA369E8>
#上面几个在研究一下
49、定义一个名为American的类,该类有一个名为printNationality的静态方法。
class American(object):
@staticmethod
def printNationality():
print("America") anAmerican = American()
anAmerican.printNationality()
American.printNationality() # America
# America
50、定义一个名为American的类及其子类NewYorker。
class American(object):
pass class NewYorker(American):
pass anAmerican = American()
aNewYorker = NewYorker()
print(anAmerican)
print(aNewYorker) # <__main__.American object at 0x000001A7D04B62B0>
# <__main__.NewYorker object at 0x000001A7D04B6A20>
51、定义一个名为Circle的类,它可以由一个半径来构造。Circle类有一个计算面积的方法。
class Circle(object):
def __init__(self, r):
self.radius = r def area(self):
return self.radius**2*3.14 aCircle = Circle(521)
print(aCircle.area())
52、定义一个名为Rectangle的类,它可以由长度和宽度来构造。矩形类有一个可以计算面积的方法。
class Rectangle(object):
def __init__(self, l, w):
self.length = l
self.width = w def area(self):
return self.length*self.width aRectangle = Rectangle(2,10)
print(aRectangle.area())
53、定义一个名为Shape的类及其子类Square。Square类有一个init函数,它以长度作为参数。这两个类都有一个area函数,可以打印形状的面积,其中形状的面积默认为0。
class Shape(object):
def __init__(self):
pass def area(self):
return 0 class Square(Shape):
def __init__(self, l):
Shape.__init__(self)
self.length = l def area(self):
return self.length*self.length aSquare= Square(3)
print(aSquare.area())
54、请抛出一个RuntimeError异常。
raise RuntimeError('something wrong')
55、编写一个函数来计算5/0并使用try/except来捕获异常。
def throws():
return 5/0 try:
throws()
except ZeroDivisionError:
print("division by zero!")
except Exception as err :
print('Caught an exception')
finally:
print('In finally block for cleanup') # division by zero!
# In finally block for cleanup
注意:Python 语法错误 except Exception python2 和Python3 区别,github上的是2,需要改回来

希望不再熬夜,不要一个人,晚安,加油。
100+ Python挑战性编程练习(2)的更多相关文章
- 100+ Python挑战性编程练习(1)
目前,这个项目已经获得了7.1k Stars,4.1k Forks. 初级水平是指刚刚通过Python入门课程的人.他可以用1或2个Python类或函数来解决一些问题.通常,答案可以直接在教科书中找 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- python web编程-CGI帮助web服务器处理客户端编程
这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- 深入理解 Python 异步编程(上)
http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知 ...
- Python猫荐书系列之五:Python高性能编程
稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问:这两种语言谁更厉害/好找工作/高工资…… 对于编程语言的争论,就是猿界的生 ...
- Python面向对象编程指南
Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
随机推荐
- null 的应用
它是 Oracle 中非常特殊的一种类型.它表示不确定,表示没有值.并且它能转化成所有的类型. 向数据库中插入空字符串时,oracle 会把它自动转化为 null 类型.所以,在查询空字符的时候: s ...
- linux系统下导出MySQL文件
1.配置:从centOS6.5系统,MySQL数据库 2.导出.sql文件的命令: mysqldump -uroot -h116.228.90.147 -P18006 -p aimo > /ho ...
- 【UOJ#394】[NOI2018] 冒泡排序
题目链接 题意 求有多少个字典序严格大于给定排列 \(q_i\) 的排列满足其逆序对数(冒泡排序需要交换的次数)达到下限 \(\frac{1}{2}\sum_{i=1}^n |i-p_i|\) Sol ...
- python接口自动化七(重定向-禁止重定向Location)
前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...
- JAVA笔记28-正则表达式(补充、不重要)
一.Greedy(贪婪的)尽可能多的匹配,Reluctant(不情愿的)尽可能少的匹配.Possessive(独占的)不常用. Greedy 数量词 X? X,一次或一次也没有 X* X,零次或多次 ...
- 给DEDECMS广告管理中增加图片上传功能
dedecms的广告管理功能稍微有点次,本文就是在dedecms广告管理原有的基础上增加广告图片上传功能. 安装方法,对应自己的dedecms版本下载对应的编码然后解压把里面的文件放在后台目录覆盖即可 ...
- Win7,win10(部分机型) 安装appscan9.0.3.10(可升级)实操流程
Win10部分机型不能很好的兼容appscan,建议使用者用win7系统安装appscan 写于:2018.12.2 IBM Security AppScan Standard 可通过自动执行应用安全 ...
- http三次握手,四次挥手
本文经过借鉴书籍资料.他人博客总结出的知识点,欢迎提问 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后 ...
- 【商业智能VS人工智能】
什么是智能? 从感觉到记忆到思维这一过程,称为“智慧”,智慧的结果就产生了行为和语言,将行为和语言的表达过程称为“能力”,两者合称“智能”,将感觉.去记.回忆.思维.语言.行为的整个过程称为智能过程, ...
- android存储路径问题
关于存储路径问题,如果是想要存储在应用本身的路径下,如果该应用卸载的时候,对应文件随之卸载, 如果使用的是android level 8以上的版本,采用的是: getExternalFilesDir( ...