在一个弹出窗口上显示素数的所有结果

问题描述 投票:0回答:3

我正在尝试用 Python 创建一个密码生成器。我首先编写一个程序来生成计算 RSA 时使用的素数,并且我发现了一个经过修改的程序,可以通过 PySimpleGUI 通过弹出窗口显示结果。但是,我无法在一个弹出窗口中获取所有结果。

这是我到目前为止的代码:

import PySimpleGUI as sg

start = int(sg.popup_get_text("Enter the start of the range: " ))
end = int(sg.popup_get_text("Enter the end of the range: "))

for num in range(start, end + 1):
    if num > 1:
        for i in range(2, int(num**0.5) + 1):
            if(num % i) == 0:
                break
        
        else:
            sg.popup(num)

sg.popup("The process is complete. Press OK to close.")

如何让所有结果显示在一个弹出窗口上?

python python-3.x random passwords pysimplegui
3个回答
0
投票

您应该将您的数字存储在 1 个变量中。例如,您可以使用列表:

result = []

for num in range(start, end + 1):
    if num > 1:
        for i in range(2, int(num**0.5) + 1):
            if(num % i) == 0:
                break
        
        else:
            result.append(num)

sg.popup(f'Numbers are: {result}')

0
投票

您的代码按原样在 for 循环的每次迭代中创建一个弹出窗口。这就是为什么它为每个数字创建一个新的弹出窗口;每次到达下一个素数时,它都必须从头开始一个新的弹出窗口。

如果您希望所有数字都出现在一个弹出窗口中,则必须在所有循环完成后精确地调用

sg.popup
一次。这就需要在计算时以某种方式存储素数;列表可能是最好的选择。

您的现有代码只需进行一些小的修改即可完成工作:

import PySimpleGUI as sg

start = int(sg.popup_get_text("Enter the start of the range: " ))
end = int(sg.popup_get_text("Enter the end of the range: "))

primes = [] # Intialize an empty list; we'll fill this with primes later
for num in range(start, end + 1):
    if num > 1:
        for i in range(2, int(num**0.5) + 1):
            if(num % i) == 0:
                break
        
        else:
            primes.append(str(num)) # Instead of creating a popup immediately, add it to the list

sg.popup(" ".join(primes)) # Now join all the primes with spaces and create one combined popup

sg.popup("The process is complete. Press OK to close.")

0
投票

您正在为每个素数制作一个弹出窗口。相反,创建一个列表并将所有素数附加到列表中,然后在一个弹出窗口中显示该列表。

import PySimpleGUI as sg

start = int(sg.popup_get_text("Enter the start of the range: " ))
end = int(sg.popup_get_text("Enter the end of the range: "))

nums = []

for num in range(start, end, 1):
    if num > 1:
        for i in range(2, int(num**0.5) + 1):
            if (num % i == 0):
                break
            else:
                nums.append(num)
sg.popup(nums)
sg.popup("The process is complete. Press OK to close.")
© www.soinside.com 2019 - 2024. All rights reserved.