习题1
题目描述:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,>输入”They are students.”和”aeiou”,
则删除之后的第一个字符串变成”Thy r stdnts.”
s1 = input('s1输入:')
s2 = input('s2输入:')
for i in s1: 定义i循环遍历s1中所有的字符串
if i in s2: 判定i是否含有s2中的字符串
s1 = s1.replace(i,'') 存在则替换为空
print(s1)
打印结果
s1输入:They are student.
s2输入:aeiou
Thy r stdnt.
习题2
. 设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保留两>位小数点);
import random 引入随机函数
count = 0 计数器
right = 0 计数器
while True:
a = random.randint(0,9) 赋值随机值
b = random.randint(0,9)
print('%d + % d = ?' %(a,b)) a+b的值计算机内部计算不显示
question = input('请输入答案或按q退出操作:')
result = a + b 输入的数值等于a+b的值
if question == str(result): 判断是否等于
print('回答正确')
right += 1 回答正确a+1
count += 1 答题总数+1
elif question == 'q': 判断按q直接退出循环
break
else:
print('回答错误') 判断回答错误
count += 1 答题总数计数器加1
percent = (right / count) * 100 正确的除以回答的总数求正确率
print('测试结束,共答对%d道题,正确数量%d道。正确率%.2f%%' %(count,right,percent))
执行结果:
0 + 6 = ?
请输入答案或按q退出操作:5
回答错误
2 + 2 = ?
请输入答案或按q退出操作:4
回答正确
3 + 7 = ?
请输入答案或按q退出操作:11
回答错误
4 + 2 = ?
请输入答案或按q退出操作:8
回答错误
8 + 7 = ?
请输入答案或按q退出操作:15
回答正确
2 + 6 = ?
请输入答案或按q退出操作:8
回答正确
1 + 5 = ?
请输入答案或按q退出操作:6
回答正确
2 + 3 = ?
请输入答案或按q退出操作:5
回答正确
9 + 5 = ?
请输入答案或按q退出操作:q
测试结束,共答对8道题,正确数量5道。正确率62.50%
Process finished with exit code 0
习题三
字典fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,
value 为字典所有键对应的初始值,seq – 字典键值列表。
romkeys()方法语法:dict.fromkeys(seq[, value])
import random
account_num = [] 定义空列表
for i in range(100):
account_num.append('6102009%.3d' %(i+1))
account_info = {}.fromkeys(account_num,'radhat')
value -- 可选参数, 设置键序列(seq)的值。
print('卡号\t\t\t\t 密码') \t制表符表示空四个字符,也称缩进,相当于按一下Tab键
for k,v in account_info.items():
print(k,'\t\t\t',v)
打印结果
卡号 密码
6102009001 radhat
6102009002 radhat
......... ......
习题四
编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.
def cacluate(*args): 定义函数*args表示多个值
avg = sum(args) / len(args) 求平均数
up_avg = [ ] 定义空列表
for item in args: 循环遍历所有元素
if item > avg: 判定item大于平均值
up_avg.append(item) 添加到列表当中
return avg,up_avg 返回值
a = cacluate(1,2,3,4,5,6,7) 指定函数变量元素
print(a)
打印结果
(4.0, [5, 6, 7]) 打印一个字典里面含有列表
习题五
编写一个函数, 接收字符串参数, 返回一个元组,‘ehllo WROLD’
元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
def fun(x): 定义函授
upper_count = 0 设置计数器
lower_count = 0
for i in x: 循环遍历x的元素
if i.isupper(): 判定是否是大写字符串
upper_count += 1 是+1
elif i.islower(): 判定是否是小写字符串
lower_count += 1 是+1
else: 不是
continue 跳过此次循环
return upper_count,lower_count 返回值
a = fun('echoll WORD')
print(a)
打印结果
(4, 6)
习题六
编写函数, 接收一个列表(包含30个1~100之间的随机整形数)和一个整形
数k, 返回一个新列表.
函数需求:
- 将列表下标k之前对应(bu包含k)的元素逆序;
- 将下标k及之后的元素逆序;
- [1,2,3,4,5] 2 [2,1,5,4,3]
def fun(li,k): 定义函数
if k < 0 or k > len(li): 判断k不能为负数或k大于列表长度
return 'error key' 返回k值有错
return li[:k][::-1] + li[k:][::-1] 元素逆序并连接起来
print(fun([1,2,3,4,5,6],2)) 打印指定元素,并指定k2
打印结果
[2, 1, 6, 5, 4, 3]
习题七
模拟轮盘抽奖游戏
轮盘分为三部分: 一等奖, 二等奖和三等奖;
轮盘转的时候是随机的,
如果范围在[0,0.08)之间,代表一等奖,
如果范围在[0.08,0.3)之间,代表2等奖,
如果范围在[0.3, 1.0)之间,代表3等奖,
模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数.
import random 引入随机函数
rewardDict = { 定义字典
'一等奖': (0,0.08),
'二等奖': (0.08,0.3),
'三等奖': (0.3,1.0)
}
def userfun(): 定义函数
num = random.random() random.random()表示0-1之间的随机数。
for k,v in rewardDict.items(): 循环遍历字典当中的键-值对
if v[0] <= num < v[1]: 判定随机数大于0小于1
return k 返回值(实际就是几等奖)
resultDict = {} 定义字典
for i in range(1000):
res = userfun() 定义获奖变量为res
if res not in resultDict: 判定第一次获得奖
resultDict[res] = 1
else:
resultDict[res] += 1 不是得奖的次数+1
for k,v in resultDict.items(): k:键123等奖,v:value值,获奖人次
print(k,'——>',v)
打印结果随机
三等奖 ——> 679
二等奖 ——> 239
一等奖 ——> 82
习题八
题目需求:
对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:
f(13) = 12 + 32 = 10
f(207) = 22 + 02 + 72 = 53
下面给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b,
且k*f(n)=n
输入:
第一行包含3个正整数k,a, b, k>=1, a,b<=1018, a<=b;
输出:
输出对应的答案;
范例:
输入: 51 5000 10000
输出: 3
#先求平方和
def f(n):
n = str(n)
sum = 0
for item in n:
sum += int(item) ** 2
return sum
#print(f(13))
s = input()
li = []
for item in s.split():
li.append(int(item))
k,a,b = li
count = 0
for i in range(a,b+1):
if k*f(i) == i:
count += 1
print(count)
打印结果
51 5000 10000
3
(2018-腾讯-在线编程题)
num = int(input())
def isPrime(num):
for i in range(2,num):
if num % i == 0:
return False
else:
return True
primeli = [i for i in range(2,num) if isPrime(i)] 定义质数的变量
print(primeli)
primecount = 0
for item in primeli:
if (num - item) in primeli and item <= num - item:
primecount += 1
print(primecount)
打印结果
20
[2, 3, 5, 7, 11, 13, 17, 19]
2
假设有20个学生,学生名为westosX,学生分数在60~100之间,筛选出
成绩在90分以上得学生
方法一:
import random
stuInfo = {}
for i in range(20):
name = 'westos' + str(i)
score = random.randint(60,100)
stuInfo[name] = score
highscore = {}
for name,score in stuInfo.items():
if score > 90:
highscore[name] = score
print(highscore)
打印结果
{'westos3': 94, 'westos7': 91, 'westos10': 93, 'westos12': 94, 'westos16': 99}
方法二:列表生成式
import random
stuInfo = {}
for i in range(20):
name = 'westos' + str(i)
score = random.randint(60,100)
stuInfo[name] = score
print({name:score for name,score in stuInfo.items() if score > 90})
打印结果
{'westos1': 95, 'westos2': 91, 'westos3': 99, 'westos4': 95, 'westos5': 91, 'westos7': 96, 'westos9': 91, 'westos10':100, 'westos18': 91}
习题九
求最大公约数最小公倍数
概念
最大公约数:指两个或多个整数共有约数中最大的一个
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数
二者关系:两个数之积=最小公倍数最大公约数
MIN函数是Microsoft Excel中的公式,可表示为min(x,y)=0.5(x+y-|x-y|), 作用是返回给定参数表中的最小值。函数参数可以是数字、空白单元格、逻辑值或表示数值的文字串,如果参数中有错误值或无法转换成数值的文字时,将引起错误。
num1 = int((input('请输入第一个数值:'))) 字符串不能相加减所有要转换成整型(int)
num2 = int(input('请输入第二个数值:'))
min_num = min(num1,num2)
for i in range(1,min_num+1): i循环遍历1-min_num+1
if num1 % i == 0 and num2 % i ==0: 这两个数值除以i的余都必须等于0
gys = i 最公约数
gbs = (num2*num1)/gys 最小公倍数
print('%d和%d的最大公约数是:%d' %(num1,num2,gys))
print('%d和%d的最大公约数是:%d' %(num1,num2,gbs))
打印结果
请输入第一个数值:50
请输入第二个数值:20
50和20的最大公约数是:10
50和20的最大公约数是:100
习题十
99乘法表
为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串。
print默认是打印一行,结尾加换行。end=’ '意思是末尾不换行,加空格
for i in range(1,10):
#print(i)
for j in range(1,1+i):
print('%d*%d=%d\t' %(i,j,i*j),end='\n')
(end='\n'表示打印完一行换行,\t相当于空格)