Python100题
Python100题
者每天可以尝试3-5个问题,经过这一百道题的练习,要把练习昨晚并且完全懂了,基本上Python就已
经入门了。如果你不是初学者,来检查一下你掌握Python的程度到了哪里!加油冲冲冲!
问题1
问题:
编写一个程序,查找所有此类数字,它们可以被7整除,但不能是5的倍数(在2000和3200之间
(均包括在内))。获得的数字应以逗号分隔的顺序打印在一行上。
提示:
考虑使用范围(#begin,#end)方法。
我的解决方案:Python 3
使用for循环
l=[]
for i in range(2000, 3201):
if (i%7==0) and (i%5!=0):
l.append(str(i))
print ','.join(l)
使用生成器和列表理解
问题2
问题:
编写一个程序,可以计算给定数字的阶乘,结果应以逗号分隔的顺序打印在一行上,假设向程序提
供了以下输入:8然后,输出应为:40320
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
使用While循环
n = int(input()) #input() function takes input as string type
#int() converts it to integer type
fact = 1
i = 1
while i <= n:
fact = fact * i;
i = i + 1
print(fact)
使用For循环
使用Lambda函数
n = int(input())
def shortFact(x): return 1 if x <= 1 else x*shortFact(x-1)
print(shortFact(n))
while True:
try:
num = int(input("Enter a number: "))
break
except ValueError as err:
print(err)
org = num
fact = 1
while num:
fact = num * fact
num = num - 1
print(f'the factorial of {org} is {fact}')
num = int(input())
print(reduce(fun,range(1, num+1), 1))
问题3
问题:
使用给定的整数n,编写程序以生成包含(i,ixi)的字典,该字典为1到n之间的整数(都包括在
内)。然后程序应打印字典。假设向程序提供了以下输入:8\
然后,输出应为:
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。考虑使用dict()
我的解决方案:Python 3:
使用for循环
n = int(input())
ans = {}
for i in range (1,n+1):
ans[i] = i * i
print(ans)
使用字典理解
n = int(input())
ans={i : i*i for i in range(1,n+1)}
print(ans)
# 演进
try:
num = int(input("Enter a number: "))
except ValueError as err:
print(err)
dictio = dict()
for item in range(num+1):
if item == 0:
continue
else:
dictio[item] = item * item
print(dictio)
这些是第一天解决的问题。对于基本的初学者学习者来说,上述问题非常容易。我在解决方案中展示了
一些简单的编码方法。让我们看看第二天如何面对和应对新问题。
问题4
问题:
编写一个程序,该程序从控制台接受一个逗号分隔的数字序列,并生成一个列表和一个包含每个数
字的元组。假设向该程序提供了以下输入:
34,67,55,33,12,98
然后,输出应为:
print(lst)
print(tpl)
# 一行解决
print(tuple(input("Enter a series of numbers separated by a comma
:").split(',')))
问题5
问题:
定义一个至少具有两个方法的类:
getString:从控制台输入获取字符串
printString:以大写字母打印字符串
还请包括简单的测试功能来测试类方法。
提示:
**使用*init**方法构造一些参数
class IOstring():
def get_string(self):
self.s = input()
def print_string(self):
print(self.s.upper())
xx = IOstring()
xx.get_string()
xx.print_string()
问题6
问题:
编写一个程序,根据给定的公式计算并打印该值:
Q = [(2 _ C _ D)/ H]的平方根
以下是C和H的固定值:
C为50。H为30。
D是变量,其值应以逗号分隔的顺序输入到您的程序中,例如,让我们假设以下逗号分隔的输入顺
序被赋予了程序:
100,150,180
该程序的输出应为:
18,22,24
提示:
如果接收到的输出为十进制形式,则应四舍五入至最接近的值(例如,如果接收到的输出为26.0,
则应将其打印为26)。被假定为控制台输入。
C,H = 50,30
def calc(D):
return sqrt((2*C*D)/H)
print(",".join(D))
或者
from math import sqrt
C,H = 50,30
def calc(D):
return sqrt((2*C*D)/H)
D = input().split(',') # 在逗号位置#分裂和设置在列表中
D = [str(round(calc(int(i)))) for i in D] # 使用理解方法#。它按先前的代码
print(",".join(D))
或者
从 数学 进口 SQRT
Ç,ħ = 50,30
def calc(D):
返回 sqrt((2 * C * D)/ H)
或者
C,H = 50,30
def calc(D):
D = int(D)
return str(int(sqrt((2*C*D)/H)))
D = input().split(',')
D = list(map(calc,D)) #在D上应用calc函数并存储为列表
print(",".join(D))
for D in my_list:
Q = ((2*C*D)/H)**(1/2)
x.append(round(Q))
print(','.join(map(str, x)))
问题7
问题:
_编写一个程序,该程序将X,Y两位数字作为输入并生成一个二维数组。数组的第i行和第j列中的
元素值应为i _ j。*
提示:
注意:如果将输入数据提供给问题,则应假定它是以逗号分隔形式的控制台输入。
Python 3
x,y = map(int,input().split(','))
lst = []
for i in range(x):
tmp = []
for j in range(y):
tmp.append(i*j)
lst.append(tmp)
print(lst)
或者
x,y = map(int,input().split(','))
lst = [[i*j for j in range(y)] for i in range(x)]
print(lst)
问题8
问题:
编写一个程序,该程序接受以逗号分隔的单词序列作为输入,并在按字母顺序对单词进行排序后以
逗号分隔的顺序打印这些单词。
假设将以下输入提供给程序:
without,hello,bag,world
然后,输出应为:
bag,hello,without,world
提示:
*如果将输入数据提供给问题,则应假定它是控制台输入。*
我的解决方案:Python 3
def my_func(e):
return e[0]
问题9
问题:
编写一个接受行序列作为输入的程序,并在使句子中的所有字符都大写之后打印行。
假设将以下输入提供给程序:
Hello world
Practice makes perfect
然后,输出应为:
HELLO WORLD
PRACTICE MAKES PERFECT
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
lst = []
while True:
x = input()
if len(x)==0:
break
lst.append(x.upper())
或者
def user_input():
while True:
s = input()
if not s:
return
yield s
问题10
问题
编写一个程序,该程序接受一系列由空格分隔的单词作为输入,并在删除所有重复的单词并将其按
字母数字顺序排序后打印这些单词。
假设将以下输入提供给程序:
hello world and practice makes perfect and hello world again
然后,输出应为:
提示:
***如果将输入数据提供给问题,则应假定它是控制台输入。我们使用set容器自动删除重复的数
据,然后使用sorted()对数据进行排序。
我的解决方案:Python 3
word = input().split()
for i in word:
if word.count(i) > 1: #count函数返回作为参数
word.remove(i) #每次调用仅删除一个元素
word.sort()
print(" ".join(word))
或者
问题11
问题
编写一个程序,该程序接受以逗号分隔的4位二进制数字序列作为输入,然后检查它们是否可被5
整除。被5整除的数字将以逗号分隔的顺序打印。
例子:
0100,0011,1010,1001
然后输出应为:
1010
注意:假设数据是通过控制台输入的。
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
for i in x:
total+=pw * (ord(i) - 48) #ORD()函数返回ASCII值
pw*=2
return total % 5
data = input().split(",") #输入此处,并在','位置分割
lst = []
for i in data:
if check(i) == 0: #如果零发现它是指由零整除并添加到列
lst.append(i)
print(",".join(lst))
或者
data = list(filter(check(data)))#在filter(func,object)函数中,如果通
过'check'函数
print(“,”。join(data)找到True,则从'data'中选取元素。
或者
data = input().split(',')
data = [num for num in data if int(num, 2) % 5 == 0]
print(','.join(data))
问题12
问题:
编写一个程序,查找所有介于1000和3000之间的数字(都包括在内),以使数字的每个数字均为
偶数。获得的数字应以逗号分隔的顺序打印在一行上。
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
lst = []
for i in range(1000,3001):
flag = 1
for j in str(i): #每个整数编号i被转换成字符串
if ord(j)%2 != 0: #ORD返回ASCII值并且j是i
flag = 0
if flag == 1:
lst.append(str(i)) #i作为字符串存储在列表中
print(",".join(lst))
或者
def check(element):
return all(ord(i)%2 == 0 for i in element) #所有返回true如果所有的数字,i是即使
在元件
问题13
问题:
编写一个接受句子并计算字母和数字数量的程序。
假设将以下输入提供给程序:
然后,输出应为:
LETTERS 10
DIGITS 3
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
word = input()
letter,digit = 0,0
for i in word:
if ('a'<=i and i<='z') or ('A'<=i and i<='Z'):
letter+=1
if '0'<=i and i<='9':
digit+=1
或者
word = input()
letter, digit = 0,0
for i in word:
if i.isalpha(): #返回true如果字母表
letter += 1
elif i.isnumeric(): #返回true如果数字
digit += 1
print(f"LETTERS {letter}\n{digits}") #两种解决方案均显示两种不同类型的格式化方法
10-13以上所有问题大多是与字符串有关的问题。解决方案的主要部分包括字符串替换函数和理解方法,
以更短的形式写下代码。
问题14
问题:
编写一个接受句子的程序,并计算大写字母和小写字母的数量。
假设将以下输入提供给程序:
Hello world!
然后,输出应为:
UPPER CASE 1
LOWER CASE 9
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
word = input()
upper,lower = 0,0
for i in word:
if 'a'<=i and i<='z' :
lower+=1
if 'A'<=i and i<='Z':
upper+=1
或者
word = input()
upper,lower = 0,0
for i in word:
lower+=i.islower()
upper+=i.isupper()
或者
问题15
问题:
编写一个程序,以给定的数字作为a的值来计算a + aa + aaa + aaaa的值。
假设将以下输入提供给程序:
9
然后,输出应为:
11106
提示:
*如果将输入数据提供给问题,则应假定它是控制台输入。*
我的解决方案:Python 3
a = input()
total,tmp = 0,str() # 初始化一个整数和空字符串
for i in range(4):
tmp+=a # 串接'a'到'TMP'
total+=int(tmp) # 将字符串类型转换为整数类型
print(total)
或者
a = input()
total = int(a) + int(2*a) + int(3*a) + int(4*a) # N*a=Na, for example a="23",
2*a="2323",3*a="232323"
print(total)
问题16
问题:
使用列表推导对列表中的每个奇数取平方。该列表由逗号分隔的数字序列输入。>假设将以下输入
提供给程序:
1,2,3,4,5,6,7,8,9
然后,输出应为:
1,9,25,49,81
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
我的解决方案:Python 3
seq = input().split(',')
lst = [int(i) for i in seq]
def flt(i): #定义一个函数
return i % 2 != 0
result_l = [str(i * i) for i in filter(flt,lst)]
print(",".join(result_l))
测试用例中有一个错误,并在@dwedigital的帮助下通知并修复了解决方案的问题。我对他表示感谢。
问题17
问题:
编写一个程序,该程序根据来自控制台输入的交易日志来计算银行帐户的净额。事务日志格式如下
所示:
D 100
W 200
D表示存款,W表示提款。
假设将以下输入提供给程序:
D 300
D 300
W 200
D 100
然后,输出应为:
500
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
total = 0
while True:
s = input().split()
if not s: # 如果字符串为空则退出
break
cm,num = map(str,s) # 两个输入以cm和num的形式分布在字符串数据类型中
if cm=='D':
total+=int(num)
if cm=='W':
total-=int(num)
print(total)
lst = []
while True:
x = input()
if len(x)==0:
break
lst.append(x)
balance = 0
for item in lst:
if 'D' in item:
balance += int(item.strip('D '))
if 'W' in item:
balance -= int(item.strip('W '))
print(balance)
问题18
问题:
网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码是否有效。
以下是检查密码的标准:
[az]之间至少1个字母
[0-9]之间至少1个数字
[AZ]之间至少1个字母
[$#@]中的至少1个字符
交易密码的最小长度:6
交易密码的最大长度:12
您的程序应接受逗号分隔的密码序列,并将根据上述条件进行检查。符合条件的密码将被打印,每
个密码之间用逗号分隔。
例子
如果输入以下密码作为程序输入:
ABd1234@1,a F1#,2w3E*,2We3345
然后,程序的输出应为:
ABd1234@1
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
def is_up(x):
for i in x:
if 'A'<= i and i<='Z':
return True
return False
def is_num(x):
for i in x:
if '0'<=i and i<='9':
return True
return False
def is_other(x):
for i in x:
if i=='$' or i=='#' or i=='@':
return True
return False
s = input().split(',')
lst = []
for i in s:
length = len(i)
if 6 <= length and length <= 12 and is_low(i) and is_up(i) and is_num(i) and
is_other(i):
lst.append(i)
print(",".join(lst))
或者
def check(x):
cnt = (6<=len(x) and len(x)<=12)
for i in x:
if i.isupper():
cnt+=1
break
for i in x:
if i.islower():
cnt+=1
break
for i in x:
if i.isnumeric():
cnt+=1
break
for i in x:
if i=='@' or i=='#'or i=='$':
cnt+=1
break
return cnt == 5
s = input().split(',')
lst = filter(check,s)
print(",".join(lst))
或者
import re
s = input().split(',')
lst = []
for i in s:
cnt = 0
cnt+=(6<=len(i) and len(i)<=12)
cnt+=bool(re.search("[a-z]",i))
cnt+=bool(re.search("[A-Z]",i))
cnt+=bool(re.search("[0-9]",i))
cnt+=bool(re.search("[@#$]",i))
lst.append(i)
print(",".join(lst))
问题19
问题:
您需要编写一个程序来按升序对(名称,年龄,分数)元组进行排序,其中名称是字符串,年龄和
分数是数字。元组由控制台输入。排序标准是:
1:根据名称排序
2:然后根据年龄排序
3:然后按分数排序
优先级是名称>年龄>得分。
如果给出以下元组作为程序的输入:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
*然后,程序的输出应为:*
[('John', '20', '90'), ('Jony', '17', '91'), ('Jony', '17', '93'), ('Json', '21',
'85'), ('Tom', '19', '80')]
提示:
如果将输入数据提供给问题,则应假定它是控制台输入。我们使用itemgetter启用多个排序键。
lst = []
while True:
s = input().split(',')
if not s[0]:
break
lst.append(tuple(s))
在出现上述问题之前,我什至不知道re(正则表达式)模块及其使用。我什至不知道如何按多个键进行
排序。为了以不同的方式解决这些问题,我不得不探索和学习那些语法。re模块中有很多有趣的内容,
尽管我很难理解其中的许多内容。
问题20
问题:
用生成器定义一个类,该生成器可以迭代在给定范围0和n之间可以被7整除的数字。
假设将以下输入提供给程序:
然后,输出应为:
0
7
14
提示:
考虑使用类,功能和理解力。
class MyGen():
def by_seven(self, n):
for i in range(0, int(n/7) + 1):
yield i * 7
class Divisible:
divisible = Divisible()
generator = divisible.by_seven(int(input("Please insert a number. --> ")))
for number in generator:
print(number)
问题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])
问题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.
或者
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()
并添加您自己的功能的文档
提示:
我的解决方案: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
问题:
定义一个类,该类具有一个类参数并且具有相同的实例参数。
提示:
我的解决方案:Python 3
class Car:
name = "Car"
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
问题27
问题:
定义一个可以将整数转换为字符串并在控制台中打印的函数。
提示:
使用str()将数字转换为字符串。
问题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)
第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)
第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语句判断条件。
x = str(input().lower())
if x == 'yes':
print('Yes')
else:
print('No')
第41题
问题:
编写一个程序,该程序可以map()创建一个列表,该列表的元素是[1,2,3,4,5,6,7,8,9,10]中的元
素的平方。
提示:
使用map()生成列表。使用lambda定义匿名函数。
li = [1,2,3,4,5,6,7,8,9,10]
squaredNumbers = map(lambda x: x**2, li) # returns map type object data
print(list(squaredNumbers)) # converting the object into list
def sqrs(item):
return item ** 2
第42题
问题:
编写一个程序,该程序可以map()和filter()组成一个列表,该列表的元素为
[1,2,3,4,5,6,7,8,9,10]中的偶数平方。
提示:
使用map()生成列表。使用filter()过滤列表元素。使用lambda定义匿名函数。
def even(x):
return x%2==0
def squer(x):
return x*x
li = [1,2,3,4,5,6,7,8,9,10]
li = map(squer,filter(even,li)) # first filters number by even number and the
apply map() on the resultant elements
print(list(li))
def even(item):
if item % 2 == 0:
return item**2
第43题
问题:
编写一个程序,该程序可以filter()创建一个列表,该列表的元素为1到20之间的偶数(均包括
在内)。
提示:
使用filter()过滤列表中的元素,使用lambda定义匿名函数。
def even(x):
return x%2==0
第44题
问题:
编写一个程序,该程序可以map()创建一个列表,该列表的元素为1到20之间的数字平方(均包
括在内)。
提示:
使用map()生成一个列表。使用lambda定义匿名函数。
def sqr(x):
return x*x
第45题
问题:
定义一个名为American的类,该类具有一个称为printNationality的静态方法。
class American():
@staticmethod
def printNationality():
print("I am American")
american = American()
american.printNationality() # this will not run if @staticmethod does not
decorates the function.
# Because the class has no instance.
第46题
问题:
定义一个名为American的类及其子类NewYorker。
提示:
使用类Subclass(ParentClass)定义一个子类。*
class American():
pass
class NewYorker(American):
pass
american = American()
newyorker = NewYorker()
print(american)
print(newyorker)
第47题
问题
定义一个名为Circle的类,该类可以由半径构造。Circle类具有一种可以计算面积的方法。
提示
使用def methodName(self)定义一个方法。
class Circle():
def __init__(self,r):
self.radius = r
def area(self):
return 3.1416*(self.radius**2)
circle = Circle(5)
print(circle.area())
第48题
问题
定义一个名为Rectangle的类,该类可以通过长度和宽度来构造。Rectangle类具有可以计算面积
的方法。
提示
使用def methodName(self)定义一个方法。
class Rectangle():
def __init__(self,l,w):
self.length = l
self.width = w
def area(self):
return self.length*self.width
rect = Rectangle(2,4)
print(rect.area())
第49题
问题
定义一个名为Shape的类及其子类Square。Square类具有一个init函数,该函数以长度作为参
数。这两个类都有一个Area函数,该函数可以打印Shape的区域默认为0的形状的区域。
提示
要覆盖超类中的方法,我们可以在超类中定义一个具有相同名称的方法。
class Shape():
def __init__(self):
pass
def area(self):
return 0
class Square(Shape):
def __init__(self,length = 0):
Shape.__init__(self)
self.length = length
def area(self):
return self.length*self.length
Asqr = Square(5)
print(Asqr.area()) # prints 25 as given argument
第50题
问题
请引发RuntimeError异常。
提示
U使用raise()引发异常。
解决方案:
结论
嗯,上述问题似乎主要集中在面向对象程序设计的基本概念和实现上。由于这些概念并不是要解决任何
功能性问题,而是设计结构,因此,这两个代码在实现部分都非常相似。
第51题
问题
编写一个函数以计算5/0并使用try / except捕获异常。
提示
使用try / except捕获异常。
def divide():
return 5/0
try:
divide()
except ZeroDivisionError as ze:
print("Why on earth you are dividing a number by ZERO!!")
except:
print("Any other exception")
第52题
问题
定义一个自定义异常类,该类将字符串消息作为属性。
提示
要定义自定义异常,我们需要定义一个从Exception继承的类。
class CustomException(Exception):
"""Exception raised for custom purpose
Attributes:
message -- explanation of the error
"""
num = int(input())
try:
if num < 10:
raise CustomException("Input is less than 10")
elif num > 10:
raise CustomException("Input is grater than 10")
except CustomException as ce:
print("The error raised: " + ce.message)
第53题
问题
假设我们有一些“ [email protected] ”格式的电子邮件地址,请编写程序以打印给
定电子邮件地址的用户名。用户名和公司名都仅由字母组成。
示例:如果将以下电子邮件地址作为该程序的输入:
然后,程序的输出应为:
john
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
使用\ w匹配字母。
email = "[email protected]"
email = email.split('@')
print(email[0])
或者
import re
第54题
问题
假设我们有一些“ [email protected] ”格式的电子邮件地址,请编写程序以打印给
定电子邮件地址的公司名称。用户名和公司名都仅由字母组成。
示例:如果将以下电子邮件地址作为该程序的输入:
然后,程序的输出应为:
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
使用\ w匹配字母。
import re
第55题
问题
编写一个程序,该程序接受由空格分隔的单词序列作为输入,以仅打印由数字组成的单词。
示例:如果给出以下单词作为程序输入:
然后,程序的输出应为:
['2', '3']
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
使用re.findall()使用正则表达式查找所有子字符串。
import re
email = input()
pattern = "\d+"
ans = re.findall(pattern,email)
print(ans)
或者
email = input().split()
ans = []
for word in email:
if word.isdigit(): # can also use isnumeric() / isdecimal() function
instead
ans.append(word)
print(ans)
或者
email = input().split()
ans = [word for word in email if word.isdigit()] # using list comprehension
method
print(ans)
第56题
问题
打印一个unicode字符串“ hello world”。
第57题
问题
编写程序以读取ASCII字符串并将其转换为utf-8编码的unicode字符串。
提示
使用unicode()/ encode()函数进行转换。
s = input()
u = s.encode('utf-8')
print(u)
第58题
问题
编写特殊注释以指示Python源代码文件位于unicode中。
提示
使用unicode()函数进行转换。
解决方案:
第59题
问题
编写一个程序,以控制台输入给定的n输入来计算1/2 + 2/3 + 3/4 + ... + n / n + 1(n> 0)。
示例:如果将以下n作为程序的输入:
然后,程序的输出应为:
3.55
如果将输入数据提供给问题,则应假定它是控制台输入。
n = int(input())
sum = 0
for i in range(1, n+1):
sum+= i/(i+1)
print(round(sum, 2)) # rounded to 2 decimal point
def question_59(n):
print(round(sum(map(lambda x: x/(x+1), range(1, n+1))), 2))
question_59(5)
第60题
问题
编写程序进行计算:
通过控制台输入给定的n(n> 0)。
示例:如果将以下n作为程序的输入:
然后,程序的输出应为:
500
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
我们可以在Python中定义递归函数。
def f(n):
if n == 0:
return 0
return f(n-1) + 100
n = int(input())
print(f(n))
n = int(input())
f = lambda x: f(x-1)+100 if x > 0 else 0
print(f(n))
第61题
问题
斐波那契数列是根据以下公式计算的:
f(n)=0 if n=0
f(n)=1 if n=1
f(n)=f(n-1)+f(n-2) if n>1
请编写一个程序,以控制台输入给定的n个输入来计算f(n)的值。
示例:如果将以下n作为程序的输入:
然后,程序的输出应为:
13
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
我们可以在Python中定义递归函数。
def f(n):
if n < 2:
return n
return f(n-1) + f(n-2)
n = int(input())
print(f(n))
n = int(input())
f = lambda x: 0 if x == 0 else 1 if x == 1 else f(x-1)+f(x-2)
print(','.join([str(f(x)) for x in range(0, n+1)]))
第62题
问题
斐波那契数列是根据以下公式计算的:
f(n)=0 if n=0
f(n)=1 if n=1
f(n)=f(n-1)+f(n-2) if n>1
请编写一个程序,以控制台输入给定的n个输入来计算f(n)的值。
示例:如果将以下n作为程序的输入:
然后,程序的输出应为:
0,1,1,2,3,5,8,13
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
我们可以在Python中定义递归函数。使用列表推导从现有列表生成列表。使用string.join()连
接字符串列表。
def f(n):
if n < 2:
fibo[n] = n
return fibo[n]
fibo[n] = f(n-1) + f(n-2)
return fibo[n]
n = int(input())
fibo = [0]*(n+1) # initialize a list of size (n+1)
f(n) # call once and it will set value to fibo[0-n]
fibo = [str(i) for i in fibo] # converting integer data to string type
ans = ",".join(fibo) # joining all string element of fibo with ',' character
print(ans)
def fibo(n):
if n < 2: return n
return fibo(n-1)+fibo(n-2)
def print_fiblist(n):
fib_list = [(str(fibo(i))) for i in range(0, n+1)]
return print(",".join(fib_list))
n = int(input())
print_fiblist(n)
def question_62(n):
if n == 0:
return [0]
if n == 1:
return [0, 1]
sequence = [0, 1]
a, b = 0, 1
for x in range(2, n+1):
c = a + b
sequence.append(c)
a = b
b = c
return sequence
print(question_62(10))
第63题
问题
当控制台输入n时,请使用生成器编写一个程序,以逗号分隔的形式打印0到n之间的偶数。
示例:如果将以下n作为程序的输入:
10
然后,程序的输出应为:
0,2,4,6,8,10
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
使用yield来生成生成器中的下一个值。
解决方案:
def EvenGenerator(n):
i=0
while i<=n:
if i%2==0:
yield i
i+=1
n=int(raw_input())
values = []
for i in EvenGenerator(n):
values.append(str(i))
print ",".join(values)
或者
# Solution by: StartZer0
n = int(input())
第64题
问题
当控制台输入n时,请使用生成器编写一个程序,以逗号分隔的形式打印可以在0和n之间被5和7整
除的数字。
示例:如果将以下n作为程序的输入:
100
然后,程序的输出应为:
0,35,70
如果将输入数据提供给问题,则应假定它是控制台输入。
提示
使用yield来生成生成器中的下一个值。
def generate(n):
for i in range(n+1):
if i % 35 == 0: # 5*7 = 35, if a number is divisible by a & b then it
is also divisible by a*b
yield i
n = int(input())
resp = [str(i) for i in generate(n)]
print(",".join(resp))
第65题
问题
请编写assert语句以验证列表[2,4,6,8]中的每个数字都是偶数。
提示
使用“断言表达式”进行断言。
data = [2,4,5,6]
for i in data:
assert i%2 == 0, "{} is not an even number".format(i)
第66题
问题
请编写一个从控制台接受基本数学表达式的程序,并打印评估结果。
示例:如果将以下n作为程序的输入:
35 + 3
然后,程序的输出应为:
38
提示
使用eval()评估表达式。
expression = input()
ans = eval(expression)
print(ans)
第67题
问题
请编写一个二进制搜索功能,该功能可以搜索已排序列表中的项目。该函数应返回列表中要搜索的
元素的索引。
提示
使用if / elif处理条件。
lst = [1,3,5,7,]
print(binary_search(lst, 9))
Array = [1,5,8,10,12,13,55,66,73,78,82,85,88,99]
print('The Value Found at Index:',binary_search_Ascending(Array, 82))
第68题
问题
请使用Python模块生成一个随机浮点,其值在10到100之间。
提示
使用random.random()在[0,1]中生成随机浮点数。
import random
rand_num = random.uniform(10,100)
print(rand_num)
第69题
问题
请使用Python模块生成一个随机浮点,其值在5到95之间。
提示
使用random.random()在[0,1]中生成随机浮点数。
import random
rand_num = random.uniform(5,95)
print(rand_num)
第70题
问题
请使用随机模块和列表推导编写一个程序,以输出介于0到10之间(含0和10)的随机偶数。
提示
使用random.choice()对列表中的随机元素进行处理。
import random
resp = [i for i in range(0,11,2)]
print(random.choice(resp))
第71题
问题
请编写一个程序以输出一个随机数,使用随机模块和列表推导,该随机数可被5和7整除,介于10
和150之间(包括10和150)。
提示
使用random.choice()对列表中的随机元素进行处理。
import random
resp = [i for i in range(10,151) if i % 35 == 0 ]
print(random.choice(resp))
第72题
问题
请编写程序以生成包含5个随机数(介于100和200之间,包括100和200)的列表。
提示
使用random.sample()生成随机值列表。
import random
resp = random.sample(range(100,201),5)
print(resp)
第73题
问题
请编写一个程序以随机生成一个列表,该列表包含100至200之间(含两端)的5个偶数。
提示
使用random.sample()生成随机值列表。
import random
resp = random.sample(range(100,201,2),5)
print(resp)
第74题
问题
请编写一个程序以随机生成一个包含5个数字的列表,这些数字可以被5和7整除,且介于1和1000
之间(含1和1000)。
提示
使用random.sample()生成随机值列表。
import random
lst = [i for i in range(1,1001) if i%35 == 0]
resp = random.sample(lst,5)
print(resp)
第75题
问题
请编写一个程序以随机打印7到15之间的一个整数。
提示
使用random.randrange()到给定范围内的随机整数。
解决方案:
import random
print random.randrange(7,16)
第76题
问题
请编写一个程序来压缩和解压缩字符串“ hello world!hello world!hello world!hello
world!”。
提示
使用zlib.compress()和zlib.decompress()压缩和解压缩字符串。
解决方案:
import zlib
s = 'hello world!hello world!hello world!hello world!'
t = zlib.compress(s)
print t
print zlib.decompress(t)
第77题
问题
请编写程序以打印“ 1 + 1”的执行运行时间100次。
提示
使用timeit()函数来测量运行时间。
import datetime
before = datetime.datetime.now()
for i in range(100):
x = 1 + 1
after = datetime.datetime.now()
execution_time = after - before
print(execution_time.microseconds)
或者
import time
before = time.time()
for i in range(100):
x = 1 + 1
after = time.time()
execution_time = after - before
print(execution_time)
第78题
问题
请编写一个程序以随机播放并打印列表[3,6,7,8]。
提示
使用shuffle()函数可以随机播放列表。
import random
lst = [3,6,7,8]
random.shuffle(lst)
print(lst)
或者
import random
第79题
问题
请编写一个程序以生成所有句子,其中主语位于[“ I”,“ You”]中,动词位于[“ Play”,“ Love”]
中,而宾语位于[“ Hockey”,“ Football”]中。
提示
使用list [index]表示法从列表中获取元素。
subjects=["I", "You"]
verbs=["Play", "Love"]
objects=["Hockey","Football"]
import itertools
subject = ["I", "You"]
verb = ["Play", "Love"]
objects = ["Hockey","Football"]
def question_79():
subject = ["I", "You"]
verb = ["Play", "Love"]
object = ["Hockey", "Football"]
prod = [p for p in product(range(2), repeat=3)]
for combination in prod:
print(f'{subject[combination[0]]} {verb[combination[1]]}
{object[combination[2]]}')
question_79()
第80题
问题
请删除[5,6,77,45,22,12,24]中的偶数后编写程序以打印列表。
提示
使用列表推导从列表中删除一堆元素。
def isEven(n):
return n%2!=0
li = [5,6,77,45,22,12,24]
lst = list(filter(isEven,li))
print(lst)
或者
li = [5,6,77,45,22,12,24]
lst = list(filter(lambda n:n%2!=0,li))
print(lst)
第81题
问题
通过使用列表理解,请编写一个程序以删除[12,24,35,70,88,120,155]中被5和7整除的数字,然后
打印列表。
提示
使用列表推导从列表中删除一堆元素。
li = [12,24,35,70,88,120,155]
li = [x for x in li if x % 35!=0]
print(li)
第82题
问题
通过使用列表理解,请编写一个程序以删除[12,24,35,70,88,120,155]中的第0、2、4、6个数字,
然后打印列表。
提示
使用列表推导从列表中删除一堆元素。使用enumerate()获取(索引,值)元组。
li = [12,24,35,70,88,120,155]
li = [li[i] for i in range(len(li)) if i%2 != 0 and i <= 6]
print(li)
orig_lst = [12,24,35,70,88,120,155]
indices = [0, 2, 4, 6]
第83题
问题
通过使用列表理解,请编写一个程序以删除[12,24,35,70,88,120,155]中的第2至第4个数字,然后
打印列表。
提示
***使用列表推导从列表中删除一堆元素。使用enumerate()获取(索引,值)元组。
#to be written
li = [12,24,35,70,88,120,155]
li = [li[i] for i in range(len(li)) if i < 3 or i > 4]
print(li)
orig_list = [12,24,35,70,88,120,155]
new_list = [i for (j, i) in enumerate(orig_list) if j not in range(1,4)]
print(new_list)
lst = [12,24,35,70,88,120,155]
print([i for i in lst if lst.index(i) not in range(2,5)])
第84题
问题
通过使用列表理解,请编写一个程序,生成一个3 * 5 * 8 3D数组,每个元素为0。
提示
使用列表推导来创建数组。
解决方案:
array = [[ [0 for col in range(8)] for col in range(5)] for row in range(3)]
print array
第85题
问题
通过使用列表理解,请编写一个程序来删除[12,24,35,70,88,120,155]中的第0、4、5个数字,然后
打印列表。
提示
使用列表推导从列表中删除一堆元素,使用enumerate()获取(索引,值)元组。
li = [12,24,35,70,88,120,155]
li = [li[i] for i in range(len(li)) if i not in (0,4,5)]
print(li)
第86题
问题
通过使用列表理解,请在删除[12,24,35,24,88,120,155]中的值24后编写程序以打印列表。
提示
使用列表的remove方法删除一个值。
li = [12,24,35,24,88,120,155]
li.remove(24) # this will remove only the first occurrence of 24
print(li)
第87题
问题
用两个给定的列表[1,3,6,78,35,55]和[12,24,35,24,88,120,155],编写一个程序来制作一个列表,
其元素是上述给定列表的交集。
提示
使用set()和“&=”进行交集操作。
list1 = [1,3,6,78,35,55]
list2 = [12,24,35,24,88,120,155]
set1= set(list1)
set2= set(list2)
intersection = set1 & set2
print(intersection)
或者
list1 = [1,3,6,78,35,55]
list2 = [12,24,35,24,88,120,155]
set1= set(list1)
set2= set(list2)
intersection = set.intersection(set1,set2)
print(intersection)
第88题
问题
使用给定的列表[12,24,35,24,88,120,155,88,120,155],编写一个程序,在删除所有保留原始顺序
的重复值之后,打印此列表。
提示
使用set()存储许多值,不能重复。
li = [12,24,35,24,88,120,155,88,120,155]
for i in li:
if li.count(i) > 1:
li.remove(i)
print(li)
或者
def removeDuplicate( li ):
seen = {} # dictionary
for item in li:
if item not in seen:
seen[item] = True
yield item
li = [12, 24, 35, 24, 88, 120, 155, 88, 120, 155]
ans = list(removeDuplicate(li))
print(ans)
第89题
问题
定义一个类Person及其两个子类:Male和Female。所有类都有一个方法“ getGender”,可以为
“男”类打印“男”,为“女”打印“女”。
提示
使用Subclass(Parentclass)定义子类。
解决方案:
class Person(object):
def getGender( self ):
return "Unknown"
aMale = Male()
aFemale= Female()
print aMale.getGender()
print aFemale.getGender()
class Person(object):
def __init__(self):
self.gender = "unknown"
def getGender(self):
print(self.gender)
class Male(Person):
def __init__(self):
self.gender = "Male"
class Female(Person):
def __init__(self):
self.gender = "Female"
sharon = Female()
doug = Male()
sharon.getGender()
doug.getGender()
第90题
问题
请编写一个程序,该程序对控制台输入的字符串中的每个字符的数量进行计数和打印。
示例:如果将以下字符串作为程序的输入给出:
abcdefgabc
然后,程序的输出应为:
a,2
c,2
b,2
e,1
d,1
g,1
f,1
提示
使用dict来存储键/值对。使用dict.get()方法查找具有默认值的键。
import string
s = input()
for letter in string.ascii_lowercase:
cnt = s.count(letter)
if cnt > 0:
print("{},{}".format(letter,cnt))
或者
s = input()
for letter in range(ord('a'),ord('z')+1): # ord() gets the ascii value of a
char
letter = chr(letter) # chr() gets the char of an ascii
value
cnt = s.count(letter)
if cnt > 0:
print("{},{}".format(letter,cnt))
s = 'abcdefgabc'
for i in sorted(set(s)):
print(f'{i}, {s.count(i)}')
def character_counter(text):
characters_list = list(text)
char_count = {}
for x in characters_list:
if x in char_count.keys():
char_count[x] += 1
else:
char_count[x] = 1
return char_count
def dict_viewer(dictionary):
for x, y in dictionary.items():
print(f"{x},{y}")
第91题
问题
请编写一个程序,该程序从控制台接收一个字符串,然后以相反的顺序打印它。
示例:如果以下字符串作为程序输入:*
然后,程序的输出应为:
提示
使用list [::-1]以相反的顺序迭代列表。
s = input()
s = ''.join(reversed(s))
print(s)
第92题
问题
请编写一个程序,该程序从控制台接受一个字符串,并打印具有偶数索引的字符。
示例:如果将以下字符串作为程序的输入给出:
H1e2l3l4o5w6o7r8l9d
然后,程序的输出应为:
Helloworld
提示
使用list [:: 2]通过步骤2迭代列表。
s = "H1e2l3l4o5w6o7r8l9d"
s = [ s[i] for i in range(len(s)) if i%2 ==0 ]
print(''.join(s))
或者
s = "H1e2l3l4o5w6o7r8l9d"
ns =''
for i in range(len(s)):
if i % 2 == 0:
ns+=s[i]
print(ns)
第93题
问题
请编写一个打印所有[1,2,3]排列的程序
提示
使用itertools.permutations()获取列表的排列。
解决方案:
import itertools
print list(itertools.permutations([1,2,3]))
def permuation_generator(iterable):
p = permutations(iterable)
for i in p:
print(i)
x = [1,2,3]
permuation_generator(x)
第94题
问题
编写一个程序解决经典的中国古代难题:我们在农场的鸡和兔中数出35头和94腿。我们有多少只
兔子和几只鸡?
提示
使用for循环迭代所有可能的解决方案。
解决方案:
def solve(numheads,numlegs):
ns='No solutions!'
for i in range(numheads+1):
j=numheads-i
if 2*i+4*j==numlegs:
return i,j
return ns,ns
numheads = 35
numlegs = 94
solutions=solve(numheads,numlegs)
print solutions
import itertools
def animal_counter(lst):
chickens = 0
rabbits = 0
for i in lst:
if i == 2:
chickens += 1
elif i == 4:
rabbits += 1
print(f"Number of chickens is {chickens}\nNumber of rabbits is {rabbits}")
第95题
问题
根据您在大学运动日的成绩单,您需要找到亚军得分。您会得到分数。将它们存储在列表中并找到
亚军的得分。
如果给出以下字符串作为程序的输入:
5
2 3 6 6 5
然后,程序的输出应为:
5
提示
使分数唯一,然后找到第二名
n = int(input())
arr = map(int, input().split())
arr = list(set(arr))
arr.sort()
print(arr[-2])
while True:
L.append(num)
num = int(input("Enter another: "))
if num == 0:
break
L1 = list(set(L[:]))
L2 = sorted(L1)
print(L2)
num = int(input())
scores = list(map(int, input().split(' ')))
winner = max(scores)
lst = []
if len(scores) != num:
print('length of score is greater than input given')
else:
for score in scores:
if winner > score:
lst.append(score)
runnerup = max(lst)
print(runnerup)
第96题
问题
给您一个字符串S和宽度W。您的任务是将字符串包装成一段宽度。
如果给出以下字符串作为程序的输入:
ABCDEFGHIJKLIMNOQRSTUVWXYZ
4
然后,程序的输出应为:
ABCD
EFGH
IJKL
IMNO
QRST
UVWX
YZ
提示
使用textwrap模块的包装功能
import textwrap
if __name__ == '__main__':
string, max_width = input(), int(input())
result = wrap(string, max_width)
print(result)
import textwrap
string = input()
width = int(input())
print(textwrap.fill(string,width))
第97题
问题
您将得到一个整数N。您的任务是打印一个大小为N的字母rangoli。(Rangoli是一种基于图案创
建的印度民间艺术形式。)
字母rangoli的不同大小如下所示:
#size 3
----c----
--c-b-c--
c-b-a-b-c
--c-b-c--
----c----
#size 5
--------e--------
------e-d-e------
----e-d-c-d-e----
--e-d-c-b-c-d-e--
e-d-c-b-a-b-c-d-e
--e-d-c-b-c-d-e--
----e-d-c-d-e----
------e-d-e------
--------e--------
提示
首先以给定的方式打印一半的Rangoli,并将每行保存在列表中。然后以相反的顺序打印列表以获
取其余信息。
import string
def print_rangoli(size):
n = size
alph = string.ascii_lowercase
width = 4 * n - 3
ans = []
for i in range(n):
left = '-'.join(alph[n - i - 1:n])
mid = left[-1:0:-1] + left
final = mid.center(width, '-')
ans.append(final)
if len(ans) > 1:
for i in ans[n - 2::-1]:
ans.append(i)
ans = '\n'.join(ans)
print(ans)
if __name__ == '__main__':
n = int(input())
print_rangoli(n)
def rangoli(n):
# your code goes here
l1=list(map(chr,range(97,123)))
x=l1[n-1::-1]+l1[1:n]
mid=len('-'.join(x))
for i in range(1,n):
print('-'.join(l1[n-1:n-i:-1]+l1[n-i:n]).center(mid,'-'))
for i in range(n,0,-1):
print('-'.join(l1[n-1:n-i:-1]+l1[n-i:n]).center(mid,'-'))
rangoli(5)
第98题
问题
您有个约会。您的任务是查找当天的星期几。
输入
一行输入,分别包含以MM DD YYYY格式分隔的月,日和年。
08 05 2015
输出
用大写字母输出正确的日期。
WEDNESDAY
提示
使用日历模块的工作日功能
解决方案:
import calendar
第99题
问题
给定2组整数M和N,按升序打印它们的对称差。术语“对称差”表示存在于M或N中但不存在于两者
中的那些值。
输入
输入的第一行包含一个整数M,第二行包含M个空格分隔的整数,第三行包含一个整数N,第四行
包含N个空格分隔的整数。
4
2 4 5 9
4
2 4 11 12
输出
以升序输出对称差整数,每行一个。
5
9
11
12
提示
使用'^'进行对称差运算。
解决方案:
if __name__ == '__main__':
n = int(input())
set1 = set(map(int,input().split()))
m = int(input())
set2 = set(map(int, input().split()))
第100题
问题
给你的话。有些话可能会重复。对于每个单词,输出其出现次数。输出顺序应与单词出现的输入顺
序相对应。请参阅样本输入/输出以进行澄清。
如果给出以下字符串作为程序的输入:
4
bcdef
abcdefg
bcde
bcdef
然后,程序的输出应为:
3
2 1 1
提示
列出列表以获取输入顺序,并创建字典以计算单词频率
我的解决方案:Python 3
n = int(input())
word_list = []
word_dict = {}
for i in range(n):
word = input()
if word not in word_dict:
word_list.append(word)
word_dict[word] = word_dict.get(word, 0) + 1
print(len(word_list))
for word in word_list:
print(word_dict[word], end=' ')
第101题
问题
给您一个字符串,您的任务是计算字符串字母的频率并以频率降序打印字母。
如果给出以下字符串作为程序的输入:
aabbbccde
然后,程序的输出应为:
b 3
a 2
c 2
d 1
e 1
提示
用字典计数频率并按字典项目中的值排序
我的解决方案:Python 3
word = input()
dct = {}
for i in word:
dct[i] = dct.get(i,0) + 1
X = input()
my_set = set(X)
arr = []
for item in my_set:
arr.append([item,X.count(item)])
tmp = sorted(arr,key = lambda x: (-x[1],x[0]))
for i in tmp:
print(i[0]+' '+str(i[1]))
第102题
问题
编写一个接受字符串并计算数字和字母数的Python程序。
输入
Hello321Bye360
输出
Digit - 6
Letter - 8
提示
使用isdigit()和isalpha()函数
解决方案:
word = input()
digit,letter = 0,0
for char in word:
digit+=char.isdigit()
letter+=char.isalpha()
print('Digit -',digit)
print('Letter -',letter)
第103题
问题
给定数N.使用递归从1到N求和
输入
输出
15
提示
进行递归运算以求和
解决方案:
def rec(n):
if n == 0:
return n
return rec(n-1) + n
n = int(input())
sum = rec(n)
print(sum)
def summer(counter, n, current):
if n == 0:
return 0
if counter == n:
return current+n
else:
current = current + counter
counter += 1
return summer(counter, n, current)
N = int(input("> "))
print(summer(1, N, 0))