熟能生巧,多撸代码多读书

https://github.com/zhiwehu/Python-programming-exercises/blob/master/100+%20Python%20challenging%20programming%20exercises.txt

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)的更多相关文章

  1. 100+ Python挑战性编程练习(1)

    目前,这个项目已经获得了7.1k  Stars,4.1k Forks. 初级水平是指刚刚通过Python入门课程的人.他可以用1或2个Python类或函数来解决一些问题.通常,答案可以直接在教科书中找 ...

  2. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  3. python web编程-CGI帮助web服务器处理客户端编程

    这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...

  4. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  5. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  6. 深入理解 Python 异步编程(上)

    http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知 ...

  7. Python猫荐书系列之五:Python高性能编程

    稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问:这两种语言谁更厉害/好找工作/高工资…… 对于编程语言的争论,就是猿界的生 ...

  8. Python面向对象编程指南

    Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...

  9. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

随机推荐

  1. 解决:java compiler level does not match the version of the installed java project facet错误

    java compiler level does not match the version of the installed java project facet错误的解决 因工作的关系,Eclip ...

  2. selenium操作下拉选和网页提示框

    import time from selenium import webdriver from selenium.webdriver.support.select import Select#处理下拉 ...

  3. Modbus软件开发实战指南 之 开发自己的Modbus Poll工具 - 3

    Modbus-RTU 一.数据分析       两个设备(单片机)通讯,用的是Modbus协议.      在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如: 说明: OX[20]   代表是 ...

  4. 初始Turtle

    ---恢复内容开始--- turtle库介绍 海龟作图最初源自20世纪60年代的Logo(创建于1967年,是一种教育编程语言)编程语言. 常用函数说明 画笔的属性 设置画笔的宽度   t.pensi ...

  5. 【c++】一道关于继承和析构的笔试题

    题目如下,求输出结果 class A { public: A() { cout<<"A"<<endl; } ~A() { cout<<" ...

  6. jdk java 环境变量配置

    下载 下载JDK 64 位 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fw ...

  7. linux 内存

    [转]Linux 查看内存(free buffer cache) 转自:http://elf8848.iteye.com/blog/1995638 Linux下如何查内存信息,如内存总量.已使用量.可 ...

  8. HDU 1711 Number Sequence(KMP)附带KMP的详解

    题目代号:HDU 1711 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/ ...

  9. VS Code报错Module 'xx' has no 'xx' member pylint(no-member)解决办法

    pylint是vscode的python语法检查器,pylint是静态检查,在用第三方库的时候有些成员只有在运行代码的时候才会被建立,它就找不到成员,在设置(settings.json)里添加 &qu ...

  10. Spring Cloud Stream教程(二)主要概念

    Spring Cloud Stream提供了一些简化了消息驱动的微服务应用程序编写的抽象和原语.本节概述了以下内容: Spring Cloud Stream的应用模型 Binder抽象 持续的发布 - ...