数列字典练习题

本文通过Python演示了如何生成随机矩阵、进行矩阵转置、矩阵乘法及统计英文句子中字母频率的方法。同时,展示了如何使用map函数处理用户输入的数字列表,并实现了根据姓名查询电话号码的字典操作。此外,还创建了一个映射大写字母到数字1-26的字典,并展示了将电话号码转换为英文单词形式的程序。
摘要由CSDN通过智能技术生成
  • 用random库生成一个数值在-1到1内的10*5的矩阵,再将它转置,再算它和它的转置的乘积
from random import*
x=[[2*random()-1 for i in range(5)] for j in range(10)]
y=list(map(list,(zip(*x))))
z=[]
r=len(x)
c=len(y[0])
for i in range(r):
    row=c*[0]
    for j in range(c):
        s=0.0
        for k in range(len(y)):
            s+=x[i][k]*y[k][j]
        row[j]=s
    z.append(row)
print(z)
        

用函数的结构来表示

from random import*
def printM(m):
    for i in range(len(m)):
        for j in range(len(m[0])):
            print(m[i][j],end="")
        print()
def multi(m1,m2):
     result=[]
     for i in range(len(m2[0])):
         row=[]
         for j in range(len(m2[0])):
          s=0
          for k in range(len(m1[0])):
             s+=m1[i][k]*m2[k][j]
             row.append(s)
     return result  
m1=[[random()*2-1 for i in range(5)]for j in range(10)]
printM(m1)
m2=[[row[i] for row in m1]for i in range(len(m1[0]))]
printM(m2)
printM(multi(m1,m2))
  • 生成10*5的随机数据帧,在编写代码实现矩阵转置
def printM(m):
    for i in range(len(m)):
        for j in range(len(m[0])):
            print(m[i][j],end="")
        print()
import random as R
m1=[[R.uniform(-1,1)for i in range(5)]for j in range(10)]
printM(m1)
m2=[[0 for i in range(10)]for j in range(5)]
printM(m2)
for i in  range(len(m2)):
    for j in range(i):
        m2[i][j]=m2[j][i]
printM(m2)
  • 输入一个英文句子,统计里面每个字母出现的次数,组合成一个字典。要求大小写字母相同处理
s=input("please input a sentence:")
s=s.upper()
s1=[]
for i in s:
    if i not in s1 and 64<ord(i)<97:
        s1+=[i]
s2=[]
for j in range(len(s1)):
    t=0
    for k in s:
        if k==s1[j]:
            t+=1
    s2+=[t]
print(dict(zip(s1,s2)))

#方法二
string=input("plz enter a sentence").upper()
s1=(set(item for item in string if (item.isupper())))
count={item:string.count(item)for item in s1}
print(count)
  • 编写一个程序,从键盘上输入数字,熟自制件用空格间隔,用map函数将数据处理成一个数值列表输出
s=input("请输入10个数,数字间用空格作为间隔:")
words=list(map(int,s.split()))
print(words)
  • 建立一个学生姓名和手机号的字典,输入格式:姓名 手机号 输入-1时结束输入过程,然后再通过一个循环实现输入姓名查找手机的功能,输入“xxx”结束查找
#方一
s=input("请输入新的人和对应手机号:")
x,y=s.split()
s1=[];s2=[]
while y!="-1":
    s1+=[x]
    s2+=[y]
    x=input("请输入人和手机号:")
    x,y=x.split()
dict=dict(zip(s1,s2))
print(dict)
y=input("请输入学生姓名:")
while y!="xxx":
        print(dict[y])
        y=input("请输入学生姓名:")
print("查找结束")
#方二
s={}
while 1:
    a=input("laz enter ur name and phone number:")
    if a=="-1":
        break
    else:
            b=list(a.split())
            s[b[0]]=b[1]
while 1:
    c=input("plz enter ur name:")
    if c=="xxx":
     print("over")
     break
    print(s[c]) 
#方三
dic={}
def write(dic):
    while True:
        L=input("enter your name and number")
        if L=="-1":
            break
        else:
            L=L.split()
            dic[L[0]]=L[1]
    return dic
def read(dic):
    while True:
        key=input("enter your name:")
        if key=="xxx":
            break
        elif key not in dic.keys():
            print("无相关记录")
        else:
            print(dic[key])
read(write(dic))
  • 生成一个包含26个大写字母和一一对应的1~26的字典
list1=[chr(i) for i in range(65,65+27)]
list2=[i for i in range(1,27)]
s=dict(zip(list1,list2))
print(s)
  • 用字典完成程序,提示用户输入电话号码,用英文单词形式显示数字
s1=[i for i in range(10)]
s2=["zero","one","two","three","four","five","six","seven","eight"]
s=dict(zip(s1,s2))
print(s)
num=input("please input ur number:")
for i in num:
       print(s[int(i)],end=" ")
  • 区分一下列表的用途
  • 转置一个矩阵
x=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
xt=[[row[i] for row in x]for i in range(len(x[0]))]
print(xt)

等价于

x=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
xt=[]
for i in range(len(x[0])):
    line=[]
    for row in x:
        line.append(row[i])
    xt.append(line)
print(xt)

此处

line=[]
for row in x:
    line.append(row[i])
xt.append(line)
相当于[row[i]]for row in x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值