https://blog.csdn.net/soonway2010/article/details/129932114
https://zhuanlan.zhihu.com/p/607575071
python语法:
输入为:19 *
n, c = input().split()
n = int(n)
输入为:150
f = int(input())
根号:
import math
math.sqrt(n) # 返回float
输出不换行:
print(f"{i}*", end='')
结果相连
numbers = [1, 2, 3]
# 下面这行代码会报错,因为列表中的元素是整数,不是字符串
# print(" ".join(numbers))
# 正确的做法是先将元素转换为字符串
str_numbers = [str(num) for num in numbers]
print(" ".join(str_numbers)) # 输出: 1 2 3
输入时候最好带一个strip
n = input().strip()
输入数组
str_list = input().split()
int_list = [int(num) for num in str_list]
# or
int_list = list(map(int, input().split()))
每个数字占5个字符宽度
print(f"{a + i:5}") # 右对齐
print(f"{a + i:<5}") # 左对齐
占4字符,不足补0
for i in range(10):
print(f"{i:04d}")
输出字符串A-B
a = input()
b = input()
b_set = set(b)
result = ''.join([c for c in a if c not in b_set])
print(result)
最大公约数
import math
d = math.gcd(a, b)
四舍五入
round(a / 2) # 银行家舍入法 (也称为“四舍六入五成双”)
(a + 1) // 2 # 四舍五入
import math
math.ceil(a)
math.floor(a)
求偶数的个数
n = int(input())
a = list(map(int, input().split()))
even_count = sum(1 for x in a if x % 2 == 0)
print(f"{n - ans} {ans}")
大小写
lower_text = text.lower()
upper_text = text.upper()
title_text = text.title() # 首字母大写
custom_text = ''.join(
char.upper() if i % 2 == 0 else char.lower()
for i, char in enumerate(text)
) # 自定义大小写
字符统计
count_L = text.count('L')
保留两位小数
formatted_num = f"{num:.2f}"
字典遍历
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
...
for key in my_dict:
...
for key in my_dict.keys():
...
for value in my_dict.values():
数组出现次数统计:
from collections import Counter
counter = Counter(arr)
# or
count_dict = {}
for string in str_list:
count_dict[string] = count_dict.get(string, 0) + 1
进制转换
# 假设字符串 s 是二进制形式
s = "1010" # 二进制表示的 10
# 将字符串 s 转换为整数
result = int(s, 2)
print(result) # 输出:10
num = 10
binary_str = bin(num)[2:] # 去掉前缀 '0b'
print(binary_str) # 输出:'1010'
num = 10
binary_str = f"{num:b}"
print(binary_str) # 输出:'1010'
字符串查找与替换
text.find("Python")(返回-1表示未找到)
# 原始字符串
s = "yny"
# 将 'y' 替换为 '0'
s = s.replace('y', '0')
# 将 'n' 替换为 '1'
s = s.replace('n', '1')
print(s) # 输出:010
计算数字字符串各位的和
n = int(input())
for _ in range(n):
t = input()
# 使用切片直接计算前三位和后三位的和
if sum(map(int, t[:3])) == sum(map(int, t[3:])):
print("You are lucky!")
else:
print("Wish you good luck.")
循环直到没有输入或有一个特定输入终止
for s in iter(input, ""): # 当输入为空字符串时停止
print(f"你输入的是: {s}")
输入数字简化:
def read_ints():
return map(int, input().split())
a, b = read_ints()
输入数组简化:
def read_array(data_type):
return list(map(data_type, input().split()))
# 读取整数数组
int_nums = read_array(int)
# 读取浮点数数组
float_nums = read_array(float)
找到每一位都是1,且能被n整除的数,并计算商
n = int(input())
now = 1
num = 1
ans = 0
while True:
ans = ans * 10 + (num // n)
if num % n == 0:
print(f"{ans} {now}")
break
num = (num % n) * 10 + 1
now += 1
字符串切片
# s[start:stop:step] 是切片的基本语法。
s = "Hello, World!"
reversed_s = s[::-1]
print(reversed_s) # 输出: !dlroW ,olleH
一道有些语法知识的题目
L1-025 正整数A+B
分数 15
作者 陈越
单位 浙江大学
题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。
输入格式:
输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。
输出格式:
如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?。
输入样例1:
123 456
输出样例1:
123 + 456 = 579
输入样例2:
1. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla...33
输出样例3:
? + ? = ?
def is_valid_positive_integer(s):
"""判断字符串是否为合法的正整数(在 [1, 1000] 范围内)"""
try:
num = int(s) # 尝试转换为整数
return 1 <= num <= 1000 # 检查是否在范围内
except ValueError:
return False # 如果转换失败,返回 False
def main():
# 读取输入
input_str = input().strip()
# 以第一个空格分隔 A 和 B
space_index = input_str.find(" ")
a_str = input_str[:space_index]
b_str = input_str[space_index + 1:]
# 判断 A 和 B 是否合法
a_valid = is_valid_positive_integer(a_str)
b_valid = is_valid_positive_integer(b_str)
# 格式化输出
a_output = a_str if a_valid else "?"
b_output = b_str if b_valid else "?"
sum_output = str(int(a_str) + int(b_str)) if a_valid and b_valid else "?"
# 打印结果
print(f"{a_output} + {b_output} = {sum_output}")
# 调用主函数
if __name__ == "__main__":
main()
正则表达式
import re
def replace_6(s):
# 使用正则表达式查找所有连续的 6
# 如果连续 6 的数量超过 9,替换为 27
s = re.sub(r'6{10,}', '27', s)
# 如果连续 6 的数量超过 3 但不超过 9,替换为 9
s = re.sub(r'6{4,9}', '9', s)
return s
# 输入句子
sentence = input()
# 替换并输出结果
result = replace_6(sentence)
print(result)
避免重复元素用set
a = set()
a.add(id)