目录
5. 输入三个数,判断是否能构成三角形。能构成三角形三边关系:
11. 输入数字a,n,如a,4,则打印a+aa+aaa+aaaa之和
15.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
18.钞票换硬币:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有多种换法,分别有哪些?
19.自己实现在一句话中查找某个单词的算法,存在返回索引号,否则返回False
20.读入一个十进制整数,实现十进制转二进制算法,将其转成二进制数
21.5个字母'a','e','i','o','u',求5个字母组成的不同字符串组合的个数
1. 使用尽可能多的方法实现list去重
l=[1,2,3,3,2,5,4,2,1,1,4]
# 方法1:利用set
l1 = set(l)
print(l1)
# 方法2:利用另一个列表
result = []
for i in l:
if i not in result:
result.append(i)
print(result)
# 方法3:利用字典
d={}
for k in l:
d[k]=""
print(list(d.keys()))
# 方法4:利用list的count()和remove()函数
l2=[1,2,3,3,2,5,4,2,1,1,4]
for i in l2:
if l2.count(i) > 1: # 如果i在list中大于1个
for j in range(l2.count(i)-1): # 从list中移除l2.count(i)-1次
l2.remove(i)
print(l2)
# 方法4在对以下列表去重时有bug:l=[1,2,3,3,4,2,5,4,33,1,6,8,4],去重后为:[2, 3, 2, 5, 33, 1, 6, 8, 4]
# 方法优化如下:
l=[1,2,3,3,4,2,5,4,33,1,6,8,4]
l2=l[:]
for i in l2: # 如此可以遍历到整个待去重列表,保证不会有去重遗漏的情况
print(i)
if l.count(i) > 1:
for j in range(l.count(i)-1): # 此时,这句可以不要,直接l.remove(i)
l.remove(i)
2. 成绩等级判断
利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示
score = input("请输入学生成绩:")
if not score.isdigit():
print("输入的成绩不是整数")
new_score = int(score)
if new_score < 60:
print("C")
elif new_score >=60 and new_score <=89:
print("B")
else:
print("A")
3. 实现数学中多项式求和公式的打印
比如:a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0
n = int(input("请输入n值(n为打印的n项式公式):"))
s = ""
while n >= 0:
if n == 0:
s += 'a0'
else:
j = str(n)
s += 'a'+j+'x'+'^'+j+'+'
n -= 1
print(s)
# 方法2
m = int(input("请输入n值(n为打印的n项式公式):"))
s = ""
for i in range(m,-1,-1):
if i >= 1:
s += ("a" + str(i) + "x" + "^" + str(i) + "+")
else:
s +=("a" + str(i))
print(s)
4. 统计名字列表中,各名字的首字母在名字列表中出现的次数
name_list=['Amy','Alice','Bob','Max','Mick','Joe','jay','JJ','jack']
d={}
# 不区分字母大小写
for i in name_list:
j=i.upper() #区分大小写时,去掉upper()操作
d[j[0]]=0 # 存名字首字母,字典不允许有相同的key
for i in name_list:
for j in i.upper():
if j in d.keys():
d[j] += 1
print(d)
# 不区分字母大小写,方法2:不用字典
result = []
for i in name_list:
j=i.upper()
if j[0] not in result:
result.append(j[0]) # 存名字首字母,并避免重复
for i in result:
count = 0
for j in name_list:
for k in j.upper():
if k == i:
count += 1
print("%s:%d" %(i,count))
d={}
# 区分字母大小写
for i in name_list:
d[i[0]]=0 # 存名字首字母,字典不允许有相同的key
for i in name_list:
for j in i:
if j in d.keys():
d[j] += 1
print(d)
5. 输入三个数,判断是否能构成三角形。能构成三角形三边关系:
三边都大于零,两边之和大于第三边,两边之差小于第三边
s = input("请输入3个数字,用','隔开:")
s = s.split(',')
a,b,c = int(s[0]),int(s[1]),int(s[2])
if a > 0 and b > 0 and c > 0:
if a+b>c and b+c>a and a+c>b:
if abs(a-b)<c and abs(b-c)<a and abs(c-a)<b:
print("%d %d %d 能构成三角形" %(a,b,c))
else:
print("两边之差不小于第三边")
else:
print("两边之和不大于第三边")
else:
print("三边不都大于0")
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}