函数练习python
01.计算车费
题目描述
小红打车,起步价8元(3公里), 每公里收费 2 元,她打车行驶了 n 公里,通过函数封装并计算车费
输入描述
输入一个公里数
输出描述
输出应付车费
示例
输入:
5
输出:
12
def fare(km: int) -> int:
"""计算车费"""
if 0 < km <= 3:
money = 8
else:
money = 8 + (km - 3) * 2
return money
km = int(input("输入一个公里数:"))
print(fare(km))
02.整数叠加
题目描述
读取一个0到1000之间的整数,并计算它各位数字之和
输入输出描述
输入一个[0,1000]之间的整数
输出该数字的各位数字之和
提示
需要使用内置函数 len() 或者 for循环
示例1
输入:
999
输出:
27
解释:
999各位数之和为9 + 9 + 9 = 27
def add(num):
"""遍历字符串中的每一个字符并将其转换为整型后相加"""
digit=0
for char in num:
digit+=int(char)
return digit
n = input("输入0-1000间的整数:")
print(add(n))
03.时间拆分
题目描述
输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天
输入描述
输入一个分钟数
输出描述
输出两行,第一行为年数,第二行为天数
示例
输入:
1000000000
输出:
190202
214
def div_times(times):
""" 换算时间"""
day = times /(24 * 60)
year = day /365
return year, day
times = int(input("输入分钟数:"))
year, day = div_times(times)
print(f"{year}\n{day}")
04.回文素数
题目描述
回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数
输出显示前100个回文素数,每行显示10个
示例
2 3 5 7 11 101 131 151 181 191
def decide_ss(num):
"""判断是否是素数"""
for i in range(2,int(num**0.5)+1):
if num%i==0:
return False
return True
def decide_hw(num):
"""判断是否为回文数"""
num_str=str(num)
if num_str==num_str[::-1]:
return True
else:
return False
index=2
count=0
while True:
if decide_ss(index)and decide_hw(index)==True:
print(index,end=" ")
count+=1
if count%10==0:
print()
index+=1
if count==100:
break
05.反素数
题目描述
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数
输出显示前100个反素数,每行显示10个
def decide_ss(num):
"""判断是否为素数"""
for i in range(2,int(num**0.5)+1):
if num%i==0:
return False
return True
def decide_hw_and_f_ss(num):
num_f=int(str(num)[::-1])
return decide_ss(num)and decide_ss(num_f)and str(num)!=str(num_f)
index=2
count=0
while True:
if decide_hw_and_f_ss(index):
print(index,end=" ")
count+=1
if count%10==0:
print()
index+=1
if count==100:
break
06.双素数
题目描述
双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数
输出显示小于1000的双素数
def decide_ss(num):
"""判断是否为素数"""
for i in range(2,int(num**0.5)+1):
if num%i==0:
return False
return True
count=0
for i in range(3,1000,2):
if decide_ss(i) and decide_ss(i+2):
print(f"{i} {i+2}",end=" ")
count+=1
if count%5==0:
print()
07.梅森素数
如果一个素数可以写成$2^p-1$的形式,其中p是某个正整数,那么这个素数就称作梅森素数
输出p≤31的所有梅森素数
ef decide_ss(num):
"""判断是否为素数"""
for i in range(2,int(num**0.5)+1):
if num%i==0:
return False
return num
for i in range(2,32):
"""判断是否为梅森素数"""
ms_num=2**i-1
if decide_ss(ms_num):
print(ms_num,end=" ")
08.堆叠相加
题目描述
现有堆叠相加模式$a+aa+aaa+aaaa+aaaaa+......$
例如:$2+22+222+2222+22222$,其中a为2,且有5组数字
输入输出描述
输入两个数据分别为数字a和组数n
输出按照堆叠相加模式算出的和
示例
输入:
3 4
输出:
3702
解释:
3 + 33 + 333 + 3333 = 3702
def overlap_add(n1,n2):
item=0
result=0
for i in range(n2):
item=item*10+n1
result+=item
return result
#输入两个整数用空格分开
num1,num2=map(int,input("输入两个数分别为数字和组数:").split())
print(overlap_add(num1,num2))
09.检测密码
题目描述
一些网站会给密码强加一些规则:
(1)密码必须至少有8个字符
(2)密码只能包含英文字母和数字
(3)密码应该至少包含两个数字
(4)密码应该至少包含两个大写字母
如果密码符合规则,输出Yes;否则输出No
输入输出描述
输入一串密码
输出该密码是否符合规则
示例1
输入:
123456ab
输出:
No
示例2
输入:
123abcABC
输出:
Yes
def decide_number(num):
"""判断数字的个数"""
item = 0
for char in num:
if 48 <= ord(char) <= 57:
item += 1
return item >= 2
def decide_ch(num):
"""判断大写字母的个数"""
item = 0
for char in num:
if 65 <= ord(char) <= 91:
item += 1
return item >= 2
def decide_pw(pwd):
count = 0
if len(pwd) <= 8:
return "No"
"""isalnum() 判断字符串中是否含数字和字母"""
if pwd.isalnum() and decide_number(pwd) and decide_ch(pwd):
return "Yes"
else:
return "No"
password = input()
print(decide_pw(password))
10.指定等级
题目描述
读入学生成绩,获取最高分best,然后根据下面的规则赋等级值:
(1)如果分数≥best-10,等级为A
(2)如果分数≥best-20,等级为B
(3)如果分数≥best-30,等级为C
(4)如果分数≥best-40,等级为D
(5)其他情况,等级为F
输入输出描述
输入两行,第一行输入学生人数n,第二行输入n个学生的成绩
输入n行,表示每个学生的成绩等级
示例
输入:
4
40 55 70 58
输出:
学生0分数为40,等级为C
学生1分数为55,等级为B
学生2分数为70,等级为A
学生3分数为58,等级为B
def level(list):
best = max(list)
list_level=[]
#把每一位学生成绩的等级输入到list_level列表中
for i in range(len(list)):
if list[i] >= best-10:
list_level.append("A")
elif list[i] >= best-20:
list_level.append("B")
elif list[i] >= best-30:
list_level.append("C")
elif list[i] >= best-40:
list_level.append("D")
else:
list_level.append("F")
return list_level
students_number=int(input("输入学生人数:"))
grade=input("输入学生成绩(以空格分隔):")
#用列表推导式输入学生成绩到成绩列表中
list_grade=[int(item) for item in grade.split()]
list_level2=level(list_grade)
for i in range(len(list_grade)):
print(f"学生{i}分数为{list_grade[i]},等级为{list_level2[i]}")