2

私はPythonが初めてで、出力を1行で印刷するのに苦労しています。

これは、オンライン Python クラス Learning Python Essentials Lab 5.1.10.6 と 7 セグメント デバイスへの印刷に関するものです。7 セグメント デバイスに慣れていない場合は、Wikipediaを参照してください。

外部デバイスは使用していません。自分の端末に印刷するためだけに必要です。私が見つけた他のすべての StackOverflow ソリューションは、実際のデバイスの使用に関連しており、役に立ちませんでした。

  • ラボ リンク: https://edube.org/learn/programming-essentials-in-python-part-2/lab-a-led-display

  • 目的: ユーザーに番号を要求します。数字を 7 セグメント表示形式で端末に出力します。

  • 注: Python3.9を使用しています。3 つの代替ソリューション (オプション 1、2、3) を試しましたが、希望どおりのソリューションはありませんでした。
  • 説明: オプション 1、2、または 3 を un/comment して、そのオプションだけを実行します。
  • 私はこの代替ソリューションを見つけましたが、これはほとんど理解しています。しかし、それはまったく異なるアプローチであり、私が思いついたものではありません。7 セグメント デバイスにスキンを適用する方法はたくさんあることを知っています。これが最も正しい場合は、それを学びます。'\n'しかし、私は自分自身の方法でそれを理解し、何が欠けているかを理解しようとすることから、私はとても近くにいるように感じます.

ご協力ありがとうございました。

望ましい出力

###   ##  ###  ###  # #  ###  ###  ###  ###  ###  
# #  ###    #    #  # #  #    #      #  # #  # #  
# #   ##  ###  ###  ###  ###  ###    #  ###  ###  
# #   ##  #      #    #    #  # #    #  # #    #  
###   ##  ###  ###    #  ###  ###    #  ###  ###

マイコード

# clear screen each time you run the script
import os
clear = lambda: os.system('cls')
clear()
# 
# Dictionary of (number:7-segment-hash)
dict1 = {
    '0':('###','# #','# #','# #','###'),
    '1':('#####'),
    '2':('###','  #','###','#  ','###'),
    '3':('###','  #','###','  #','###'),
    '4':('# #','# #','###','  #','  #'),
    '5':('###','#  ','###','  #','###'),
    '6':('###','#  ','###','# #','###'),
    '7':('###','  #','  #','  #','  #'),
    '8':('###','# #','###','# #','###'),
    '9':('###','# #','###','  #','###')
}

# Function to print numbers in 7-segment-device format
def fun_PrintNums(num):
    if num < 0 or num % 1 > 0 or type(num)!=int:    # if num is NOT a positive whole integer
        return "Invalid entry, please try again"
    else: 
        display = [' ']
        for i in str(num):      # convert 'num' to STRING; for each "number" in string 'num'


#'''Option 1: works, but prints nums vertically instead of side-by-side; Return=None ''' #
            for char in dict1[i]:
                print(*char)
print(fun_PrintNums(int(input("Enter any string of whole numbers: "))))
#----------------------------------------------------------------#


#''' Option 2: Return works, but still vertical and not spaced out ''' #
#             for char in dict1[i]:
#                 display.append(char)
#     return display
# print('\n'.join(fun_PrintNums(int(input("Enter any string of whole numbers: ")))))
#---------------------------------------------------------------------#

#''' Option 3: 'display' row1 offset; spaced out as desired, but vertical; Return=None''' #
#             for char in dict1[i]:                
#                 display += char
#                 display += '\n'
#     a = print(*display,end='')
#     return a
# print(fun_PrintNums(int(input("Enter any string of whole numbers: "))))
#---------------------------------------------------------------#

オプション 1 出力 機能しますが、数字を並べてではなく縦に出力します。リターン=なし

# # #
    #
# # #
#    
# # #
# # #
    #
# # #
    #
# # #
None 

オプション 2 アウトプット リターンは機能しますが、依然として垂直であり、スペースがありません。


###
  #
###
#  
###
###
  #
###
  #
###

オプション 3 出力 'display' row1 オフセット; 必要に応じて間隔を空けますが、垂直です。リターン=なし

  # # # 
     #  
 # # #  
 #      
 # # #  
 # # #  
     #  
 # # #  
     #  
 # # #  
None    
4

1 に答える 1