20180724学习日报-python学习第二章控制流练习题

本文提供了一系列Python编程实战练习题目及解答,包括数据处理、条件判断、字符串操作等关键技能,帮助读者通过实践提升编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章练习
1.使用尽可能多的方法实现list去重
第一种:
lista = [1,3,2,2,1,3,8,5,8,8]
listb = list(set(lista))
listb.sort(key=lista.index) #加入这个是为了按原有顺序输出
print(listb)

执行结果:
[1, 3, 2, 8, 5]

第二种:
lista = [1,3,2,2,1,3,8,5,8,8]
listb = []
for i in lista:
if i not in listb:
listb.append(i)
print(listb)

执行结果:
[1, 3, 2, 8, 5]

第三种:
import itertools
lista = [1,3,2,2,1,3,8,5,8,8]
lista.sort()
it = itertools.groupby(lista)

for i,k in it:
print(i)

执行结果:
1
2
3
5
8

2.成绩等级判断
利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,
60-89分之间的用B表示,60分以下的用C表示
score = int(input(“请输入成绩:”))
if score >= 90:
print(“该成绩是A”)
elif score >= 60 and score < 90:
print(“该成绩是B”)
else:
print(“该成绩是C”)

执行结果
请输入成绩:90
该成绩是A

3.实现数学中多项式求和公式的打印
比如:a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0
t = int(input(“请输入多项式中的最高系数值:”))
gs = ”

for i in range(t,-1,-1):
if i == 0:
gs += ‘a0’
else:
gs += ’ a’+str(i)+’x’+chr(94)+str(i)+’ + ’
print(gs)

执行结果:
请输入多项式中的最高系数值:6
a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0

请输入多项式中的最高系数值:7
a7x^7 + a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0

4.统计名字列表中,各名字的首字母在名字列表中出现的次数
name = [‘vivian’,’tenni’,’lucy’,’kate’,’david’]
L1 = []
L2 = []
count = 0
for i in name:
temp = list(i)
L1.append(temp[0])
L2.extend(temp)

for j in L1:
count=L2.count(j)
print(“%s在名字列表中出现的次数为:%d”%(j,count))
count=0

执行结果:
v在名字列表中出现的次数为:3
t在名字列表中出现的次数为:2
l在名字列表中出现的次数为:1
k在名字列表中出现的次数为:1
d在名字列表中出现的次数为:2

5.输入三个数,判断是否能构成三角形
能构成三角形三边关系:
三边都大于零
两边之和大于第三边,两边之差小于第三边

while 1:
a,b,c = map(int,input(“请输入三个数字,以,分割:”).split(‘,’))
if a>0 and b>0 and c >0:
if (a+b>c) and (a+c>b) and (b+c>a):
print(“%d,%d,%d能构成三角形!”%(a,b,c))
break
else:
print(“%d,%d,%d不能构成三角形!” % (a, b, c))
执行结果:
请输入三个数字,以,分割:1,1,5
1,1,5不能构成三角形!
请输入三个数字,以,分割:2,5,9
2,5,9不能构成三角形!
请输入三个数字,以,分割:2,3,2
2,3,2能构成三角形!
第二章练习题:
6.实现字典的fromkeys方法
例如:
seq = (‘name’, ‘age’, ‘sex’)
dict = dict.fromkeys(seq, 10)
print “New Dictionary : %s” % str(dict)
结果:New Dictionary : {‘age’: 10, ‘name’: 10, ‘sex’: 10}

seq = (‘name’, ‘age’, ‘sex’)
s = ”
for i in seq:
j = 10
if i == ‘sex’:
s += str(i)+’: ‘+str(j)
else:
s += str(i)+’: ‘+str(j)+’,’
print(‘New Dictionary : ‘+’{‘+s+’}’)
执行结果:
New Dictionary : {name: 10,age: 10,sex: 10}

7.键盘读入一字符串,逆序输出
第一种:
a = input(“请输入一串字符串:”)
b = []
new = ”
for i in a:
b.insert(0,i)

for j in b:
new += j
print(new)

执行结果:
请输入一串字符串:yominmljj3jh5jh6hh6n@%*njjk1888
8881kjjn*%@n6hh6hj5hj3jjlmnimoy

第二种:
a = input(“请输入一串字符串:”)
print(a[::-1])

执行结果:
请输入一串字符串:yominmljj3jh5jh6hh6n@%*njjk1888
8881kjjn*%@n6hh6hj5hj3jjlmnimoy

第三种:
a = list(input(“请输入一串字符串:”))
a.reverse()
print(”.join(a))

执行结果:
请输入一串字符串:yominmljj3jh5jh6hh6n@%*njjk1888
8881kjjn*%@n6hh6hj5hj3jjlmnimoy

8.读入一个整数n,输出n的阶乘

n = int(input(“请输入一个数:”))
result=1
for i in range(1,n+1):
result = result*i
print(“%d的阶乘为:%d”%(n,result))

请输入一个数:5
5的阶乘为:120

9.打印1/2, 1/3, 1/4,….1/10

s = ”
for b in range(2,11):
if b == 10:
s += ‘1/’+str(b)
else:
s += ‘1/’+str(b)+’,’
print(s)

执行结果:
1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10

10.写一个函数实现一个数学公式

11.输入数字a,n,如a,4,则打印a+aa+aaa+aaaa之和

a = int(input(“请输入数字a:”))
n = int(input(“请输入数字n:”))
s1= ”
s2 = 0
for i in range(1,n+1):
if i == n:
s1 += i*str(a)
else:
s1 += i*str(a)+’+’
s2 += int(i*str(a))
print(s1+’=’+str(s2))

执行结果:

请输入数字a:5
请输入数字n:6
5+55+555+5555+55555+555555=617280

12.求100个随机数之和,随机数要求为0—9的整数

import random
i = 1
s = 0
while i <= 100:
b = random.randint(0,9)
s += b
i += 1
print(s)

执行结果:
455

13.要求在屏幕上分别显求1到100之间奇数之和与偶数之和

s1 = 0
s2 = 0
for i in range(1,101):
if i%2 == 0:
s1 += i
else:
s2 += i
print(“1到100之间偶数之和%d”%s1)
print(“1到100之间奇数之和%d”%s2)

执行结果:
1到100之间偶数之和2550
1到100之间奇数之和2500

14.输入10个数,并显示最大的数与最小的数

i =1
lista = []
while i <= 10:
a = int(input(“请输入一个数:”))
i += 1
lista.append(i)

print(“最大的数为:”+str(max(lista)))
print(“最小的数为:”+str(min(lista)))

执行结果:
请输入一个数:45
请输入一个数:2
请输入一个数:34
请输入一个数:5
请输入一个数:6
请输入一个数:78
请输入一个数:99
请输入一个数:100
请输入一个数:11
请输入一个数:2
最大的数为:100
最小的数为:2

15.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出
各位数字
第一种:
a = input(“请输入一个正整数,位数不多于5位:”)
b = list(a)
b.reverse()
c = ”
d=c.join(b)
print(“它是%d位数”%len(a))
print(d)

执行结果:
请输入一个正整数,位数不多于5位:45567
它是5位数
76554

第二种:
a = input(“请输入一个正整数,位数不多于5位:”)
b=a[::-1]
print(b)

执行结果:
请输入一个正整数,位数不多于5位:54321
12345
第二章练习题:
18.钞票换硬币
把一元钞票换成一分、二分、五分硬币(每种至少一枚),有多种换法,分别有哪些?
a 一分个数取值范围:[1,10)
b 二分个数取值范围:[1,5)
c 五分个数取值范围:[1]

count = 0
c = 1
for a in range(1,10):
for b in range(1,5):
if a*1+b*2+c*5 == 10:
count += 1
print(“一分个数为%d,二分个数为%d,无五分个数为%d。”%(a,b,c))
print(“总共有%d中换法。”%count)

执行结果:
一分个数为1,二分个数为2,无五分个数为1。
一分个数为3,二分个数为1,无五分个数为1。
总共有2中换法。

19.自己实现在一句话中查找某个单词的算法,存在返回索引号,否则返回False
a = input(“请输入句子:”)
w = input(“请输入要查找的单词:”)

def m(a,w):
a = a.replace(‘.’,’ ‘)
a = a.replace(‘!’,’ ‘)
b = a.split()
for i in range(len(b)):
if b[i] == w:
return i

return False

print(m(a,w))

请输入句子:I am a boy. I am a good man!
请输入要查找的单词:mi
False

请输入句子:I am a boy. I am a good man!
请输入要查找的单词:boy
3

请输入句子:boy
请输入要查找的单词:boy
0

20.读入一个十进制整数,实现十进制转二进制算法将其转成二进制数
要求:不能使用现成进制转换函数,自己写代码实现

num = int(input(“请输入一个十进制整数:”))
num1 = num
d = ”
while 1:
if num == 1:
d = ‘0’
break
else:
a = num%2 #求余数
b = num//2 #商
d += str(a)
num = b
if b == 1:
d += str(1)
break
f = d[::-1]
print(“%d转换成二进制为:%s”%(num1,f))

执行结果:
请输入一个十进制整数:1
1转换成二进制为:0

请输入一个十进制整数:10
10转换成二进制为:1010

请输入一个十进制整数:255
255转换成二进制为:11111111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值