7.6 练习
输入正整数数字n
```shell
n = int(input())
```
九九乘法表
```shell
for i in range(0,10)
row = list()
for j in range (i,10)
row.append(f”{i}{j}={ij}”)
print(“ “.join(row))
```
字符数量统计
```shell
s = input()
a_num = 0
b_num = 0
for ch in s
if ch == “a”:
a_num += 1
if ch == “b”:
b_num += 1
print(a_num,b_num)
```
三位数判断
```shell
def func(x)
s = str(x)
a,b,c = int(s[0]),int(s[1]),int(s[2])
if a 3 + b 3 + c ** 3 == x:
return True
else:
return False
num = int(input())
for i in range (100,n+1)
if func(i):
print(i)
```
列表向右移动
```shell
num_list = list( map(int,input().split() ) ) #字符串输入转数字列表
K = int(input())
n = len(list)
ans = [ str(lst[num_list(i-k)%n]) for i in range(n) ]
print(“ “.join(ans))
如果还是无法理解,可以使用另一种写法来完成。
lst = list(map(int, input().split()))
k = int(input())
n = len(lst)
ans = [“”] * n
for i in range(n):
ans[(i+k)%n] = str(lst[i])
print(“ “.join(ans))
```
数组数值统计(比大小)
```shell
nums = list(map(int,input().split()) )
ans_max= nums[0]
ans_min= nums[0]
ans_sum= 0
for num in nums:
if num > ans_max:
ans_max = num
if num < ans_min:
ans_min = num
ans_sum += num
print(ans_min, ans_max, ans_sum)
```
二维数组修改
```shell
n, m = map(int, input().split())
mat = list()
for i in range(n):
mat.append(list(map(int, input().split()))) # 进行俩次输入
for i in range(n):
for j in range(m):
if mat[i][j] <= 0:
mat[i][j] = 0
elif mat[i][j] >= 10:
mat[i][j] = 10
for row in mat:
print(“ “.join(list(map(str, row))))
```
LC1603. 设计停车系统
请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。
请你实现 ParkingSystem 类:
- ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。
- bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有三种类型:大,中,小,分别用数字 1, 2 和 3 表示。一辆车只能停在 carType 对应尺寸的停车位中。如果没有空车位,请返回 false ,否则将该车停入车位并返回 true 。
```shell
class ParkingSystem(object):
def init(self,big:int,middle:int,small:int):
self.big = big
self.middle = middle
self.small = small
def addCar(self,carType:int):
if carType == 1:
if self.big == 0:
return False
else:
self.big = self.big - 1
elif carType == 2:
if self.middle == 0:
return False
else:
self.middle = self.middle - 1
elif carType == 3:
if self.small == 0:
return False
else:
self.small = self.small - 1
return True
ans = list()
n = int(input())
park_name,a,b,c = input().split()
big,middle,small = int(a),int(b),int(c)
Park_1 = ParkingSystem(big,middle,small)
for i in range(n-1):
park_name,num = input().split()
num = int(num)
ans.append(Park_1.addCar(num))
for res in ans:
print(“true” if res else “false”)
```
if not 判断是否为NONE
合理括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 1、左括号必须用相同类型的右括号闭合。
- 2、左括号必须以正确的顺序闭合。
```shell
class Solution:
def isValid(self, s: str) -> bool:
# 当字符串长度为奇数的时候,属于无效情况,直接返回 False
if len(s) % 2 == 1:
# 无效情况,返回 False
return False
# 构建一个栈,用来存储括号
stack = list()
# 遍历字符串数组中的所有元素
for c in s :
# 如果字符为左括号 ( ,那么就在栈中添加对左括号 (
if c == '(' :
# 添加对左括号 (
stack.append('(')
# 如果字符为左括号 [ ,那么就在栈中添加对左括号 [
elif c == '[' :
# 添加对应的右括号 ]
stack.append('[')
# 如果字符为左括号 { ,那么就在栈中添加对左括号 {
elif c == '{' :
# 添加对应的右括号 }
stack.append('{')
else:
if not stack:
return False
top = stack[-1]
if (top == '(' and c == ')' ) or (top == '[' and c == ']' ) or (top == '{' and c == '}') :
stack.pop()
else :
return False
return not stack
```
逆波兰表示法
根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
注意 两个整数之间的除法只保留整数部分,向零截断。
可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
输入:tokens = [“2”,”1”,”+”,”3”,”“]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
# 使用一个列表作为栈,存储操作数,从左到右遍历逆波兰表达式
result = []
# 遍历字符串数组
for token in tokens:
# 如果是运算符
if token in "+-*/":
# 先出栈的是右操作数
rightNum = result.pop()
# 后出栈的是左操作数
leftNum = result.pop()
# 计算结果
if token == "+":
ans = leftNum + rightNum
elif token == "-":
ans = leftNum - rightNum
elif token == "*":
ans = leftNum * rightNum
elif token == "/":
ans = int(leftNum / rightNum)
else:
# 转换为数字
ans = int(token)
# 存储结果
result.append(ans)
# 返回栈顶元素
return result[-1]
总结
if not stack :用于检查列表是否为空
如果栈已经为空,执行代码
pairs = [(‘(‘, ‘)’), (‘{‘, ‘}’), (‘[‘, ‘]’)]
if (ch_stack_top, ch) not in pairs:
用于判断是否配对
self.q = deque()用于队列,先入先出
self.q.popleft():将窗口最左边的元素移除去
self.q.append(val)加入队列
“”.join(stack) 列表转字符串
h = list(map(int, input().split())) 输入列表
lst = list(zip(h, w, idx)) 整合为三元的元组,组成一个新的列表lst
lst.sort() 直接对lst排序,会先按照身高排序,再按照体重排序,再按照编号排序
内置函数eval()能够直接计算一个字符串表达式的值,能够识别加减乘除以及括号。
判断数字:if ‘0’ <= ch <= ‘9’
字符: elif ch >= ‘a’ and ch <= ‘z’:
in range(0,count)
names = path.split(“/“)分割
