Python期末成绩
a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
s=a*0.2+b*0.3+c*0.5
s=int(s)
print(s)
翻转字典的键值对输出
try:
d = {}
keyy = input()
valuee = eval(keyy)
for i in valuee:
d[valuee[i]] = i
print(d)
except:
print('输入错误')
班长选举
d = {'Tom':0, 'Rose':0, 'Bill':0}
for i in range(8):
name = input()
if name in d:
d[name] += 1
for key,value in d.items():
if value == max(d.values()):
print(key,value)
寻找不含重复字符的子串
s=input()
def find(s):
n=len(s)
res=[]
for i in range (n):
for j in range(i+1,n+1):
if len(set(s[i:j]))==j-i and s[i:j] not in res:
res.append(s[i:j])
return(res)
print(find(s))
英语单词词频统计
import re
from collections import Counter
def analyze_word_usage(article):
# 将文章转换为小写,并分割为单词列表
words = re.findall(r'\b\w+\b', article.lower())
# 使用Counter统计单词出现次数
word_counts = Counter(words)
# 获取出现频率排名前三的单词及其出现次数
top_words = word_counts.most_common(3)
return top_words
# 读取文章
article =input()
# 分析单词使用情况
top_words = analyze_word_usage(article)
# 输出结果
print("出现频率最高的三个单词是:")
for word, count in top_words:
word_output = f"{word:^5}"
count_output = f"{count:^3}次"
print(f"{word_output}:{count_output}")
简单数字加密
s = input()
f = 0
flag = 1 #输入合法
for i in s:
if s>'9' or s<'0'or len(s)!=4:
flag = 0
break
if flag == 1:
si = int(s)
if si<1000 or si>9999:
flag = 0
p = []
if flag==0:
print("输入不合法!")
else:
for i in range(4):
p.append((ord(s[i])+5)%10)
for i in p[::-1]:
print(i,end='')
食材搭配
import re
import itertools
def generate_cuisines(ingredients_str):
cuisines = []
ingredients = re.split('[^\\u4e00-\\u9fa5]+', ingredients_str)
ingredients = sorted(ingredients)
for ingredient in ingredients:
if ingredient not in cuisines:
cuisines.append(ingredient)
combinations = itertools.combinations(cuisines, 2)
cuisines = sorted(combinations)
cuisine_strs = ['+'.join(cuisine) for cuisine in cuisines]
return cuisine_strs
ingredients = input()
combine = generate_cuisines(ingredients)
for i in combine:
print(i,end=" ")
传感器数据分析
# 读取 sensor_data.in 文件
with open("sensor_data.in", "r", encoding="utf-8") as f:
lines = f.readlines()
# 遍历每一行数据,提取出时间和光照两个数据
output = ""
for line in lines:
data = line.strip().split()
time = data[1]
light = float(data[4])
# 如果光照大于 47,则输出到 output 字符串中
if light > 47:
output += f"{time} {light}\n"
# 将 output 输出到 sensor_data.out 文件中
with open("sensor_data.out", "w", encoding="utf-8") as f:
f.write(output)
简单公式计算
a=input()
sum = 0.0
if a.isdigit():
if a[0] == '0':
print("输入不合法!")
else:
if int(a) <= 1000000:
if (int(a)) % 2 == 0:
i = 2
while i <= int(a):
sum = sum + 1 / i
i = i + 2
else:
i = 1
while i <= int(a):
sum = sum + 1 / i
i = i + 2
print('{:.2f}'.format(sum))
else:
print("输入不合法!")
else:
print("输入不合法!")
回文数字
a=input()
b=len(a)
flag=0
for i in range(0,b):
if(a[i]!=a[b-i-1]):
flag=1
if flag==1:
print("False")
else:
print("True")
酒驾判定
x = input()
x = int(x)
if x<20:
print("不构成饮酒驾驶行为,可以开车,但要注意安全!")
elif 20<=x<80:
print("已构成饮酒驾驶行为,请不要开车!")
else:
print("已构成醉酒驾驶行为,千万不要开车!")
三角形形状检查
a=input()
b=input()
c=input()
a = int(a)
b = int(b)
c = int(c)
if (a+b>c and abs(a-b)<c) or (a+c>b and abs(a-c)<b) or (c+b>a and abs(c-b)<a):
if a==b==c:
print("等边三角形")
elif a==b or a==c or b==c:
print("等腰三角形")
else:
print("普通三角形")
else:
print("不构成三角形")
水仙花判断
s=input()
(a,b,c,s) = (int(s[0]),int(s[1]),int(s[2]),int(s))
z = a**3+b**3+c**3
if z==s:
print("是")
else:
print("不是")
序列求和
m = int(input())
n = int(input())
s = 0
for i in range(m,n-1):
if i%5==0 and i%7==0:
s+=i
print(s)
计算圆周率——无穷级数法
a = float(input())
a = int(1/a)
# a = 500000
s = 0.0
f = 1.0
for i in range(1,a+1,2):
s += 1/i * f
f *= -1
print('{0:.8f}'.format(4*s))
扑克牌游戏
import random
def printList(arr):
for s in arr:
print(s + ' ', end='')
print()
num = int(input())
seed = int(input())
arr = []
pk = '♠2 ♠3 ♠4 ♠5 ♠6 ♠7 ♠8 ♠9 ♠10 ♠J ♠Q ♠K ♠A ♥2 ♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K ♥A ♣2 ♣3 ♣4 ♣5 ♣6 ♣7 ♣8 ♣9 ♣10 ♣J ♣Q ♣K ♣A ♦2 ♦3 ♦4 ♦5 ♦6 ♦7 ♦8 ♦9 ♦10 ♦J ♦Q ♦K ♦A jokers JOKERS'
for i in pk.split(' '):
arr.append(i)
oldArr = arr.copy()
print("参与游戏的人数:" + str(num))
print("新牌顺序")
printList(oldArr)
print("洗牌顺序")
random.seed(seed)
random.shuffle(arr)
printList(arr)
arrs = []
for i in range(num):
arrs.append([])
for col in range(54 // num):
for row in range(num):
arrs[row].append(arr[col*num + row])
print("每个人手上分到的牌")
for i in range(num):
printList(arrs[i])
print("每个人手上排序的牌")
for i in range(num):
for j in oldArr:
for z in arrs[i]:
if(j == z):
print(j+" ", end='')
break
if i != num-1:
print()
凯撒密码——加密
str = input()
s = list(str)
n = len(str)
for i in range(0,n):
if 'A' <= s[i] <= 'z' or '0' <= s[i] <= '9':
x = ord(s[i]) + 3
if x > ord('z'):
x = x - ord('z') + ord('A') - 1
s[i] = chr(x)
print(s[i],end='')
素数筛选
str = input().split()
n = len(str)
for i in range(n):
str[i] = int(str[i])
# print(str[i],end=' ')
for i in range(n):
for j in range(2,str[i]):
if str[i]%j==0:
break
else:
print(str[i],end=' ')
日期计算
s = input().split('-')
n = len(s)
for i in range(n):
s[i] = int(s[i])
# print(s[i],end=' ')
m = [31,28,31,30,31,30,31,31,30,31,30,31]
if s[0] % 4 == 0:
m[1]+=1
sum = 0
for i in range(0,s[1]-1):
sum += m[i]
sum += s[2]
print(sum)
摩斯密码翻译器
s = input()
morse = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
punctuation = {'.': '.-.-.-', ':': '---...', ',': '--..--', ';': '-.-.-.', '?': '..- -..', '=': '-...-', "'": '.----.',
'/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '"': '.-..-.', '(': '-.--.', ')': '-.--.-',
'$': '...-..-', '&': '·-···', '@': '.--.-.', ' ': ''}
for i in range(len(s)):
if 'a'<=s[i]<='z':
tmp=ord(s[i])-ord('a')
print(morse[tmp],end=' ')
elif 'A'<=s[i] <='Z':
tmp=ord(s[i])-ord('A')
print(morse[tmp], end=' ')
elif '0'<=s[i]<='9':
tmp=ord(s[i])-ord('0')
print(digit[tmp],end=' ')
elif s[i] in punctuation:
print(punctuation.get(s[i]),end=' ')
else:
print(s[i],end=' ')
字符统计
import random
txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.'''
l = list(txt)
inp = input().split()
x,m,n = int(inp[0]),int(inp[1]),int(inp[2])
random.seed(x)
random.shuffle(l)
l = l[m:n+1]
d = {}
for i in l:
d[i]=l.count(i)
l = sorted(d.items(),key=lambda x:x[1],reverse=True)
# print(l)
c = 0
for i in range(len(l)):
c += 1
if c>5:
break
print(f'{l[i][0]}:{l[i][1]}')
集合操作
import random
txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.'''
l = list(txt)
inp = input().split()
x,m1,n1,m2,n2 = int(inp[0]),int(inp[1]),int(inp[2]),int(inp[3]),int(inp[4])
random.seed(x)
random.shuffle(l)
l1 = l[m1:n1]
l2 = l[m2:n2]
# print(l1)
# print(l2)
print("lt1中出现了{}个不同的字符".format(len(set(l1))))
print("lt2中出现了{}个不同的字符".format(len(set(l2))))
print("同时出现在lt1和lt2中的字符为:",end='')
l = list(set(l1)&set(l2))
l.sort()
for i in l:
print(i,end=' ')
print("\n出现在lt1,但没在lt2中的字符为:",end='')
l = list(set(l1)-set(l2))
l.sort()
for i in l:
print(i,end=' ')
身份证有效性判断
sfz=input()
le=len(sfz)
sym=1
check=0
xs=[7,9, 10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
hm=['1','0','X','9','8','7','6','5','4','3','2']
if le!=18:
print("身份证无效")
else:
for i in range(17):
check=check+int(sfz[i])*xs[i]
check=check%11
if hm[check]!=sfz[le-1]:
sym=0
year=int(sfz[6:10])
month=int(sfz[10:12])
day=int(sfz[12:14])
if year>2023 or month>12 or day>31:
sym=0
yf=[31,28,31,30,31,30,31,31,30,31,30,31]
ryf=[31,29,31,30,31,30,31,31,30,31,30,31]
if (year %4==0 and year%100!=0) or(year%400==0):
if day>ryf[month-1]:
sym=0
else :
if day>yf[month-1]:
sym=0
if sym==0:
print("身份证无效")
else:
print("身份证有效")
素数筛选
m,n=input().split()
m=int(m)
n=int(n)
for i in range(m,n+1):
for j in range(2,i):
if i%j==0:
break
else:
print(i,end=' ')
字符统计排序
input_str = input()
# 统计不同类型字符的数量
unique_chars = set(input_str)
num_unique_chars = len(unique_chars)
print("总共出现了{}种字符".format(num_unique_chars))
# 统计字母和数字字符的出现次数
count_dict = {}
for char in input_str:
if char.isalnum():
count_dict[char] = count_dict.get(char, 0) + 1
# 输出出现次数最多的前3个字符及次数
sorted_counts = sorted(count_dict.items(), key=lambda x: x[1], reverse=True)
print("{}:{}次".format(sorted_counts[0][0], sorted_counts[0][1]))
if len(sorted_counts) > 1:
print("{}:{}次".format(sorted_counts[1][0], sorted_counts[1][1]))
if len(sorted_counts) > 2:
print("{}:{}次".format(sorted_counts[2][0], sorted_counts[2][1]))
isbn判别
a=input()
a1=int(a[0])*10
a2=int(a[2])*9
a3=int(a[3])*8
a4=int(a[4])*7
a5=int(a[6])*6
a6=int(a[7])*5
a7=int(a[8])*4
a8=int(a[9])*3
a9=int(a[10])*2
a10=int(a[12])
sum=a1+a2+a3+a4+a5+a6+a7+a8+a9
d=sum%11
m=11-d
if(m==a10):
print("正确")
else:
print("不正确")
if(m==10):
t='X'
elif(m==11):
t='0'
else:
t=str(m)
print("正确的应该是{}".format(a[0]+a[2]+a[3]+a[4]+a[6]+a[7]+a[8]+a[9]+a[10]+t))
数组接雨
s = input()
l = s.split(',')
a = []
for i in l:
a.append(int(i))
x, y, res = 0, 1, 0
while True:
if len(a) == 1 or len(a) == 2:
print(0)
break
if y == len(a):
if a[y - 1] >= a[x]:
break
else:
res -= (a[x] - a[y - 1]) * (y - x - 1)
for i in range(x + 1, y):
if a[i] > a[y - 1]:
res += a[i] - a[y - 1]
break
if a[x] > a[y]:
res += a[x] - a[y]
y += 1
elif a[x] == a[y]:
x = y
y += 1
else:
x = y
y += 1
print(res)
兔子问题
month = int(input())
if month == 1 or month == 2: #兔子从第三个月才开始生兔子,所以前两个月单拿出来
print("总共有兔子数为1只")
else:
a = 1
b = 1
c = 0
for i in range(3, month + 1):
c = a + b #第n个月等于第n-1个月+第n-2个月
a = b
b = c
print(c)
青蛙跳
class Solution:
def jumpfloor(self,n):
x,y=1,1
for i in range(n):
x,y=y,x+y
return x
n=int(input())
s=Solution()
print(s.jumpfloor(n))
峰值查找
class Solution:
def findPeakElement(self, nums: list[int]) -> int:
n = len(nums)
left, right = 0, n - 1
while left < right:
mid = (left + right) // 2
if nums[mid] > nums[mid + 1]:
right = mid
else:
left = mid + 1
return left
if __name__ == '__main__':
s = Solution()
nums = list(map(int, input().split()))
print(s.findPeakElement(nums))
摩斯密码解密
s = input().split(" ")
morse = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
punctuation = {'.': '.-.-.-', ':': '---...', ',': '--..--', ';': '-.-.-.', '?': '..- -..', '=': '-...-', "'": '.----.',
'/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '"': '.-..-.', '(': '-.--.', ')': '-.--.-',
'$': '...-..-', '&': '·-···', '@': '.--.-.', ' ': ''}
# print(s)
p = int(0)
list1 = list(punctuation.values())
list2 = list(punctuation.keys())
for i in s:
if i in morse:
p = morse.index(i)
print(chr(p+ord('a')),end='')
elif i in digit:
p = digit.index(i)
print(chr(p+ord('0')),end='')
elif i in punctuation.values():
print(list2[list1.index(i)],end='') # .-.-.-
else:
print(i,end='') # . -
公式计算
def f(x):
s = 1
for i in range(1,x+1):
s*=i
return s
m = int(input())
s = 0
for i in range(m+1):
s+=f(i)
print(s)
寻找反素数
def ss(x):
f=1
for i in range(2,x):
if x%i==0:
f=0
break
return f
def nx(num):
a = 0
while num > 0:
a = a*10 + num%10
num = num//10
return a
m,n=input().split()
m = int(m)
n = int(n)
list1 = []
list2 = []
list3 = []
for i in range(m,n+1):
if ss(i):
list1.append(i)
# print(list1)
for i in list1:
t = nx(i)
if ss(t):
list2.append(i)
# print(list2)
for i in list2:
a = str(i)
b = a[::-1]
if a!=b:
list3.append(i)
for i in list3:
print(i,end=' ')
维吉尼亚加密
secret_key = input() #密钥
plain_text = input() #明文
# plain_text = "The harsh winter will be gone and spring is around the corner"
# secret_key = "winter"
i=j=0
for i in range(len(plain_text)):
a = plain_text[i]
if plain_text[i]==' ':
print(" ",end='')
continue
b = secret_key[j]
j+=1
j%=len(secret_key)
if "A"<=a<="Z" and "A"<=b<="Z":
s = ((ord(a)-65)+(ord(b)-65))%26
print(chr(s+65),end='')
elif "a"<=a<="z" and "a"<=b<="z":
s = ((ord(a)-97)+(ord(b)-97))%26
print(chr(s+97),end='')
elif "A"<=a<="Z" and "a"<=b<="z":
s = ((ord(a)-65)+(ord(b)-97))%26
print(chr(s+65),end='')
elif "a"<=a<="z" and "A"<=b<="Z":
s = ((ord(a)-97)+(ord(b)-65))%26
print(chr(s+97),end='')
elif "0"<=a<="9" and "A"<=b<="Z":
s = (int(a)+(ord(b)-65))%10
print(s,end='')
elif "0"<=a<="9" and "a"<=b<="z":
s = (int(a)+(ord(b)-97))%10
print(s,end='')
else:
print(a,end='')
信息脱敏
import re
with open('data.in', 'r', encoding='utf-8') as f:
data = f.read()
#把所有名字都逆序
data = re.sub(r'姓名:(.{2})(.{1})(.*)', r'姓名:\3\2\1', data)
#再只保留第一个字,其他的变成*
data = re.sub(r'姓名:(.{1})(.{1})(.*)', r'姓名:\1**', data)
#再处理身份证号
data = re.sub(r'身份证号:(.{6})(.{8})(.*)', r'身份证号:\1********\3', data)
#再处理手机号
data = re.sub(r'手机号:(.{3})(.{4})(.*)', r'手机号:\1****\3', data)
#写入文件
with open('data.out', 'w', encoding='utf-8') as f:
f.write(data)
#输出
print(data)
csv存json格式
import csv
import json
#读取文件
with open('movie.in', 'r', encoding='utf-8') as f:
data = f.read()
#把movie.in文件转换为movie.csv文件
with open('movie.csv', 'w', encoding='utf-8') as f:
f.write(data)
#读取csv文件
with open('movie.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
#第一行是key。后面的每一行是各自的value
keys = next(reader)
rows = [dict(zip(keys, row)) for row in reader]
#将list转换为json格式
with open('movie.json', 'w', encoding='utf-8') as f:
json.dump(rows, f, ensure_ascii=False, indent=4)
#json文件存到moive.out文件中
with open('movie.json', 'r', encoding='utf-8') as f:
data = f.read()
with open('movie.out', 'w', encoding='utf-8') as f:
f.write(data)
csv文件计算
import csv
with open('salary.in', 'r', encoding='utf-8') as f:
data = f.read()
with open('salary.csv', 'w', encoding='utf-8') as f:
f.write(data)
message = open('salary.csv', 'r', encoding='utf-8')
reader = csv.reader(message)
data = list(reader)
message.close()
f = open('salary.csv', 'w', encoding='utf-8',newline='')
writer = csv.writer(f)
data1 = [i for i in data[0]]
data1.append('一季度总收入')
writer.writerow(data1)
for i in range(1, len(data)):
data[i].append(int(data[i][1]) + int(data[i][2]) + int(data[i][3]))
f.close()
data2 = []
for i in range(1, len(data)):
data2.append(data[i])
data2.sort(key=lambda x: x[4], reverse=True)
f = open('salary.csv', 'a', encoding='utf-8',newline='')
writer = csv.writer(f)
for i in range(len(data2)):
writer.writerow(data2[i])
f.close()
with open('salary.csv', 'r', encoding='utf-8') as f:
data = f.read()
with open('salary.out', 'w', encoding='utf-8') as f:
f.write(data)
信息存csv文件
import csv
# 打开inf.in文件并读取数据
with open("inf.in", "r", encoding="utf-8") as f:
data = f.readlines()
# 将数据处理为列表形式
info_list = []
for i in range(len(data)//4):
name = data[i*4+0].split(":")[1].strip()
address = data[i*4+1].split(":")[1].strip()
ID_num = data[i*4+2].split(":")[1].strip()
phone_num = data[i*4+3].split(":")[1].strip()
info_list.append([name, phone_num, ID_num, address])
# 将列表写入inf.out文件
with open("inf.out", "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerow(["姓名", "手机号", "身份证号", "居住地"])
for info in info_list:
writer.writerow(info)
歌唱比赛统计
# 读取选手成绩数据
with open("sing.in", "r", encoding="utf-8") as f:
data = f.readlines()
# 处理数据,计算选手平均分
score_dict = {}
for item in data:
item_list = item.strip().split(",")
player = item_list[0]
score_list = [float(x) for x in item_list[1:]]
score_list.remove(max(score_list))
score_list.remove(min(score_list))
avg_score = round(sum(score_list)/len(score_list), 2)
score_dict[player] = avg_score
# 将成绩写入文件sing.out中
with open("sing.out", "w", encoding="utf-8") as f:
sorted_scores = sorted(score_dict.items(), key=lambda x: x[1], reverse=True)
for item in sorted_scores:
f.write("{}:{:.2f}\n".format(item[0], item[1]))
天气数据筛选
import csv
# 读取原始数据文件
with open('weather.in', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
# 获取表头
headers = next(reader)
# 筛选数据
filtered_data = [row for row in reader if row[1] == '阴' and int(row[3].strip('℃')) >= 1]
# 将筛选后的数据写入新文件
with open('weather.out', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
# 写入表头
writer.writerow(headers)
# 写入数据
writer.writerows(filtered_data)
json格式转存csv文件
import csv
import json
with open('movie_inf.in', 'r', encoding='utf-8') as f:
data = json.load(f)
header=list(data[0].keys())
with open('movie_inf.out', 'w',newline='', encoding='utf-8') as fi:
writer=csv.writer(fi)
writer.writerow(header)
for row in data:
writer.writerow(row.values())
销售数据统计
import csv
# 读取原始数据文件
with open('sale.in', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
# 获取表头
headers = next(reader)
# 内部列表推导式计算年度总销售量
data = [[row[0], *row[1:], str(sum(map(int, row[1:])))] for row in reader]
# 按年度总销售量降序排序
data.sort(key=lambda x: int(x[-1]), reverse=True)
# 将排序后的数据写入新文件
with open('sale.out', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
# 写入表头
writer.writerow(headers + ['年度总销售量'])
# 写入数据
writer.writerows(data)