私は初心者ですからこのプロジェクト、小さなPythonとTkinterプロジェクトに取り組んでいます。この小さな問題でなければほとんど終了しました私はいくつかのテストをした後にそれを検出しました。 入力に入力したシリアル番号が「悪魔番号」であるかどうかは、その番号の番号が「666」であるかどうかによって異なります。肯定的なケースでは、その中に666という数字があり、それは他の6とは離れているはずです。つまり、この "666"のようなものであってはなりません。数字「666」がシリアルナンバーの中で何度か繰り返されている場合(「666666」と一緒に詰め込まれていない場合)、それも悪魔の番号と見なすことができます。Python:長いシリアル番号の中の特定の番号を検出する方法
私が持っている問題は、その中に「666」しかなく、同時にその番号(666)で終わる数字をテストすると、それらの数字は悪魔の数字とはみなされないということです。私はこの問題を解決できないようです。
このプロジェクトを実現するために、PythonとTkinterを使用しました。コードは次のとおりです。
"""*************************************************************************"""
""" Author: CHIHAB Version: 2.0 Email: [email protected] """
""" Purpose: Practice Level: Beginner 2016/2017 """
"""*************************************************************************"""
############################ I M P O R T S#####################################
from tkinter import*
from types import *
############################ T K I N T E R ####################################
main = Tk()
e = Entry(main, bg="darkblue", fg="white")
e.pack(fill=X)
l = Label(main, bg="blue", fg="yellow")
l.pack(fill=X)
############################ F U N C T I O N S ################################
def devil(x): #TEST ENTERED VALUE FOR DEVIL NUMBER
c = 0
i = 0
l = list(x)
while i < len(l): #This block of code means that as long as the index i
if l[i] == "6": # is below the length of the list to which we have
c = c+1 # converted the entry, the program is allowed to keep
print("this is c :", c) # reading through the list's characters.
else:
c = 0
if i <= (len(l)-2) and c == 3 and l[i+1] != "6":
return True
i = i+1
return False
def printo(): #GET VALUE ENTRY AND SHOW IT IN LABEL
x = e.get()
if x != "":
if x.isnumeric() == True: #SHOW ENTERED VALUE IF INTEGER
y = devil(x)
if y == True:
print("The number you entered is a devil number.")
l.config(text="The number you entered is a devil number.", bg="blue")
else:
print("The number you entered is NOT a devil number.")
l.config(text="The number you entered is NOT a devil number.", bg="blue")
#print(x)
e.delete(0, END)
else: #SHOW ERROR IF NOT INTEGER
l.config(text="please enter an integer in the entry.", bg="red")
print("please enter an integer in the entry.")
e.delete(0, END)
else: #SHOW ERROR IF EMPTY
l.config(text="please enter something in the entry.", bg="red")
print("please enter something in the entry.")
############################ T K I N T E R ####################################
b = Button(main, text="Go", bg="lightblue", command=printo)
b.pack(fill=X)
main.mainloop()
ここでは、guyz。私のコードがきちんと整っていて、私が疑問に思っていることを手伝ってくれることを願っています。 ありがとうございます。
マッチがNoneでない場合、それは上記のあなたの質問ごとに悪魔の番号です( '* 666 *' R、input_number)re.searchを使用してください。 – forvaidya
あなたは* 666のいずれかが一致しなければならないことを意味しますか、または3つのシーケンスが存在する場合には繰り返し可能ですか?すなわち '123666'は悪魔の番号ですか? '123666666321'(666の2つのグループ)はどうでしょうか?そして '1236666'(4つの' 6's)? –
@WayneWerner、6とは別の番号に固執していても、シリアル番号に少なくとも1つの「666」が含まれているはずですが、666のようなものは存在しません。 6666は働かないでしょう。しかし、12366678666は悪魔の番号とみなすべきです。ありがとうございました!! – Chihab