【习题之Python篇】习题7

1.已知一段程序,用列表保存几个用户名,要求通过终端输入新的用户名并判断输入的用户名是否为已经设置好的用户名,并且给出友好提示,如果已经输入过,要允许用户多次尝试,知道正确为止

names=['xiaofeng','zangjing','tom']
name=input("请输入您的名字:")
for i in names:
    if name==i:
        name=input("此名字已经用过了哦!请再次输入您的名字:")
print("命名成功!")
names.append(name)

结果:
在这里插入图片描述
小知识:
l.append(“ ”) 列表插入函数

2.统计单词出现的次数

l=("How are you . How are you .")
l=l.split(" ")
l1={}
for i in l:
    if i=='.':
        continue
    else:
       l1[i]=l1.get(i,0)+1
print(l1)

结果:
在这里插入图片描述
小知识:
l.split(" ")为分割函数

3.将一段字符串中的数字输出来并形成一个新的字符串

a="aAsmr3idd4bgs7D1sf9eAF"
newa=[]
for i in a:
    if ord(i)>=48 and ord(i)<=57:
        newa.append(i)
print("".join(newa)) #将列表变成字符串

结果:
在这里插入图片描述
小知识:
print("".join( )) 将列表变成字符串

4.统计字符串每个字母出现的次数(忽略大小写)

a="aAsmr3idd4bgs7D1sf9eAF"
l1={}
a=a.lower()  #a.lower()将大写变成小写字母
for i in a:
    if ord(i)>=48 and ord(i)<=57:
        continue
    else:
        l1[i]=l1.get(i,0)+1
print(l1)

结果:
在这里插入图片描述
小知识:
a.lower()将大写变成小写字母

5.去除字符串中多次出现的字母,不区分大小写。

s="aaAAffEEeefe"
s=s.lower()
d={}   #计算出现的次数
a=[]   #存放
for i in s:
    a.append(i)
for i in s:
    d[i]=d.get(i,0)+1
max1=d[s[0]]  #字典中最大的元素,先随便找一个当最大的
for j in d:   #找出待删除最小元素的重复最大元素
    if d[j]>d[s[0]]:
        max1=d[j]
b=[]  #存放字符串中出现最大的的字母
for k in d:
    if d[k]==max1:
        for i in range(max1):
          b.append(k)
for i in range(len(b)):
    for j in range(len(a)):
        if b[i]==a[j]:
            del a[j]
            break
c=''  #存放删除完的字符串
for k in range(len(a)):
    c += a[k]
print("结果为:",c)

结果:
在这里插入图片描述

6.编写一个摄氏温度和华氏温度之间的换算,公式为:F=9*C/5+32

ques=eval(input("请问您输入的是摄氏度①还是华氏度②:"))
cf=float(input("请输入度数:"))
if ques==1:
    f=cf*1.8+32
    print("{}C等于{}F".format(cf,f))
elif ques==2:
    c=(cf-32)/1.8
    print("{}F等于{}C".format(cf,c))

结果:
在这里插入图片描述
小知识:
eval()去掉输入时代的双引号

7.有n个小孩围成一圈报数(1,2,3)数到3的小孩就出去,之后重新从1开始数,数到1就出去,判断最后那个小孩是第几个。

child=[x for x in range(1,11)]
print(child)
i=1   #计算数到3的小朋友
j=0   #编号
while len(child)>1:       #当只有一个小孩的时候就跳出循环
    if j==len(child):
        j=0
    if i==3:
        i=1   #将i重置为1
        print("{}出局".format(child[j])) 
        del child[j]  
        print(child)
    else:
        i+=1
        j+=1
print("最后那个小孩是{}号".format(child[0]))

结果:
在这里插入图片描述

8.哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个素数之和。 请输出6-20之间所有偶数的所有拆分结果。输出结果如下:

6=3+3
8=3+5
8=5+3
10=3+7
10=5+5
10=7+3
12=5+7
12=7+5
14=3+11
14=7+7
14=11+3
16=3+13
16=5+11
16=11+5
16=13+3
18=5+13
18=7+11
18=11+7
18=13+5
20=3+17
20=7+13
20=13+7
20=17+3

import math
#is_prime():判别素数
def is_prime(n):
    if n==1: return False   #1不是素数就直接返回false
    if n==2: return True    #2是素数就直接返回True
    for i in range(2,int (math. sqrt(n))+1):     #(math. sqrt(n))+1减少循环次数,也可以用n
        if n%i==0:    #找出不是素数就返回false
            return False
    else:return True   #其他情况就返回True
for i in range(6,21):
    for j in range(2,i):
        if is_prime(j) and is_prime(i-j):   #将i拆解分别放入is_prime函数中检验是否是素数
            print("{}+{}={}".format(j,i-j,i))

结果:
在这里插入图片描述

9.将两个列表写进字典中

citys=['shangahi','daqing','hangzhou','nanijing','beijig']
codes=['0521','5246','5','664','5565']
print(dict(zip(citys,codes)))

结果:
在这里插入图片描述
小知识:
dict() 函数用于创建一个字典。
dict(zip(A, B)) # 映射函数方式来构造字典
zip(A, B) # 打包为元组的列表

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IsQiya

很庆幸我的文章对您有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值