2017-10-23 8 views
1

私は初心者です。ユーザーの入力(エントリ)が(a)のランダムな単語と一致するかどうかを確認する基本的なプログラムを作成しようとしています。一致する場合は、新しい単語を入力し、入力フィールドをクリアする必要があります。ここでランダムな単語がユーザーの入力と同じかどうかを確認するにはどうすればよいですか?

私のコードは、これまでのところです:

import random 
import requests 
import Tkinter 
import requests 
from Tkinter import * 

point = 0 

word_site = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain" 
response = requests.get(word_site) 
WORDS = response.content.splitlines() 
a = random.choice(WORDS) 

root = Tkinter.Tk() 
root.title("Stopwatch") 
root.minsize(width=900, height=600) 
root.configure(background='white') 

e1 = Entry(root , justify='center') 
e1.place(anchor=CENTER , bordermode=OUTSIDE) 
e1.config(bg="white" , font="Geneva 30 bold") 
e1.pack(expand=False, padx=20 , pady=20, ipadx=10, ipady=10) 

label = Tkinter.Label(root, text = "Write this word: " + a , bg="white" , font="Geneva 30 bold") 
label.pack() 

if e1 == a: #virker ikke! 
    print "correct" 
    e1.delete(0, END) 


root.mainloop() 

答えて

0

両方があなたがフォローのように、==演算子を使用することができ、文字列の場合は:これは大文字と小文字が区別されること

a == b 

注意、大文字小文字を区別しないようにするには、文字列の.lower()関数を使用できます。

a.lower() == b.lower() 

文字列でない場合は、文字列にキャストできます。

+0

どうすれば入力フィールドへの入力を文字列にすることができますか? –

+0

@BenceSzabóこれは役に立ちます - https://stackoverflow.com/questions/15495559/taking-input-from-the-user-in-tkinter –

+0

@BenceSzabóhttp://effbot.org/tkinterbook/entry.htmをチェックしてくださいさらに参照してください –

1

問題が「virker ikke!」とマークされた行だけの場合は、文字列値(a)とtkinter.Entryインスタンスを比較しているからです。

は、エントリから現在のテキストを取得するには、「取得」メソッドを使用します。

if e1.get() == a: 
    print("correct") 
    e1.delete(0, END) 

は第二に、私はあなたがUIツールキットは、一般的にどのように機能するかについての間違った考えを持っていると思います。

テキスト入力インスタンスを作成し、正しく表示します。しかし、すぐに、あなたは値をチェックし、あなたはそれを一度だけチェックします。

代わりに、信号処理を設定する必要があります。たとえば、エントリ内のテキストが変更されたときにコールバックを設定するか、ボタンを追加して同じコールバックをそのクリックイベントにアタッチします。

また、入力にが入力される前に、プログラムにメインループを入力させる必要があります。

私はtkinterの専門家ではないので、これは一般的な考えです。

+0

ありがとう、私はちょうどあなたのコードでその部分を置き換えてみましたが、それでも動作しません:( –

+0

私はいくつかのより一般的なアイデア – Jonatan

0

このような何か:

import random 

def random_word(words): 
    return random.choice(words) 

def user_choice(): 
    return raw_input("Enter a random word: ") 

def main(): 
    words = ["and", "that", "this", "is"] 
    computer_generated_word = random_word(words) 
    user_picked_word = user_choice() 
    if computer_generated_word.lower() == user_picked_word.lower(): 
     print("Word has successfully been guessed '{}'...".format(computer_generated_word)) 
    else: 
     print("That's not the right word...") 

if __name__ == "__main__": 
    main() 

今、あなたは新しいしていると述べたことからは..あなたのためにこれを打破することができますrandomパッケージ、ドキュメントがhere

import random 

インポートを見つけることができます

def random_word(words): 
    return random.choice(words) 

からランダムな単語を返します組み込みのrandomパッケージを使用してメソッドの引数として与えられた単語の。

def user_choice(): 
    return raw_input("Enter a random word: ") 

(それだけでinput2.7.x後だということを言及する価値)raw_input関数を呼び出すことでstdoutからのユーザ入力を取得するメソッドを作成します

def main(): 
    words = ["and", "that", "this", "is"] 
    computer_generated_word = random_word(words) 
    user_picked_word = user_choice() 
    if computer_generated_word.lower() == user_picked_word.lower(): 
     print("Word has successfully been guessed '{}'...".format(computer_generated_word)) 
    else: 
     print("That's not the right word...") 

は、の二つの単語の小文字バージョンを比較するために、mainメソッドを作成します。お互い。単語が一致すると出力され、一致しない場合は出力されません。

if __name__ == "__main__": 

Pythonの基本的なプラクティス。基本的には、プログラムの開始時に必要なメソッドを呼び出すために使用されます。

main() 

メインメソッドを呼び出します。

関連する問題