花了一周的时间,整理了100道Python的练习题,如果你是一位初学者,那么这一份练习题将会给你带来极大的帮助,如果你能够完全独立的完成这份练习题,你已经入门的Python了,练习题涵盖Python基础的大部分内容,将分为五篇文章发出来,pdf版本可以在下方链接领取到。第二天21-40题
https://github.com/hellgoddess/PythonGuide/blob/main/python100%E9%A2%98/%E8%8E%B7%E5%8F%96python100%E9%A2%98pdf.md
就不多bb了,直接上干货!
机器人从原始点(0,0)开始在平面上移动。机器人可以按照给定的步骤向上,下,左和右移动。机器人运动的轨迹如下图所示:
UP 5 DOWN 3 LEFT 3 RIGHT 2
方向后的数字为步长。请编写一个程序,以计算一系列移动和原始点之后与当前位置的距离。如果距离是浮点数,则只需打印最接近的整数即可。 *示例:* 如果给出以下元组作为程序的输入:
UP 5 DOWN 3 LEFT 3 RIGHT 2
然后,程序的输出应为:
2
如果将输入数据提供给问题,则应假定它是控制台输入。这里的距离表示欧几里得距离。导入数学模块以使用sqrt函数。
我的解决方案:Python 3
import math x,y = 0,0 while True: s = input().split() if not s: break if s[0]=='UP': x-=int(s[1]) if s[0]=='DOWN': x+=int(s[1]) if s[0]=='LEFT': y-=int(s[1]) if s[0]=='RIGHT': y+=int(s[1]) dist = round(math.sqrt(x**2 + y**2)) print(dist)
from math import sqrt lst = [] position = [0,0] while True: a = input() if not a: break lst.append(a) for i in lst: if 'UP' in i: position[0] -= int(i.strip('UP ')) if 'DOWN' in i: position[0] += int(i.strip('DOWN ')) if 'LEFT' in i: position[1] -= int(i.strip('LEFT ')) if 'RIGHT' in i: position[1] += int(i.strip('RIGHT ')) print(round(sqrt(position[1] ** 2 + position[0] ** 2)))
编写一个程序来计算输入中单词的频率。在按字母数字顺序对键进行排序后,应输出输出。
假设将以下输入提供给程序:
New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
然后,输出应为:
2:2 3.:1 3?:1 New:1 Python:5 Read:1 and:1 between:1 choosing:1 or:2 to:1
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
ss = input().split() word = sorted(set(ss)) # split words are stored and sorted as a set for i in word: print("{0}:{1}".format(i,ss.count(i)))
或者
ss = input().split() dict = {} for i in ss: i = dict.setdefault(i,ss.count(i)) # setdefault() function takes key & value to set it as dictionary. dict = sorted(dict.items()) # items() function返回两个字典的键和值作为列表 # 然后进行排序。默认情况下,在dict中以 i 的第一键->第二键的顺序进行排序: for i in dict: print("%s:%d"%(i[0],i[1]))
或者
from collections import Counter ss = input().split() ss = Counter(ss) # returns key & frequency as a dictionary ss = sorted(ss.items()) # returns as a tuple list for i in ss: print("%s:%d"%(i[0],i[1]))
编写一种可以计算数字平方值的方法
n=int(input()) print(n**2)
Python具有许多内置函数,如果您不知道如何使用它,则可以在线阅读文档或查找一些书籍。但是Python对于每个内置函数都有一个内置文档函数。
请编写程序以打印一些Python内置函数文档,例如abs(),int(),raw_input()
并添加您自己的功能的文档
The built-in document method is __doc__
我的解决方案:Python 3
print(str.__doc__) print(sorted.__doc__) def pow(n,p): ''' param n: This is any integer number param p: This is power over n return: n to the power p = n^p ''' return n**p print(pow(3,4)) print(pow.__doc__)
定义一个类,该类具有一个类参数并且具有相同的实例参数。
Define an instance parameter, need add it in __init__ method.You can init an object with construct parameter or set the value later
我的解决方案:Python 3
class Car: name = "Car" def __init__(self,name = None): self.name = name honda=Car("Honda") print("%s name is %s"%(Car.name,honda.name)) toyota=Car() toyota.name="Toyota" print("%s name is %s"%(Car.name,toyota.name))
定义一个可以计算两个数字之和的函数。
定义一个以两个数字作为参数的函数。您可以在函数中计算总和并返回值。
我的解决方案:Python 3
sum = lambda n1,n2 : n1 + n2 # here lambda is use to define little function as sum print(sum(1,2))
定义一个可以将整数转换为字符串并在控制台中打印的函数。
使用str()将数字转换为字符串。
conv = lambda x : str(x) n = conv(10) print(n) print(type(n)) # checks the type of the variable
定义一个函数,该函数可以接收两个字符串形式的整数并计算它们的总和,然后在控制台中打印它。
使用int()将字符串转换为整数。
def printValue(s1,s2): print int(s1) + int(s2) printValue("3","4") #7
定义一个函数,该函数可以接受两个字符串作为输入并将其连接起来,然后在控制台中将其打印出来。
使用+号连接字符串。
我的解决方案:Python 3
sum = lambda s1,s2 : s1 + s2 print(sum("10","45")) # 1045
定义一个函数,该函数可以接受两个字符串作为输入,并在控制台中打印最大长度的字符串。如果两个字符串的长度相同,则该函数应逐行打印所有字符串。
***使用len()函数获取字符串的长度
我的解决方案:Python 3
def printVal(s1,s2): len1 = len(s1) len2 = len(s2) if len1 > len2: print(s1) elif len1 < len2: print(s2) else: print(s1) print(s2) s1,s2=input().split() printVal(s1,s2)
func = lambda a,b: print(max((a,b),key=len)) if len(a)!=len(b) else print(a+'\n'+b)
定义一个可以打印字典的函数,其中键是1到20之间的数字(都包括在内),值是键的平方。
我的解决方案:Python 3
def printDict(): dict={i:i**2 for i in range(1,21)} # Using comprehension method and print(dict) printDict()
定义一个可以生成字典的函数,其中键是1到20之间的数字(都包括在内),值是键的平方。该功能应仅打印键。
def printDict(): d=dict() for i in range(1,21): d[i]=i**2 for k in d.keys(): print k printDict()
定义一个函数,该函数可以生成和打印一个列表,其中值是介于1到20之间的数字的平方(均包括在内)。
def printList(): lst = [i ** 2 for i in range(1, 21)] print(lst) printList()
定义一个函数,该函数可以生成一个列表,其中值是介于1到20之间的数字的平方(均包括在内)。然后,该功能需要打印列表中的前5个元素。
def printList(): lst = [i ** 2 for i in range(1, 21)] for i in range(5): print(lst[i]) printList()
def squares(n): squares_list = [i**2 for i in range(1,n+1)] print(squares_list[0:5]) squares(20)
func = lambda :print([i**2 for i in range(1,21)][:5])
定义一个函数,该函数可以生成一个列表,其中值是介于1到20之间的数字的平方(均包括在内)。然后,该功能需要打印列表中的最后5个元素。
def printList(): lst = [i ** 2 for i in range(1, 21)] for i in range(19,14,-1): print(lst[i]) printList()
def squares(n): squares_list = [i**2 for i in range(1,n+1)] print(squares_list[-5:]) squares(20)
定义一个函数,该函数可以生成一个列表,其中值是介于1到20之间的数字的平方(均包括在内)。然后,该函数需要打印列表中前5个元素以外的所有值。
def printList(): lst = [i ** 2 for i in range(1, 21)] for i in range(5,20): print(lst[i]) printList()
定义一个函数,该函数可以生成和打印一个元组,其中值是介于1到20之间的数字的平方(均包括在内)。
def printTupple(): lst = [i ** 2 for i in range(1, 21)] print(tuple(lst)) printTupple()
def square_of_numbers(): return tuple(i ** 2 for i in range(1, 21)) print(square_of_numbers())
本节中的问题非常容易,所有这些都是对同类型问题的修改,主要集中在使用一些常用的函数与list,dictionary,tupple结合使用。在我的整个解决方案中,我都没有尝试解决问题相反,我试图以一种可以解决的方式解决问题。这将有助于初学者了解如何以不同的方式解决最简单的问题。
对于给定的元组(1,2,3,4,5,6,7,8,9,10),编写一个程序以一行打印前半值,然后以一行打印后半值。
使用[n1:n2]表示法从元组中获取一个切片。
tpl = (1,2,3,4,5,6,7,8,9,10) for i in range(0,5): print(tpl[i],end = ' ') print() for i in range(5,10): print(tpl[i],end = ' ')
或者
tpl = (1,2,3,4,5,6,7,8,9,10) lst1,lst2 = [],[] for i in range(0,5): lst1.append(tpl[i]) for i in range(5,10): lst2.append(tpl[i]) print(lst1) print(lst2)
编写程序以生成并打印另一个在给定元组(1,2,3,4,5,6,7,8,9,10)中其值为偶数的元组。
使用“ for”来迭代元组。使用tuple()从列表中生成一个元组。
tpl = (1,2,3,4,5,6,7,8,9,10) tpl1 = tuple(i for i in tpl if i%2 == 0) print(tpl1)
或者
tpl = (1,2,3,4,5,6,7,8,9,10) tpl1 = tuple(filter(lambda x : x%2==0,tpl)) # Lambda function returns True if found even element. print(tpl1)
编写一个接受字符串作为输入的程序,如果该字符串是“ yes”或“ YES”或“ Yes”,则打印“ Yes”,否则打印“ No”。
使用if语句判断条件。
text = input("Please type something. --> ") if text == "yes" or text == "YES" or text == "Yes": print("Yes") else: print("No")
input = input('Enter string:') output = ''.join(['Yes' if input == 'yes' or input =='YES' or input =='Yes' else 'No' ]) print(str(output))
x = str(input().lower()) if x == 'yes': print('Yes') else: print('No')