Python 这个序列中的逻辑有什么问题?

Python 这个序列中的逻辑有什么问题?,python,logic,Python,Logic,我是一名Python初学者,我决定在暑假期间创建一个程序,在我这么做之前,我决定在之前制作一个小程序,练习创建GUI。我在一个笑话机器上工作,它使用随机模块选择一个随机整数来决定显示哪个笑话,但是它似乎只输出笑话3,不管我运行了多少次 我看不出有什么问题,有什么建议吗 joke_select = random.randint (1,3) joke1 = "Why do you never see elephants hiding in trees?\n because they're real

我是一名Python初学者,我决定在暑假期间创建一个程序,在我这么做之前,我决定在之前制作一个小程序,练习创建GUI。我在一个笑话机器上工作,它使用随机模块选择一个随机整数来决定显示哪个笑话,但是它似乎只输出笑话3,不管我运行了多少次

我看不出有什么问题,有什么建议吗

joke_select = random.randint (1,3)

joke1 = "Why do you never see elephants hiding in trees?\n because they're really good at it!"
joke2 = "What is grey and can't climb a tree? \n A parking lot"
joke3 = "What is red and bad for your teeth?\n A brick"

if joke_select == '1':
    joke_label = tkinter.Label (main, text = joke1)
elif joke_select == '2':
    joke_label = tkinter.Label (main, text = joke2)
else:
    joke_label = tkinter.Label (main, text = joke3)

def get_joke():
    joke_label.pack ()
笑话_select永远只是一个整数,但您在这里将其与字符串进行比较。请尝试与整数进行比较

if joke_select == 1:

同样,对于elif joke_select==“2”:。

脚本会查找字符串并生成一个数字

if joke_select == 1:
    joke_label = tkinter.Label (main, text = joke1)
elif joke_select == 2:
    joke_label = tkinter.Label (main, text = joke2)
else:
   joke_label = tkinter.Label (main, text = joke3)

可能会起作用

只是一条建议:random.randint 1,3之类的东西不需要空白。将其作为随机变量会更清晰。randint1,3。您的代码中还有一些地方也适用于此。

joke\u select的类型为int,但您将其与字符串进行比较,因此始终使用else。您是否在进行比较之前查看了joke\u select的值?谢谢您的建议,有没有什么特别的理由避免使用空间,或者不使用空间只是标准?没问题!在函数调用的参数列表开始的开括号之前的空格只会使括号内的内容是该函数调用的参数列表变得不那么清楚。有关更多详细信息,请参阅。在这里添加空格也不是常规做法,因此可能会让其他人在阅读你的代码时产生一些混乱。啊,我明白了,我想从长远来看,我会习惯不这样做,我现在明白了它是如何让阅读变得更清晰的,我只是发现,在实际编程时,我觉得它看起来间隔更大,这似乎出于某种原因对我有所帮助。如果它对你有效,那么对于小程序来说,在编码时保留空格是没有坏处的,然后可能在向其他人展示之前重构代码。不过,对于大型项目来说,这可能有点乏味,因此,是的,养成遵循pep-8或类似风格指南的习惯肯定是件好事。无论如何,祝你学习Python好运!
if joke_select == 1:
    joke_label = tkinter.Label (main, text = joke1)
elif joke_select == 2:
    joke_label = tkinter.Label (main, text = joke2)
else:
   joke_label = tkinter.Label (main, text = joke3)