python编辑程序、根据输入的百分制数_Python学习---课后练习整理(一)

本文整理了多个Python课后练习,包括判断题和编程题,涉及变量、运算符、输入输出、数据类型等多个方面。通过实例解析了Python中变量的使用、输入输出处理、字符串操作以及数据类型转换等基础知识。同时,提供了几道编程题的解题思路和代码示例,如计算字符串中的数、列表元素求和、数字进制转换等。
摘要由CSDN通过智能技术生成

文章目录

python课后练习

Python练习01

判断题

编程题

笔记

Python练习02

判断题

单选题

编程题

笔记

python练习03

判断题

编程题

笔记

Python练习04

编程题

笔记

python课后练习

本学习的课程Python程序设计的练习在拼题A上完成,为了记录学习过程,对课后练习进行整理

python课后练习整理(二)

Python练习01

判断题

在Python 3.x中可以使用中文作为变量名

答案:True

原因:Python3中,源文件默认使用UTF-8编码

Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。

答案:False

原因:在当前作用域内,可以对Python变量重新赋值,根据赋值不同,其类型也会发生改变

示例:

Python运算符%不仅可以用来求余数,还可以用来格式化字符串

答案:True

示例:

在Python 3.x中,使用内置函数input()接收用户输入时,不论用户输入的什么格式,一律按字符串进行返回。

答案:True

示例:

在Python中,变量不直接存储值,而是存储值的引用,也就是值在内存中的地址。

答案:True

示例:

编程题

jmu-python-输入输出-计算字符串中的数

将字符串中的每个数都抽取出来,然后统计所有数的个数并求和。

输入格式:

一行字符串,字符串中的数之间用1个空格或者多个空格分隔。

输出格式:

第1行:输出数的个数。

第2行:求和的结果,保留3位小数。

输入样例:

2.1234 2.1 3 4 5 6

输出样例:

6

22.223

解答:

s = input()

num = s.split()

Sum = 0

for i in num:

Sum += float(i)

print(len(num))

print("%0.3f" % Sum)

输入列表,求列表元素和(eval输入应用)

在一行中输入列表,输出列表元素的和。

输入格式:

一行中输入列表。

输出格式:

在一行中输出列表元素的和。

输入样例:

[3,8,-5]

输入样例:

6

解答:

不使用eval()函数的时候,我是这么写的

a=input().lstrip('[').rstrip(']') # 先将输入的字符串去掉两端括号

list=[] # 新建列表,用来存放数字

for i in a.split(','): # 再将字符串使用','切片

list.append(int(i)) # 将字符列表里的字符型数字强制转换为数字型,并添加到list里

sum=0

for num in list: # 对列表list进行求和

sum+=num

print(sum)

当我使用eval()函数

list=eval(input()) # eval()函数直接将字符串类型的列表转化为列表类型

sun = 0

for num in list: # 列表求和

sum+=num

print(sum)

你好

你的程序会读入一个名字,比如John,然后输出“Hello John”。

输入格式:

一行文字。

输出格式:

一行文字。

输入样例:

Mary Johnson

输出样例:

Hello Mary Johnson

解答:

# 直接进行字符串连接输出就可以了

a=input()

print("Hello",a) # print()函数在输出多个参数时,默认使用空格间隔

# 以下是运行结果

Mike

Hello Mike

List item

程序会读入两行,每行都是一个数字,输出这两个数字的和

输入格式:

两行文字,每行都是一个数字

输出格式:

一行数字

输入样例:

18

21

输出样例:

39

解答:

# 由于规定了输入格式为数字,所以只需进求和输出即可

a = eval(input())

b = eval(input())

print(a+b)

笔记

input()函数

获取用户输入,返回值为字符串

如果需要在输入前打印提示信息,可以在括号里添加字符串

如:

python input("请输入")

split()函数

格式:split(str,num)

功能:通过指定分隔符对字符串进行切片

参数说明:str表示分割使用的字符,num表示分割次数,默认为全部分割

eval()函数

格式: eval(s)

功能:将字符串格式的对象具现化

Python练习02

判断题

已知st=“Hello World!”,使用print(st[0:-1])语句可以输出字符串变量st中的所有内容。(False)

示例:

Python程序设计中的整数类型没有取值范围限制,但受限于当前计算机的内存大小。 True

已知: x=1 y=2 z=[2,3,4] 则语句 x not in z 计算结果是True。 True

in 和 not in 在python里称为成员运算符,表示一个值是否属于某一序列,返回值为True或False

已知 x = 3,那么执行语句 x+=6 之后,x的内存地址不变。 False

python使用引用型数据,所以进行运算后,数字型的x的地址会发生改变

单选题

表达式1+2*3.14>0的结果类型是: (2分)

int

long

float

bool

1+2*3.14显然大于0,所以结果是Ture,为bool型

八进制35的十进制值是_。 (2分)

30

25

19

29

十进制转其他进制使用除n取余法,其他进制转十进制则相反,3*81+5*80

Python语言正确的标识符是_。 (2分)

2you

my-name

_item

abc*234

Python规定,标识符的命名必须只能采用字母数字下划线,且不能以数字开头

_号表示同一行的后面部分是Python程序的注释。 (2分)

*

%

/

#

Python里使用#进行行注释

Python 语句 print(0xA + 0xB)的输出结果是__。 (2分)

0xA + 0xB

A + B

0xA0xB

21

'0x’前缀表示十六进制,0xA 0xB分别表示10和11

Python 语句’car’; y = 2; print (x+y)的输出结果是__。 (2分)

语法错

2

'car2’

'carcar’

1,car两端的引号使用的是中文的单引号,非法

2,Python里不以分号表示语句结束

3,无法直接进行字符串和数字相加,如果要进行连接的话,应进行类型转换

编程题

产生每位数字相同的n位数

读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA...A,一共B个A

输入格式:

在一行中输入A和B。

输出格式:

在一行中输出整数AA...A,一共B个A

输入样例1:

在这里给出一组输入。例如:

1, 5

输出样例1:

在这里给出相应的输出。例如:

11111

输入样例2:

在这里给出一组输入。例如:

3 ,4

输出样例2:

在这里给出相应的输出。例如:

3333

解答:

a,b= eval(input())

print(str(a)*b)

转换函数使用

输入一个整数和进制,转换成十进制输出

输入格式:

在一行输入整数和进制

输出格式:

在一行十进制输出结果

输入样例:

在这里给出一组输入。例如:

45,8

输出样例:

在这里给出相应的输出。例如:

37

解答:

a,b=eval(input())

print(int(str(a),b)) # int(str,num)将num进制的数str转换为十进制

jmu-python-统计字符个数

输入一个字符串,统计其中数字字符及小写字符的个数

输入格式:

输入一行字符串

输出格式:

共有?个数字,?个小写字符,?填入对应数量

输入样例:

helo134ss12

输出样例:

共有5个数字,6个小写字符

解答:

lowerletters=0

numbers=0

strs=input()

for c in strs:

if(c.islower()):

lowerletters+=1

if(c.isdigit()):

numbers+=1

print('共有%d个数字,%d个小写字符' % (numbers,lowerletters))

笔记

Python进制函数,常见的有

bin()# 二进制,二进制数字格式为0b**

oct()# 八进制,八进制数字格式为0o**

hex()# 十六进制,十六进制数字格式为0x**

字符串的乘法

python里直接用字符串乘以一个数n,表示n个相同字符串拼接而成的字符串

判断字符,小写,数字

isdigit()

True: Unicode数字,byte数字(单字节),全角数字(双字节)

False: 汉字数字,罗马数字,小数

Error: 无

isdecimal()

True: Unicode数字,,全角数字(双字节)

False: 罗马数字,汉字数字,小数

Error: byte数字(单字节)

isnumeric()

True: Unicode 数字,全角数字(双字节),汉字数字

False: 小数,罗马数字

Error: byte数字(单字节)

num = "1" #unicode

num.isdigit() # True

num.isdecimal() # True

num.isnumeric() # True

num = "1" # 全角

num.isdigit() # True

num.isdecimal() # True

num.isnumeric() # True

num = b"1" # byte

num.isdigit() # True

num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal'

num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric'

num = "IV" # 罗马数字

num.isdigit() # False

num.isdecimal() # False

num.isnumeric() # False

num = "四" # 汉字

num.isdigit() # False

num.isdecimal() # False

num.isnumeric() # True

以上内容来源于菜鸟教程1

python练习03

判断题

如a是一个列表,且a[:]与a[::-1]相等,则a中元素按顺序排列构成一个回文。

True a[:]表示正序切片,a[::-1]表示逆序切片,两者相等则a中元素按顺序构成回文

表达式 {1, 3, 2} > {1, 2, 3} 的值为True。

False 两集合元素相同,所以{1,2,3}=={1,3,2},原表达式的值为False

已知x为非空列表,那么执行语句x[0] = 3之后,列表对象x的内存地址不变。

True 修改列表某个元素不会更改整个列表的地址

Python内置的集合set中元素顺序是按元素的哈希值进行存储的,并不是按先后顺序。

True 集合元素是无序的,按hash存储

已知x是一个列表,那么x = x[3:] + x[:3]可以实现把列表x中的所有元素循环左移3位。

True x[3:]表示列表x从第4个元素到最后一个元素,x[:3]表示列表x从开始到第三个元素,两者进行拼接,效果是将列表x中所有元素循环左移3位

编程题

图的字典表示。

图的字典表示。输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度。比如上图0点表示:

{'O':{'A':2,'B':5,'C':4}}

输入格式:

第一行表示输入的行数 下面每行输入表示一个顶点和该顶点相连的边及长度的字符串

输出格式:

在一行中输出顶点数,边数,边的总长度

输入样例:

在这里给出一组输入。例如:

4

{'a':{'b':10,'c':6}}

{'b':{'c':2,'d':7}}

{'c':{'d':10}}

{'d':{}}

输相应的输出。例如:

4 5 35

解答:

pointnum = int(input()) # 输入点的数量

edgesum = 0 # 声明周长

edgenum = 0 # 声明边数for i in range(pointnum):

dictlist=eval(input()) # 获取表示一个顶点和该顶点相连的边及长度的字典

for j in dictlist:

dict=dictlist[j] # 获取边长字典

for k in dict:

edgenum += 1 # 边数计数

edgesum += dict[k] # 边长求和

break

print(pointnum,edgenum,edgesum)

jmu-python-逆序输出

输入一行字符串,然后对其进行如下处理。

输入格式:

字符串中的元素以空格或者多个空格分隔。

输出格式:

逆序输出字符串中的所有元素。

然后输出原列表。

然后逆序输出原列表每个元素,中间以1个空格分隔。注意:最后一个元素后面不能有空格。

输入样例:

a b c e f gh

输出样例:

ghfecba

['a', 'b', 'c', 'e', 'f', 'gh']

gh f e c b a

解答:

str=input()

list=[]

for c in str.split(): #字符串切片

list.append(c)# 生成新的字符列表

print("".join(list[::-1]))# 将列表元素无间隔逆序输出

print(list)# 输出列表

print(" ".join(list[::-1]))# 将列表元素以空格为间隔逆序输出

jmu-python-班级人员信息统计

输入a,b班的名单,并进行如下统计。

输入格式:

第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符。

第2行::b班名单,一串字符串,每个学生名称以1个或多个空格分隔,可能有重复学生。

第3行::参加acm竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。

第4行:参加英语竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。

第5行:转学的人(只有1个人)。

输出格式

特别注意:输出人员名单的时候需调用sorted函数,如集合为x,则print(sorted(x))

输出两个班级的所有人员数量

输出两个班级中既没有参加ACM,也没有参加English的名单和数量

输出所有参加竞赛的人员的名单和数量

输出既参加了ACM,又参加了英语竞赛的所有人员及数量

输出参加了ACM,未参加英语竞赛的所有人员名单

输出参加英语竞赛,未参加ACM的所有人员名单

输出参加只参加ACM或只参加英语竞赛的人员名单

最后一行:一个同学要转学,首先需要判断该学生在哪个班级,然后更新该班级名单,并输出。如果没有在任何一班级,什么也不做。

输入样例:

abcdefghijab

1 2 3 4 5 6 7 8 9 10

1 2 3 a b c

1 5 10 a d e f

a

输出样例:

Total: 20

Not in race: ['4', '6', '7', '8', '9', 'g', 'h', 'i', 'j'], num: 9

All racers: ['1', '10', '2', '3', '5', 'a', 'b', 'c', 'd', 'e', 'f'], num: 11

ACM + English: ['1', 'a'], num: 2

Only ACM: ['2', '3', 'b', 'c']

Only English: ['10', '5', 'd', 'e', 'f']

ACM Or English: ['10', '2', '3', '5', 'b', 'c', 'd', 'e', 'f']

['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

解答:

a = input()

# a="abcdefghijab"

seta = set(a)# 由题意可知,要进行集合运算,则用集合表示每个群体

# print(seta)

b = input()

# b="1 2 3 4 5 6 7 8 9 10"

setb = set(b.split()) # 通过切片操作消除空格

# print(setb)

acm = input()

# acm = "1 2 3 a b c"

setacm = set(acm.split())

# print(setacm)

english = input()

# english = "1 5 10 a d e f"

setenglish = set(english.split())

# print(setenglish)

zhuanxue = input()

# zhuanxue = "a"

# setzhuanxue = set(zhuanxue) # 转学生作为独立集合

# print(setzhuanxue)

Total = seta.union(setb) # 两班所有学生---并集

race = setacm.union(setenglish) #竞赛学生---并集

Notinrace = Total.difference(race) #非竞赛学生---差集

ACMplusEnglish = setacm.intersection(setenglish) # 报名两项竞赛学生---交集

OnlyACM = setacm.difference(setenglish) # 仅报ACM学生---差集

OnlyEnglish = setenglish.difference(setacm) # 仅报英语竞赛学生---差集

ACMOrEnglish = setacm.symmetric_difference(setenglish) # 报名一项竞赛---对称差集

print("Total:",len(seta.union(setb)))

print("Not in race:",sorted(Notinrace),end=", ")

print("num:",len(Notinrace))

print("All racers:",sorted(race),end=", ")

print("num:",len(race))

print("ACM + English:",sorted(ACMplusEnglish),end=", ")

print("num:",len(ACMplusEnglish))

print("Only ACM:",sorted(OnlyACM))

print("Only English:",sorted(OnlyEnglish))

print("ACM Or English:",sorted(ACMOrEnglish))

# 将转学学生当成集合,进行差集运算,考虑到只有一个转学生,故使用第二种方法

# if zhuanxue in seta:

# seta.difference_update(setzhuanxue)

# print(sorted(seta))

# elif zhuanxue in setb:

# setb.difference_update(setzhuanxue)

# print(sorted(setb))

# 将转学学生当成集合元素,进行元素移除运算

if zhuanxue in seta:

seta.remove(zhuanxue)

print(sorted(seta))

elif zhuanxue in setb:

setb.remove(zhuanxue)

print(sorted(setb))

笔记

join()函数

--语法:str.join(sequence)

--功能:将序列中的元素以指定的字符连接生成一个新的字符串

--参数说明

----str表示连接所用的字符,sequence表示需要连接的序列

集合函数

seta.union(setb,setc....)# 并集

seta.difference(setb)# 差集

seta.intersection(setb,setc....)# 交集

seta.symmetric_difference()# 对称差集

seta.remove(item)# 移除指定元素

Python练习04

这次的判断题没什么难度,所以不进行整理

编程题

jmu-python-汇率兑换

按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序

输入格式:

输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100

输出格式:

输出经过汇率计算的美元或人民币的金额,格式与输入一样,币种在前,金额在后,结果保留两位小数

输入样例1:

R60

输出样例1:

$10.00

输入样例2:

$5

输出样例2:

R30.00

解答:

money = input()

if money.startswith('R',0,1):

numofchange = int(money.lstrip('R'))/6

print('$',"%.2f" % numofchange,sep='')

elif money.startswith('$',0,1):

numofchange = int(money.lstrip('$'))*6

print('R',"%.2f" % numofchange,sep='')

jmu-python-成绩转换

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。

输入样例:

98

输出样例:

A

解答:

score100 = int(input())

if score100>=90:

print('A')

elif 80<=score100<90:

print('B')

elif 70<=score100<80:

print('C')

elif 60<=score100<70:

print('D')

else:

print('E')

笔记

汇率转换主要包含的问题有

–识别输入字符串的开头字符-----------使用str.startswith(str,beg,end)函数,返回值为bool类型

–从字符串中提取数字并进行运算-----先去除开头字符str.lstrip(str),然后字符串转数字

–输出的数字要带两位小数--------------”%.2f"%num,或者format(num,’.2f’)

成绩转换主要涉及多重分支的选择结构

由于python里没有switch语句

所以只有不断的if … elif …else

来源:http://www.runoob.com/python3/python3-string-isnumeric.html ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值