花了一周的时间,整理了100道Python的练习题,如果你是一位初学者,那么这一份练习题将会给你带来极大的帮助,如果你能够完全独立的完成这份练习题,你已经入门的Python了,练习题涵盖Python基础的大部分内容,将分为五篇文章发出来,pdf版本可以在下方链接领取到。第二天21-40题
就不多bb了,直接上干货!
问题21
问题:
机器人从原始点(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)))
问题22
问题:
编写一个程序来计算输入中单词的频率。在按字母数字顺序对键进行排序后,应输出输出。
假设将以下输入提供给程序:
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]))
问题23
问题:
编写一种可以计算数字平方值的方法
n=int(input())
print(n**2)
问题24
问题:
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__)
问题25
问题:
定义一个类,该类具有一个类参数并且具有相同的实例参数。
提示:
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))
问题26
问题:
定义一个可以计算两个数字之和的函数。
提示:
定义一个以两个数字作为参数的函数。您可以在函数中计算总和并返回值。
我的解决方案:Python 3
sum = lambda n1,n2 : n1 + n2 # here lambda is use to define little function as sum
print(sum(1,2))
问题27
问题:
定义一个可以将整数转换为字符串并在控制台中打印的函数。
提示:
使用str()将数字转换为字符串。
conv = lambda x : str(x)
n = conv(10)
print(n)
print(type(n)) # checks the type of the variable
问题28
问题:
定义一个函数,该函数可以接收两个字符串形式的整数并计算它们的总和,然后在控制台中打印它。
提示:
使用int()将字符串转换为整数。
def printValue(s1,s2):
print int(s1) + int(s2)
printValue("3","4") #7
问题29
问题:
定义一个函数,该函数可以接受两个字符串作为输入并将其连接起来,然后在控制台中将其打印出来。
提示:
使用+号连接字符串。
我的解决方案:Python 3
sum = lambda s1,s2 : s1 + s2
print(sum("10","45")) # 1045
问题30
问题:
定义一个函数,该函数可以接受两个字符串作为输入,并在控制台中打印最大长度的字符串。如果两个字符串的长度相同,则该函数应逐行打印所有字符串。
提示:
***使用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)
第31题
问题:
定义一个可以打印字典的函数,其中键是1到20之间的数字(都包括在内),值是键的平方。
我的解决方案:Python 3
def printDict():
dict={i:i**2 for i in range(1,21)} # Using comprehension method and
print(dict)
printDict()
第32题
问题:
定义一个可以生成字典的函数,其中键是1到20之间的数字(都包括在内),值是键的平方。该功能应仅打印键。
def printDict():
d=dict()
for i in range(1,21):
d[i]=i**2
for k in d.keys():
print k
printDict()
第33题
问题:
定义一个函数,该函数可以生成和打印一个列表,其中值是介于1到20之间的数字的平方(均包括在内)。
def printList():
lst = [i ** 2 for i in range(1, 21)]
print(lst)
printList()
第34题
问题:
定义一个函数,该函数可以生成一个列表,其中值是介于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])
第35题
问题:
定义一个函数,该函数可以生成一个列表,其中值是介于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)
第36题
问题:
定义一个函数,该函数可以生成一个列表,其中值是介于1到20之间的数字的平方(均包括在内)。然后,该函数需要打印列表中前5个元素以外的所有值。
def printList():
lst = [i ** 2 for i in range(1, 21)]
for i in range(5,20):
print(lst[i])
printList()
第37题
问题:
定义一个函数,该函数可以生成和打印一个元组,其中值是介于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结合使用。在我的整个解决方案中,我都没有尝试解决问题相反,我试图以一种可以解决的方式解决问题。这将有助于初学者了解如何以不同的方式解决最简单的问题。
第38题
问题:
对于给定的元组(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)
第39题
问题:
编写程序以生成并打印另一个在给定元组(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)
第40题
问题:
编写一个接受字符串作为输入的程序,如果该字符串是“ 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')