python练习2

1、编写一个程序,查找所有此类数字,它们可以被7整除,但不能是5的倍数(在2000和3200之间(均包括在内))。获得的数字应以逗号分隔的顺序打印在一行上。
s=[]
for i in range(2000,3201):
    if (i%7==0) and (i%5!=0):
        s.append(str(i))
print(','.join(s))

print(*(i for i in range(2000,3201) if (i%7==0) and (i%5!=0)),sep=',')
2、编写一个程序,可以计算给定数字的阶乘,结果应以逗号分隔的顺序打印在一行上,假设向程序提供了以下输入:8然后,输出应为:40320
n = int(input('输入阶乘的值:'))
val = 1
i = 1
while i<=n:
    val=val*i
    i += 1
print(val)

n=int(input("输入阶乘的值:"))
val=1
for i in range(1,n+1):
    val=val*i
print(val)

from functools import reduce
m=int(input("输入阶乘的值:"))
val=reduce(lambda x,y:x*y,[i for i in range(1,m+1)])
print(val)
3、使用给定的整数n,编写程序以生成包含(i,ixi)的字典,该字典为1到n之间的整数(都包括在内)。然后程序应打印字典。假设向程序提供了以下输入:
m=int(input("输入整数的值:"))
val=dict(zip(range(1,m+1),[i*i for i in range(1,m+1)]))
print(val)

val1={i:i*i for i in range(1,m+1)}
print(val1)

val2=dict(enumerate([i*i for i in range(1,m+1)],1))
print(val2)
4、编写一个程序,根据给定的公式计算并打印该值:

Q = [(2 *C * D)/ H]的平方根
以下是C和H的固定值:
C为50。H为30。
D是变量,其值应以逗号分隔的顺序输入到您的程序中,例如,让我们假设以下逗号分隔的输入顺序被赋予了程序:

from math import sqrt

c,h=30,50
def calc(index):
    return sqrt(2*c*index/h)

print(*(str(round(calc(int(i)))) for i in (input("输入逗号分隔的数字:").split(','))),sep=",")

mylist=input("输入逗号分隔的数字:").split(',')
val=[str(round(calc(int(i)))) for i in mylist]
print(','.join(val))

def calc1(index):
    index=int(index)
    return str(int(sqrt(2*c*index/h)))

mylist1=input("输入逗号分隔的数字:").split(',')

val1=list(map(calc1,mylist1))
print(','.join(val1))
5、_编写一个程序,该程序将X,Y两位数字作为输入并生成一个二维数组。数组的第i行和第j列中的元素值应为i *j。

注意:i = 0,1 …,X-1; j = 0,1,¡Y-1。假设将以下输入提供给程序:3,5
然后,程序的输出应为:
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]

import numpy as np
x,y=map(int,input("输入两位逗号隔开的数字:").split(','))

arr=np.fromfunction(lambda x,y:x*y,(x,y),dtype=int)
print(arr)

lst=[]
for i in range(x):
    tmp=[]
    for j in range(y):
        tmp.append(i*j)
    lst.append(tmp)
print(lst)

lst1=[[i*j for j in range(y)] for i in range(x)]
print(lst1)
6、编写一个程序,该程序接受以逗号分隔的4位二进制数字序列作为输入,然后检查它们是否可被5整除。被5整除的数字将以逗号分隔的顺序打印。
str = input("输入以逗号分隔的4位二进制数字序列:").split(',')
str1 =list(filter(lambda x : int(x,2) % 5==0 ,str))
print(str1)
7、编写一个程序,查找所有介于1000和3000之间的数字(都包括在内),以使数字的每个数字均为偶数。获得的数字应以逗号分隔的顺序打印在一行上。
def check(element):
    return all(ord(i)%2==0 for i in element)

lst=[str(i) for i in range(1000,3001)]
lst=list(filter(check,lst))
print(','.join(lst))

lst1=[str(i) for i in range(1000,3001)]
lst1=list(filter(lambda i:all(ord(j)%2==0 for j in i),lst1))
print(','.join(lst1))
8、编写一个接受句子并计算字母和数字数量的程序。
word=input()

letter,digit=0,0
for i in word:
    if i.isalpha():
        letter+=1
    if i.isnumeric():
        digit+=1
print(f"LETTERS {letter}\n DIGITS {digit}")
9、编写一个接受句子的程序,并计算大写字母和小写字母的数量。
word = input()
upper,lower = 0,0

for i in word:
        lower+=i.islower()
        print(lower)
        upper+=i.isupper()

print("UPPER CASE {0}\nLOWER CASE {1}".format(upper,lower))
10、使用列表推导对列表中的每个奇数取平方。该列表由逗号分隔的数字序列输入。
lst=[str(int(i)**2) for i in input(":").split(',') if int(i)%2]
print(','.join(lst))
11、网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码是否有效。

以下是检查密码的标准:
[az]之间至少1个字母
[0-9]之间至少1个数字
[AZ]之间至少1个字母
[$#@]中的至少1个字符
交易密码的最小长度:6
交易密码的最大长度:12
您的程序应接受逗号分隔的密码序列,并将根据上述条件进行检查。符合条件的密码将被打印,每个密码之间用逗号分隔。

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))
    if cnt==5:  #如果只要求满足其三,就>3就可以了
        lst.append(i)

print(",".join(lst))
12、您需要编写一个程序来按升序对(名称,年龄,分数)元组进行排序,其中名称是字符串,年龄和分数是数字。元组由控制台输入。排序标准是:

1:根据名称排序
2:然后根据年龄排序
3:然后按分数排序

lst=[]
while True:
    s=input("输入格式:姓名,年龄,分数:").split(',')
    if not s[0]:
        break
    lst.append(tuple(s))

lst.sort(key=lambda x:(x[0],int(x[1]),int(x[2])))  #重点
print(lst)
13、机器人从原始点(0,0)开始在平面上移动。机器人可以按照给定的步骤向上,下,左和右移动。方向后的数字为步长。请编写一个程序,以计算一系列移动和原始点之后与当前位置的距离。如果距离是浮点数,则只需打印最接近的整数即可。
from math import sqrt

x,y=0,0

while True:
    s=input("输入操作 距离:").split(' ')
    if len(s[0])==0:
        break
    if s[0] in ('UP','up'):
        y+=int(s[1])
    if s[0] in ('DOWN','down'):
        y-=int(s[1])
    if s[0] in ('LEFT','left'):
        x-=int(s[1])
    if s[0] in ('RIGHT','right'):
        x+=int(s[1])

val=round(sqrt(x**2+y**2))
print(x,y)
print(val)
14、编写一个程序来计算输入中单词的频率。在按字母数字顺序对键进行排序后,应输出输出。
ss=input().split()
word=sorted(set(ss)
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))
dict=sorted(dict.items())
for i in dict:
    print("%s:%d"%(i[0],i[1]))

from collections import Counter

ss=input().split()
ss=Counter(ss)
ss=sorted(ss.items())
for i in ss:
    print("%s:%d" % (i[0], i[1]))

你可能感兴趣的:(python练习2)