python - 在python中将整数转换为七段显示
问题描述
我正在尝试一个练习,用户输入一个正整数,输出应该是一个七段显示转换。
每个数字都使用散列符号进行转换,因此无论输入什么数字,每个单独的数字都将转换为散列符号并添加到空字符串中。
这是我的代码:
zero = '###\n# #\n# #\n# #\n###\n\n'
one = '#\n#\n#\n#\n#\n\n'
two = '###\n #\n###\n# \n###\n\n'
three = '###\n #\n###\n #\n###\n\n'
four = '# #\n# #\n###\n #\n #\n\n'
five = '###\n# \n###\n #\n###\n\n'
six = '###\n# \n###\n# #\n###\n\n'
seven = '###\n #\n #\n #\n #\n\n'
eight = '###\n# #\n###\n# #\n###\n\n'
nine = '###\n# #\n###\n #\n###\n\n'
def seven_segment_display(digit):
if digit >= 0:
digit = str(digit)
digit_list = list(digit)
new_digit = ''
for i in range(len(digit_list)):
if digit_list[i] == '0':
new_digit += zero
if digit_list[i] == '1':
new_digit += one
if digit_list[i] == '2':
new_digit += two
if digit_list[i] == '3':
new_digit += three
if digit_list[i] == '4':
new_digit += four
if digit_list[i] == '5':
new_digit += five
if digit_list[i] == '6':
new_digit += six
if digit_list[i] == '7':
new_digit += seven
if digit_list[i] == '8':
new_digit += eight
if digit_list[i] == '9':
new_digit += nine
return new_digit
print(seven_segment_display(123))
当我运行代码时,它会垂直输出转换后的数字,而不是水平输出。
我正在尝试在同一行上输出每个转换后的数字。
我尝试剥离换行符,但仍然没有水平打印出每个数字。
关于如何做到这一点的任何想法?我是 Python 的新手,所以任何帮助都将不胜感激!
解决方案
首先,使用字典来保存您的表示。这比拥有一大堆变量和相应的if
语句要简洁得多。
其次,您需要分别存储 7 段显示器的每条水平线,因为您只能从左到右从上到下打印。为此,您可以为每个数字分配一个 5 元组。
根据您输入的数字,列出这些表示。一旦你拥有了所有这些,然后将它们连接在一起并逐行打印。
representations = {
'0': ('###', '# #', '# #', '# #', '###'),
'1': (' #', ' #', ' #', ' #', ' #'),
'2': ('###', ' #', '###', '# ', '###'),
'3': ('###', ' #', '###', ' #', '###'),
'4': ('# #', '# #', '###', ' #', ' #'),
'5': ('###', '# ', '###', ' #', '###'),
'6': ('###', '# ', '###', '# #', '###'),
'7': ('###', ' #', ' #', ' #', ' #'),
'8': ('###', '# #', '###', '# #', '###'),
'9': ('###', '# #', '###', ' #', '###'),
'.': (' ', ' ', ' ', ' ', ' #'),
}
def seven_segment(number):
# treat the number as a string, since that makes it easier to deal with
# on a digit-by-digit basis
digits = [representations[digit] for digit in str(number)]
# now digits is a list of 5-tuples, each representing a digit in the given number
# We'll print the first lines of each digit, the second lines of each digit, etc.
for i in range(5):
print(" ".join(segment[i] for segment in digits))
概念证明:
>>> seven_segment(98765432.01)
### ### ### ### ### # # ### ### ### #
# # # # # # # # # # # # # #
### ### # ### ### ### ### ### # # #
# # # # # # # # # # # # #
### ### # ### ### # ### ### # ### #
推荐阅读
- php - 使用插入到 php 文件中的 html 表单值进行 csv 导出
- codenameone - 横向代号一个 iOS 状态栏
- azure - 使用 StatusCode 429 维度筛选器的请求不会触发 CosmosDB 的 Azure 警报(监视器)
- pine-script - 为什么比较两个条形图不能正常工作?
- c# - HTTPClient - 并发请求的任务取消异常
- javascript - 状态正在改变我内部的突变
- javascript - 子组件渲染后的启动方法
- git - 克隆 Azure git 存储库报告“无法解析主机”
- java - 使用 IntelliJ IDEA 将 servlet 部署到本地 Tomcat 服务器
- php - 如何替换方括号中的文本以进行数据库更改?