我花了相当多的时间找到一个64位的pygame安装用于python 3.3,(这里)现在我正在尝试创建一个窗口.但是,虽然窗口打开很好,但是当它按下x按钮时它不会关闭.事实上,我必须关闭IDLE来关闭窗口.我正在运行Win 7的64位版本.这是我的代码:
import pygame
import time
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.flip()
pygame.display.set_caption("Hello World")
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Run Code Online (Sandbox Code Playgroud)
当我追加
time.sleep(5)
pygame.quit()
Run Code Online (Sandbox Code Playgroud)
它仍然没有关闭.我唯一的猜测是pygame.quit可能会进入其中一个循环,但即使已经解决了,我也非常希望能够在我想要的时候关闭窗口.
由于Python本身是用C编写的,理论上是否可以将任何Python程序“反编译”为C,无论出于何种原因?不是翻译(这将采用程序的语义并用 C 语言编写另一个执行相同操作的程序),而是真正的反编译(使用程序为每个 Python 操作找到适当的 C 函数,并以语法正确的方式实现它们)。
我正在使用Python,我注意到该map()功能似乎并没有做太多.例如,如果我写程序:
mylist = [1, 2, 3, 4, 5]
function = map(print, l)
print(function)
Run Code Online (Sandbox Code Playgroud)
它没有优势:
mylist = [1, 2, 3, 4, 5]
for item in mylist:
print(item)
Run Code Online (Sandbox Code Playgroud)
实际上,第二个选项创建的变量较少,对我来说整体看起来通常更清晰.我认为这map()提供了一个在例子中看不到的优点,但它究竟是什么?
编辑:似乎有些人一直在回答一个与我打算提出的问题不同的问题.制作Python的开发人员显然在创建map()函数方面做了一些工作,他们甚至决定不将它从3.0中删除,而是继续研究它.他们决定服务的基本功能是什么?
我在Python中创建了一个简单的程序来生成一个包含5个数字的随机字符串:
import random
numcount = 5
fstring = ""
for num in range(19): #strings are 19 characters long
if random.randint(0, 1) == 1:
x = random.randint(1, 26)
x += 96
fstring += (chr(x).upper())
elif not numcount == 0:
x = random.randint(0, 9)
fstring += str(x)
numcount -= 1
print(fstring)
Run Code Online (Sandbox Code Playgroud)
不太难,对吧?除了一个令人难以置信的奇怪的事情:它返回的字符串是随机长度.我已经多次运行代码了,这里有一些我的结果:
>>> ================================ RESTART ================================
>>>
VQZ99HA5DER0CES4
>>> ================================ RESTART ================================
>>>
05PS0T86LOZS
>>> ================================ RESTART ================================
>>>
E2QX8296XK
>>> ================================ RESTART ================================
>>>
M5X9K457QDNBPX
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚发生了什么......有人能指出我正确的方向吗?
我正在制作一个需要涉及一些错误检查的Java程序.我可以阻止用户输入这样的错误数字输入(假设input扫描仪已经创建):
while (n == 0){
System.out.println("Can't use 0 as a denominator! Please enter a real, nonzero number");
n = input.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
但是如何阻止用户输入无效字符串?我不能用!=,因为字符串只能与string.equals()方法比较,对吧?那么,有一段时间没有循环吗?即:
while !(string.equals("y") || string.equals("n")){
//here have code
}
Run Code Online (Sandbox Code Playgroud)
还是那种性质的东西?
我有两个十六进制数,为了试验OTP,我试图用C#进行异或.不幸的是,这两个数字都在数百个数字的数量级 - 显然太大而无法存储在int或中long.我如何存储/删除它们?现在,我BigInteger像这样存储:
public static string XOR(string string_1, string string_2){
BigInteger b1 = BigInteger.Parse(string_1, System.Globalization.NumberStyles.AllowHexSpecifier);
BigInteger b2 = BigInteger.Parse(string_2, System.Globalization.NumberStyles.AllowHexSpecifier);
BigInteger retVal = b1 ^ b2;
return retVal.ToString("X");
}
Run Code Online (Sandbox Code Playgroud)
这没有产生预期的结果.谢谢!
编辑:
输入:
string_1 = 32510bfbacfbb9befd54415da243e1695ecabd58c519cd4bd90f1fa6ea5ba47b01c909ba7696cf606ef40c04afe1ac0aa8148dd066592ded9f8774b529c7ea125d298e8883f5e9305f4b44f915cb2bd05af51373fd9b4af511039fa2d96f83414aaaf261bda2e97b170fb5cce2a53e675c154c0d9681596934777e2275b381ce2e40582afe67650b13e72287ff2270abcf73bb028932836fbdecfecee0a3b894473c1bbeb6b4913a536ce4f9b13f1efff71ea313c8661dd9a4ce
string_2 = 71946f9bbb2aeadec111841a81abc300ecaa01bd8069d5cc91005e9fe4aad6e04d513e96d99de2569bc5e50eeeca709b50a8a987f4264edb6896fb537d0a716132ddc938fb0f836480e06ed0fcd6e9759f40462f9cf57f4564186a2c1778f1543efa270bda5e933421cbe88a4a52222190f471e9bd15f652b653b7071aec59a2705081ffe72651d08f822c9ed6d76e48b63ab15d0208573a7eef027
Run Code Online (Sandbox Code Playgroud)
预期结果(根据Python和此在线XOR计算器):
32510bfbacfbb9befd54415da243e1695ecabd58c519cd4bd90f1fa6ea5b83624730b208d83b237176b5a41e13d1a2c0080f55d6fb05e4fd9a6e8aff84a9eec74ec0e3115dd0808c011baa15b2c29edad06d6c319976fc7c7eb6a8727e79906c96397dd14594a17511e2ba018c3267935877b5c2c1750f28b2d5bf55faa6c2218c30e58f17542717ad6f8622dd0069a4886d20d3d657a80a869c8f6025399f914f23e5ccd3a999c271a50994c7db959c5c0b73334d15ba3754e9
Run Code Online (Sandbox Code Playgroud)