Python教程

Python学习必备100道练习题-day2(21-40)

本文主要是介绍Python学习必备100道练习题-day2(21-40),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

花了一周的时间,整理了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了,直接上干货!

问题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')

这篇关于Python学习必备100道练习题-day2(21-40)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!