关于python实验四的总结

目录

一、判断题

二、单选题

三、填空题

四、编程题

1.求出歌手的得分

2.输出字母在字符串中位置索引

3.汉字表示的大写数字金额

4.输出元组内指定值

5.字符替换

6.使用字符串的索引和切片知识输入月份数字,输出英文月份缩写

7.jmu-python-凯撒密码加密算法

8.特定数之和

9.缩写期刊名

10.统计输入字符串中的单词个数及单词的平均长度

11.jmu-python-输入输出-格式化输出字符串

12.计算有n个字符串中最长的字符串长度

13.统计单词的个数

14.输出10个不重复的英文字母

15.判断两个字符串是否为变位词


一、判断题

1.F

中文占一个字符,具体原理不详。 

2.F

字符串切片。表示从0到最后一个字符为止,左闭右开区间。

输出不包括最后一个字符

3.F

若字符串含有多个连续的空格,结果会有空元素。

4.F

字符串相加,为“43”。

5.T

下标为5的元素为空格。

6.F

Python中变量以指针的形式存在,不需要考虑内存超出。

7.T

8.T

字符串的引号
引号形式用法
单引号使用单引号,双引号课视为普通字符
双引号使用双引号,单引号课视为普通字符
三引号

三引号可多行输入,不需要\n。

撰写文档字符串。

一行太长,切割成多行,两种方法:

 9.T

10.F

字符串加法为字符串连接,字符串乘法为重复字符串。

11.T

12.T

 字符串不能与数值型数据相加。

13.F

字符串和元组属于不可变有序序列,不能修改。

14.T

15.F

修改后的程序:

16.F

sort函数只能对列表排序。

17.T

18.F

s1中:每个元素后都跟着空格。

s2中:join函数只能将分隔符插在元素中间。

s1比s2末尾多一个空格。

19.T

ASCII和Unicode编码的区别

20.F

数字格式化
数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:-.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零 (填充左边, 宽度为2)
5{:x<4d}5xxx数字补x (填充右边, 宽度为4)
10{:x<4d}10xx数字补x (填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:>10d}        13右对齐 (默认, 宽度为10)
13{:<10d}13左对齐 (宽度为10)
13{:^10d}    13中间对齐 (宽度为10)
11
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB
进制

注:居中的1234后面有两个空格。

21. F

22.F

23.F

字符串的索引从0开始,因此第一个字符的索引为0,第二个字符的索引为1,依此类推。

24.F

25.T

26.F

27.F

28.T

tuple(x):可以用于生成元组,输入的参数可以是任何组合数据类型。

29.T

元组是不可变的,不支持列表对象的inset()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。

30.F

创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,),消除歧义。

31.F

32.F

 x是元组不可变,x[0]为列表,可变。

二、单选题

DDBBC

BCCAD

DBDCB

CBBDC

三、填空题

1.0

浮点数参与整除,结果也为浮点数

四、编程题

1.求出歌手的得分

n=int(input())
score=list(map(int,input().split()))
score=sorted(score)
sum=0
l=len(score)-2
for i in range(2,l):
    sum+=score[i]
print('aver={:.2f}'.format(sum/(len(score)-4)))

2.输出字母在字符串中位置索引

str1=input()
str2=input().split()
num=len(str1)-1
str1=str1[::-1]
for i in str1:
    if i in str2:
        print(str(num)+' '+i)
    num-=1

3.汉字表示的大写数字金额

s=input()
str1=['0','1','2','3','4','5','6','7','8','9']
str2=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
dic=dict(zip(str1,str2))
s=s[::-1]
for i in range(len(s)-1,-1,-1):
    print(dic[s[i]],end='')
    if i==8:
        print('亿',end='')
    elif i==4:
        print('万',end='')
    elif i==11 or i==7 or i==3:
        print('仟',end='')
    elif i==10 or i==6 or i==2:
        print('佰',end='')
    elif i==9 or i==5 or i==1:
        print('拾',end='')
print('圆',end='')

4.输出元组内指定值

x=map(int,input().split())
x=tuple(x)
for i in x:
    if i%7==0 or i%10==7:
        print(i)

5.字符替换

import string
str1=string.ascii_uppercase
str2=str1[::-1]
dic=dict(zip(str1,str2))
x=input()
for i in x:
    if i in str1:
        print(dic[i],end='')
    else:
        print(i,end='')

6.使用字符串的索引和切片知识输入月份数字,输出英文月份缩写

month=int(input())
if month==1:
    print('Jan')
elif month==2:
    print('Feb')
elif month==3:
    print('Mar')
elif month == 4:
    print('Apr')
elif month == 5:
    print('May')
elif month==6:
    print('Jun')
elif month==7:
    print('Jul')
elif month == 8:
    print('Aug')
elif month == 9:
    print('Sep')
elif month==10:
    print('Oct')
elif month==11:
    print('Nov')
elif month ==12:
    print('Dec')

7.jmu-python-凯撒密码加密算法

x=input()
n=int(input())
for i in x:
    if i.isupper():
        y=(ord(i)-65+n)%26+65
        print(chr(y),end='')
    elif i.islower():
        y=(ord(i)-97+n)%26+97
        print(chr(y),end='')
    else:
        print(i,end='')

8.特定数之和

n=int(input())
sum=0
for i in range(1,n+1):
    x=str(i)
    if '2' in x:
        sum+=i
    elif '0'in x:
        sum+=i
    elif '1'in x:
        sum+=i
    elif '9'in x:
        sum+=i
print(sum)

转成字符串会比算每一位的数更简单一些。

9.缩写期刊名

t=int(input())
for i in range(t):
    x=input()
    x=x.lower()
    line=x.split()
    l=len(line)
    for j in line:
        if len(j)>4:
            s=[p for p in j]
            for k in range(4):
                print(j[k],end='')
            print('.',end='')
        if len(j)<=4:
            print(j,end='')
        if l>1:
            print(' ',end='')
        else:
            print()
        l-=1

10.统计输入字符串中的单词个数及单词的平均长度

x=input().split()
l=len(x)
s=0
for i in x:
    s+=len(i)
print('%d,%.2f'%(l,s/l))

11.jmu-python-输入输出-格式化输出字符串

a=float(input())
b=int(input())
c=input()
c=str.strip(c)
print('%.2f'%a)
print('{0:e} {0:E} {0:.2%}'.format(a))
print('{0:b} {0:x}'.format(b))
print(c.upper())
print('{:>20s}'.format(c))
print('{:*^20s}'.format(c))
print('{} + {} = {}'.format(a,b,a+b))

strip函数:

str.strip()   去除字符串两边的空格

str.lstrip()   去除字符串左边的空格

str.rstrip()   去除字符串右边的空格

注:此处的空格包含'\n', '\r',  '\t',  ' '

center函数:
str.center(width , "fillchar") 

返回长度为width,两边用fillchar填充的字符串

E/e    大小写字母e的指数形式

%      百分数形式

s       字符串形式

12.计算有n个字符串中最长的字符串长度

n=int(input())
max=0
for i in range(n):
    x=input().strip()
    if len(x)>max:
        max=len(x)
print('length=%d'%max)

13.统计单词的个数

x=input().split()
print('count = %d'%len(x))

14.输出10个不重复的英文字母

x=input()
#将字母整合到字符串y
y=''
for i in x:
    if i.isalpha():
        y+=i
#x为y的集合,可以去除掉重复的字母(此时区分大小写)
x=set(list(y))
#若集合的长度小于10,不重复字母的个数肯定小于10
if len(x)<10:
    print('not found')
#若集合长度大于10
else:
    z=''#收集已经判定的字母的大小写
    ans=''#保存结果(不区分大小写,T和t算重复)
    for i in y:
        #当z中存在了i的字母,跳过
        if i in z:
            continue
        if i in x:
            # 结果中保存字母i
            ans+=i
            #z中保存i的大小写
            z+=i.lower()
            z+=i.upper()
    #如果结果元素个数小于10
    if len(ans)<10:
        print('not found')
    else:
        print(ans)

由于出现了T,就不能出现t。所以用字符串z来判断,遇到不重复字符时,加上该字符的大小写。

15.判断两个字符串是否为变位词

import copy

str1=input().split()
str2=input().split()
s1=''
s2=''
for i in str1:
    s1+=i
for i in str2:
    s2+=i
if len(s1)!=len(s2):
    print('no')
else:
    s1=list(s1)
    s2=list(s2)
    for i in s1:
        if i in s2:
            s2.remove(i)
            s2=copy.deepcopy(s2)
    if len(s2)!=0:
        print('no')
    else:
        print('yes')

运用了深度复制来刷新remove函数的指针,否则会跳过后面一个元素。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值