我试图找到我的本地系统分配给箭头键的值,特别是在Python中.我使用以下脚本执行此操作:
import sys,tty,termios
class _Getch:
def __call__(self):
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
def get():
inkey = _Getch()
while(1):
k=inkey()
if k!='':break
print 'you pressed', ord(k)
def main():
for i in range(0,25):
get()
if __name__=='__main__':
main()
Run Code Online (Sandbox Code Playgroud)
然后我运行了脚本,然后点击向上右下方,这给了我这个输出:
$ python getchar.py
you pressed 27
you pressed 91
you pressed 65
you pressed 27
you pressed 91
you pressed 66
you pressed 27
you pressed 91
you pressed 67
you pressed …
Run Code Online (Sandbox Code Playgroud) 我正在Haskell中执行我的前几步,我正在尝试将字符串转换为整数,但我没有管理.我看过类似的问题,但我还是不确定.
所有我想要做的是转换,如'6'
或"271"
为整数,即,6
或者271
分别.我该怎么做呢?
类比将是在Python中,我可以轻松地做到这一点:例如int("2723")
,可以完成工作.
我正在尝试使用 Python 3 的类型提示语法以及 MyPy 静态类型检查器。我现在正在编写一个接受requests
响应对象的函数,我想知道如何指示类型。
也就是说,在下面这段代码中,我可以???
用什么来代替?
import requests
def foo(request: ???) -> str:
return json.loads(request.content)['some_field']
r = requests.get("my_url")
return foo(r)
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,它从命令行读取两个整数,将它们加倍,然后将它们打印出来。所以我的程序读入 Args,将它们转换为 Ints,然后将它们加倍。我的问题是关于输出:在 Python 中,我可以写:
>>>a = 9
>>>b = 10
>>>print a,b
9 10
这给了我满意的输出。在 Haskell 中,有一个类似的print
语句来打印给定的变量 - 例如
Prelude> let a = 10
Prelude> print a
10
我想知道是否有一个等效于 python 的 Haskell print a,b
,所以我可以一次打印多个变量。否则,我必须做的是将加倍的 Int 转换回字符串,然后编写:
putStrLn (doubledint1 ++ " " ++ doubledint2)
有没有办法打印多个变量,比手动转换为字符串的费力方法更有效,然后在它们的连接上调用 putStrLn?
我正在使用Python的CSV模块,特别是编写器.我的问题是如何将双引号添加到列表中的单个项目并让编写器以与print语句相同的方式编写字符串?
例如:
import csv
#test "data"
test = ['item1','01','001',1]
csvOut = csv.writer(open('file.txt','a')) #'a' used for keeping past results
test[1] = '"'+test[1]+'"'
print test
#prints: ['item1', '"01"', '001', 1]
csvOut.writerow(test)
#written in the output file: item1,"""01""",001,1
#I was expecting: item1,"01",001,1
del csvOut
Run Code Online (Sandbox Code Playgroud)
我累了添加一个quoting = csv.QUOTE_NONE选项,但这引发了一个错误.我猜这与许多csv方言有关,我希望避免过多地挖掘它.
回想起来,我可能已经构建了我的初始数据集,并且可能避免了这种情况的需要,但此时好奇心真的让我变得更好(这是一个简化的例子):你如何保持书面输出不添加这些额外的报价?
在twilio python库中,我们有这个功能来创建消息:
from twilio.rest import TwilioRestClient
我们可以写:
msg = TwilioRestClient.messages.create(body=myMsgString, from_=myNumber, to=yourNumber)
我的问题很简单:为什么下划线遵循from
参数?或者为什么是参数名称?是因为它from
是Python中的关键字,我们将变量与带有下划线后缀的关键字区分开来?这种情况下真的有必要吗?
我正在使用Python 3的类型提示语法,我正在编写一个使用SQS的小型AWS应用程序.我试图提示队列的类型.这是我获取队列类型的方式:
>>> import boto3
>>> session = boto3.session.Session(
>>> aws_access_key_id=AWS_ACCESS_KEY,
>>> aws_secret_access_key=AWS_SECRET_KEY,
>>> region_name='us-west-2'
>>> )
>>> sqs = session.resource('sqs')
>>> queue=sqs.Queue(AWS_QUEUE_URL)
>>>
>>> type(queue)
<class 'boto3.resources.factory.sqs.Queue'>
Run Code Online (Sandbox Code Playgroud)
我写这样的类型提示功能:
def get_session() -> boto3.resources.factory.sqs.Queue:
...
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
AttributeError: module 'boto3.resources.factory' has no attribute 'sqs'
Run Code Online (Sandbox Code Playgroud)
我亲自看过包装dir(...)
.事实上似乎factory
并不包含sqs
.因此,我有两个问题:
type
返回这个不存在的类?我对新泽西州SML解释列表的方式有疑问:
假设我有一个功能f(x : 'a, n : int) : 'a list
,使得f
返回列表n
的副本x
,例如f(2,5) = [2,2,2,2,2]
,f(9,0) = []
.
那么我进入REPL,然后检查f(9,0) = nil
,它返回true.由此,我假设你可以list = nil
用来检查a是否list
是空列表.我在一个函数中使用它,它不会运行.我最后得知类型定义不同:
sml:121.2-123.10错误:运算符和操作数不一致[需要相等类型]运算符域:''Z*''Z
操作数:
表达式中的'a list*'Y列表:
xs = nil
(其中xs是我的名单).然后我了解到检查列表是否为空列表的方法是null list
.为什么会这样?发生了什么事nil
?有人可以向我解释这种行为吗?
我还注意到,显然(case xs = of nil
与检查相同null xs
.这是否意味着nil是一种类型?
我有一个网站www.example.com
.在它上面,我有一个HTML页面,可通过URL访问www.example.com/sample.html
.
我想只需输入www.example.com/sample
并让浏览器将我带到位于的页面www.example.com/sample.html
.我该怎么做呢?我需要设置某种重定向吗?
我在Python 2.7.8的命令行上玩,我遇到了这种行为:
>>> "902".isdigit() == True
True
>>> "902".isdigit(), "2".isdigit() == True
(True, True)
>>> "902".isdigit(), "2".isdigit() == True,True
(True, True, True)
>>> ("902".isdigit(), "2".isdigit()) == (True,True)
Run Code Online (Sandbox Code Playgroud)
我发现这令人惊讶.我本来希望>>> "902".isdigit(), "2".isdigit() == True,True
简单地返回True
,好像我已经用括号中的两个表达式包围它们使它们成为元组.为什么Python会返回这个布尔元组而不是单个元素?这个元组代表什么布尔比较?