【问题标题】:How to check if the random word is the same as the user input?如何检查随机词是否与用户输入的相同?
【发布时间】:2017-10-23 18:19:50
【问题描述】:

我是一个初学者,我正在尝试编写基本程序来检查用户输入(条目)是否与显示的随机单词匹配(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()

【问题讨论】:

    标签: python random input


    【解决方案1】:

    如果您的问题只是标记为“virker ikke!”的行那是因为您正在将字符串值 (a) 与 tkinter.Entry 实例进行比较。

    使用“get”方法从条目中获取当前文本:

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

    其次,我认为您对 UI 工具包通常如何工作的想法有误。

    您创建一个文本输入实例并正确显示它。但是,立即之后,您检查该值并且只检查一次。

    相反,您需要设置一些信号处理。例如:设置在条目中的文本发生变化时调用的回调,或者添加一个按钮并将相同的回调附加到其点击事件。

    另外,您需要让程序进入主循环,然后才能在条目中预期任何输入。

    请注意,我不是 tkinter 的专家,所以这只是一般的想法。

    【讨论】:

    • 谢谢您,我刚刚尝试用您的代码替换该部分,但仍然无法正常工作:(
    • 我已经用一些更一般的想法更新了答案
    【解决方案2】:

    如果两者都是字符串,您可以使用 == 运算符,如下所示:

    a == b
    

    注意这是区分大小写的,如果你想让它不区分大小写你可以使用字符串的.lower()函数:

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

    如果它们不是字符串,您可以将它们转换为字符串。

    【讨论】:

    【解决方案3】:

    做这样的事情:

    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()
    

    既然你说你是新人,让我们为你分解一下……

    import random
    

    导入random包,文档可以在here找到

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

    使用内置的random 包,从作为参数给定的方法的参数list 中返回一个随机词。

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

    通过调用raw_input函数创建一个从stdout获取用户输入的方法(值得一提的是input2.7.x之后)

    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()
    

    调用main方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多