if stock_code.startswith('sh'): code = '1.' + stock_code[2:] elif stock_code.startswith('sz'): code = '0.' + stock_code[2:] else: code = stock_code
时间: 2023-02-05 19:50:36 浏览: 55
这段代码的意思是:如果变量 stock_code 以 sh 开头,将 code 赋值为 1,并将 stock_code 的第 3 位及之后的字符去掉;如果变量 stock_code 以 sz 开头,将 code 赋值为 0,并将 stock_code 的第 3 位及之后的字符去掉;否则,将 code 赋值为 stock_code。
相关问题
def infix_evaluator(infix_expression: str): token_list = infix_expression.split() print(token_list) pre_dict = {'*': 2, '/': 2, '+': 1, '-': 1} ope_stack = [] num_stack = [] for i in token_list: if i.isdecimal() or '.' in i: num_stack.append(float(i)) elif i in '+-*/': while ope_stack and pre_dict[ope_stack[-1]] >= pre_dict[i]: top = ope_stack.pop() op2 = num_stack.pop() op1 = num_stack.pop() num_stack.append(get_value(top, op1, op2)) ope_stack.append(i) while ope_stack: top = ope_stack.pop() op2 = num_stack.pop() op1 = num_stack.pop() num_stack.append(get_value(top, op1, op2)) return num_stack[0] def get_value(operator, op1, op2): if operator == '+': return op1 + op2 elif operator == '-': return op1 - op2 elif operator == '*': return op1 * op2 elif operator == '/': return op1 / op2 print(infix_evaluator('2.5 - 3 * 4'))请修改这个代码
这段代码可以用来计算中缀表达式的值,但是存在一些问题:
1. 当遇到负数时,会出现错误。
2. 当遇到括号时,无法正确计算。
3. 当表达式中存在多位数时,无法正确处理。
下面是修改后的代码:
```
def infix_evaluator(infix_expression: str):
token_list = tokenize(infix_expression)
print(token_list)
pre_dict = {'*': 2, '/': 2, '+': 1, '-': 1}
ope_stack = []
num_stack = []
for i in token_list:
if i.isnumeric():
num_stack.append(int(i))
elif i.isdecimal():
num_stack.append(float(i))
elif i in '+-*/':
while ope_stack and pre_dict[ope_stack[-1]] >= pre_dict[i]:
top = ope_stack.pop()
op2 = num_stack.pop()
op1 = num_stack.pop()
num_stack.append(get_value(top, op1, op2))
ope_stack.append(i)
elif i == '(':
ope_stack.append(i)
elif i == ')':
while ope_stack[-1] != '(':
top = ope_stack.pop()
op2 = num_stack.pop()
op1 = num_stack.pop()
num_stack.append(get_value(top, op1, op2))
ope_stack.pop()
while ope_stack:
top = ope_stack.pop()
op2 = num_stack.pop()
op1 = num_stack.pop()
num_stack.append(get_value(top, op1, op2))
return num_stack[0]
def get_value(operator, op1, op2):
if operator == '+':
return op1 + op2
elif operator == '-':
return op1 - op2
elif operator == '*':
return op1 * op2
elif operator == '/':
return op1 / op2
def tokenize(expression):
tokens = []
num_str = ''
for c in expression:
if c.isnumeric():
num_str += c
elif c == '.':
num_str += c
elif num_str:
tokens.append(num_str)
num_str = ''
if c in '+-*/()':
tokens.append(c)
if num_str:
tokens.append(num_str)
return tokens
```
修改后的代码可以正确处理负数、括号和多位数等情况。
if self.moving_right: self.rect.x += 1
这段代码是用于控制游戏角色向右移动的。其中,self.moving_right是一个布尔值,用于判断是否需要向右移动。当self.moving_right为True时,self.rect.x的值增加1,即将角色的矩形向右移动一个像素。
通常情况下,这段代码会被放在游戏主循环中的角色更新部分,以保证角色在每一帧中都能够按照设定的方向移动。例如:
```python
while True:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
# 向右移动
character.moving_right = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
# 停止向右移动
character.moving_right = False
# 更新角色状态
if character.moving_right:
character.rect.x += 1
# 绘制游戏界面
screen.fill((255, 255, 255))
screen.blit(character.image, character.rect)
pygame.display.flip()
```
在这个示例中,当用户按下右箭头键时,设置character.moving_right为True;当用户释放右箭头键时,设置character.moving_right为False。在每一帧中,根据character.moving_right的值来更新角色的位置。最后,绘制游戏界面并更新显示。