zoukankan      html  css  js  c++  java
  • python_study1

    # Author:larlly
    '''
    函数
    1.在Python交互式命令行下,可以直接输入代码,然后执行,并立刻得到结果。
    2.文本编辑器推荐俩款
    http://www.sublimetext.com/
    https://notepad-plus-plus.org/
    3.python运行助手 learning.py
      1 # Author:larlly
      2 # python运行助手
      3 r'''
      4 learning.py
      5 
      6 A Python 3 tutorial from http://www.liaoxuefeng.com
      7 
      8 Usage:
      9 
     10 python3 learning.py
     11 '''
     12 
     13 import sys
     14 
     15 def check_version():
     16     v = sys.version_info
     17     if v.major == 3 and v.minor >= 4:
     18         return True
     19     print('Your current python is %d.%d. Please use Python 3.4.' % (v.major, v.minor))
     20     return False
     21 
     22 if not check_version():
     23     exit(1)
     24 
     25 import os, io, json, subprocess, tempfile
     26 from urllib import parse
     27 from wsgiref.simple_server import make_server
     28 
     29 EXEC = sys.executable
     30 PORT = 39093
     31 HOST = 'local.liaoxuefeng.com:%d' % PORT
     32 TEMP = tempfile.mkdtemp(suffix='_py', prefix='learn_python_')
     33 INDEX = 0
     34 
     35 def main():
     36     httpd = make_server('127.0.0.1', PORT, application)
     37     print('Ready for Python code on port %d...' % PORT)
     38     httpd.serve_forever()
     39 
     40 def get_name():
     41     global INDEX
     42     INDEX = INDEX + 1
     43     return 'test_%d' % INDEX
     44 
     45 def write_py(name, code):
     46     fpath = os.path.join(TEMP, '%s.py' % name)
     47     with open(fpath, 'w', encoding='utf-8') as f:
     48         f.write(code)
     49     print('Code wrote to: %s' % fpath)
     50     return fpath
     51 
     52 def decode(s):
     53     try:
     54         return s.decode('utf-8')
     55     except UnicodeDecodeError:
     56         return s.decode('gbk')
     57 
     58 def application(environ, start_response):
     59     host = environ.get('HTTP_HOST')
     60     method = environ.get('REQUEST_METHOD')
     61     path = environ.get('PATH_INFO')
     62     if method == 'GET' and path == '/':
     63         start_response('200 OK', [('Content-Type', 'text/html')])
     64         return [b'<html><head><title>Learning Python</title></head><body><form method="post" action="/run"><textarea name="code" style="90%;height: 600px"></textarea><p><button type="submit">Run</button></p></form></body></html>']
     65     if method == 'GET' and path == '/env':
     66         start_response('200 OK', [('Content-Type', 'text/html')])
     67         L = [b'<html><head><title>ENV</title></head><body>']
     68         for k, v in environ.items():
     69             p = '<p>%s = %s' % (k, str(v))
     70             L.append(p.encode('utf-8'))
     71         L.append(b'</html>')
     72         return L
     73     if host != HOST or method != 'POST' or path != '/run' or not environ.get('CONTENT_TYPE', '').lower().startswith('application/x-www-form-urlencoded'):
     74         start_response('400 Bad Request', [('Content-Type', 'application/json')])
     75         return [b'{"error":"bad_request"}']
     76     s = environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
     77     qs = parse.parse_qs(s.decode('utf-8'))
     78     if not 'code' in qs:
     79         start_response('400 Bad Request', [('Content-Type', 'application/json')])
     80         return [b'{"error":"invalid_params"}']
     81     name = qs['name'][0] if 'name' in qs else get_name()
     82     code = qs['code'][0]
     83     headers = [('Content-Type', 'application/json')]
     84     origin = environ.get('HTTP_ORIGIN', '')
     85     if origin.find('.liaoxuefeng.com') == -1:
     86         start_response('400 Bad Request', [('Content-Type', 'application/json')])
     87         return [b'{"error":"invalid_origin"}']
     88     headers.append(('Access-Control-Allow-Origin', origin))
     89     start_response('200 OK', headers)
     90     r = dict()
     91     try:
     92         fpath = write_py(name, code)
     93         print('Execute: %s %s' % (EXEC, fpath))
     94         r['output'] = decode(subprocess.check_output([EXEC, fpath], stderr=subprocess.STDOUT, timeout=5))
     95     except subprocess.CalledProcessError as e:
     96         r = dict(error='Exception', output=decode(e.output))
     97     except subprocess.TimeoutExpired as e:
     98         r = dict(error='Timeout', output='执行超时')
     99     except subprocess.CalledProcessError as e:
    100         r = dict(error='Error', output='执行错误')
    101     print('Execute done.')
    102     return [json.dumps(r).encode('utf-8')]
    103 
    104 if __name__ == '__main__':
    105     main()


    需要支持HTML5的浏览器:
    IE >= 9
    Firefox
    Chrome
    Sarafi

    输出函数 print()
    输入函数 input()
    退出函数 exit()

    3.x默认支持中文 2.x需要添加 #-*- coding:utf-8 -*-
    '''
    print('100 + 200 =',100+200 )
    print("hello world ","你好,世界")
    print(1024 * 768)

    #python基础

    #print absolute value of an integet

    a = 100
    if a>=0:
    print(a)
    else:
    print(-a)

    #print 俩行\ \本身也需要转义
    print('\\\n\\')

    #转义太多,可以考虑r''
    print(r'\\\\t\\')

    #如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容
    print('''line1
    ... line2
    ... line3''')
    #上面是在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入。如果写成程序,就是:

    print('''line1
    line2
    line3''')

    #多行字符串'''...'''还可以在前面加上r使用

    #布尔值可以用and/or/not 对应 与/或/非
    print(True)
    print(False)
    print(True and False)
    print(True or False)
    print(not True)

    #在Python中,通常用全部大写的变量名表示常量:

    #运算符/和//, /计算结果浮点数, //地板除,结果是整数
    print(10/3)
    print(10//3)

    #字符编码
    # ASCII 一个字节 GB2312 Unicode 俩个字节 GBK GB18030 utf-8 可变长编码

    #对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

    print(ord('A'))
    print(ord("中"))
    print(chr(123))

    #以Unicode表示的str通过encode()方法可以编码为指定的bytes,
    name = 'abc'
    print(name.encode('ascii'))
    name1 = '且听风吟'
    print(name1.encode('utf-8'))

    #我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
    #name2 = "b'abc'"
    #name3 = "b'\xe4\xb8\x94\xe5\x90\xac\xe9\xa3\x8e\xe5\x90\x9f'" 且听风吟的字节
    print(b'abc'.decode('ascii'))
    print(b'\xe4\xb8\x94\xe5\x90\xac\xe9\xa3\x8e\xe5\x90\x9f'.decode('utf-8'))


    #计算str长度(即字节数)函数 len()
    print(len(b'abc'))
    print(len(b'\xe4\xb8\x94\xe5\x90\xac\xe9\xa3\x8e\xe5\x90\x9f'))
    print(len("且听分吟".encode('utf-8')))

    #可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节

    #py文件中申明了utf-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码



  • 相关阅读:
    part11-1 Python图形界面编程(Python GUI库介绍、Tkinter 组件介绍、布局管理器、事件处理)
    part10-3 Python常见模块(正则表达式)
    Cyclic Nacklace HDU
    模拟题 Right turn SCU
    状态DP Doing Homework HDU
    Dp Milking Time POJ
    区间DP Treats for the Cows POJ
    DP Help Jimmy POJ
    Dales and Hills Gym
    Kids and Prizes Gym
  • 原文地址:https://www.cnblogs.com/luoliyu/p/6531609.html
Copyright © 2011-2022 走看看