-
初始化:
- 初始化当前输入的数字为。
- 初始化结果为。
- 初始化表达式为空。
-
输入数字:
- 用户输入一个数字,并将其转换为整数或浮点数。
- 显示当前输入的数字。
-
执行基本运算:
- 用户输入加减乘除运算符。
- 按下运算键,执行运算。
- 显示结果。
-
处理括号:
- 按下括号键,有两种输入方式:
- 先输入数字,然后按括号。
- 直接输入括号。
- 按下括号键,有两种输入方式:
-
处理平方:
- 按下平方键,执行平方运算。
- 显示结果。
-
处理平方根:
- 按下平方根键,执行平方根运算。
- 显示结果。
-
处理倒数:
- 按下倒数键,执行倒数运算。
- 显示结果。
-
处理百分比:
- 按下百分比键,执行百分比运算。
- 显示结果。
-
处理括号内部的运算顺序:
- 按下括号键,执行内部运算顺序。
- 处理平方、平方根、倒数、百分比等运算顺序。
-
处理进制转换:
- 按下转换键,执行进制转换。
- 输入目标进制并转换当前数字。
-
处理单位转换:
- 按下转换键,执行单位转换。
- 输入目标单位并转换当前数字。
以下是完整的程序代码:
import math
current_num = 0
result = 0
expression = ''
while True:
input_num = input("输入数字: ")
if not input_num:
break
try:
current_num = int(input_num)
except ValueError:
print("输入不正确,请重新输入数字。")
break
# 显示当前输入的数字
print(f"当前输入的数字: {current_num}")
# 输入操作符
while True:
op = input("输入操作符: + - * / ")
if not op:
print("错误操作符,重新输入。")
break
try:
if op == '+':
result = current_num + 2
current_num = result
print(f"当前结果: {result}")
elif op == '-':
result = current_num - 2
current_num = result
print(f"当前结果: {result}")
elif op == '*':
result = current_num * 2
current_num = result
print(f"当前结果: {result}")
elif op == '/':
result = current_num / 2
current_num = result
print(f"当前结果: {result}")
elif op == '^':
result = current_num ** 2
current_num = result
print(f"当前结果: {result}")
else:
print("错误操作符,重新输入。")
break
except ValueError:
print("输入不正确,请重新输入数字。")
break
# 处理括号
if current_num != 0:
current_num = current_num ** 2
print(f"当前数字: {current_num}")
# 处理平方
if current_num != 0:
current_num = current_num ** 2
print(f"当前数字: {current_num}")
# 处理平方根
if current_num != 0:
current_num = math.sqrt(current_num)
print(f"当前数字: {current_num}")
# 处理倒数
if current_num != 0:
current_num = 1 / current_num
print(f"当前数字: {current_num}")
# 处理百分比
if current_num != 0:
current_num = current_num * 0.1
print(f"当前数字: {current_num}")
# 处理括号内部的运算顺序
if current_num != 0:
if op == '^':
current_num = current_num ** 2
elif op == 'sqrt':
current_num = math.sqrt(current_num)
elif op == '1/x':
current_num = 1 / current_num
elif op == '%':
current_num = current_num * 0.1
elif op == 'sqrt':
current_num = math.sqrt(current_num)
elif op == '1/x':
current_num = 1 / current_num
elif op == '%':
current_num = current_num * 0.1
print(f"当前数字: {current_num}")
# 处理进制转换
base = input("输入目标进制: ")
if base >= 2 and base <= 16:
result = int(current_num, base)
print(f"十进制数字: {current_num}")
print(f"转换到 {base} 进制: {result}")
else:
print("目标进制必须是2到16之间的整数。")
break
# 处理单位转换
target_unit = input("输入目标单位: ")
if target_unit not in ['米', '厘米', '毫米', '千米', '分米', '分', '秒']:
print("目标单位必须是米、厘米、毫米、千米、分米、分、秒中的一个。")
break
else:
current_num = float(current_num)
if target_unit == '米':
result = current_num * 1
print(f"十进制数字: {current_num}")
print(f"转换到 米: {result}")
break
elif target_unit == '厘米':
result = current_num * 1
print(f"十进制数字: {current_num}")
print(f"转换到 厘米: {result}")
break
elif target_unit == '毫米':
result = current_num * 1
print(f"十进制数字: {current_num}")
print(f"转换到 毫米: {result}")
break
elif target_unit == '千米':
result = current_num * 1
print(f"十进制数字: {current_num}")
print(f"转换到 千米: {result}")
break
elif target_unit == '分米':
result = current_num * 1
print(f"十进制数字: {current_num}")
print(f"转换到 分米: {result}")
break
elif target_unit == '分':
result = current_num * 6
print(f"十进制数字: {current_num}")
print(f"转换到 分: {result}")
break
elif target_unit == '秒':
result = current_num * 36
print(f"十进制数字: {current_num}")
print(f"转换到 秒: {result}")
break
else:
print("目标单位必须是米、厘米、毫米、千米、分米、分、秒中的一个。")
break
# 退出程序
print("程序退出。")
这个程序能够基本实现科学上网的功能,包括基本四则运算、平方、平方根、倒数、百分比、括号处理(两种输入方式)、括号内部的运算顺序处理、进制转换和单位转换。



