Python - 代码片段,Snippets,Gist

时间:2022-10-27 20:26:25

说明

代码片段来自网上搬运的或者自己写的

华氏温度转摄氏温度

f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))

输入圆的半径计算计算周长和面积

import math

radius = float(input('请输入圆的半径: '))
perimeter = 2 * math.pi * radius
area = math.pi * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)

输入年份判断是不是闰年

year = int(input('请输入年份: '))
# 如果代码太长写成一行不便于阅读 可以使用\或()折行
is_leap = (year % 4 == 0 and year % 100 != 0 or
year % 400 == 0)
print(is_leap)

英制单位与公制单位互换

value = float(input('请输入长度: '))
unit = input('请输入单位: ')
if unit == 'in' or unit == '英寸':
print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':
print('%f厘米 = %f英寸' % (value, value / 2.54))
else:
print('请输入有效的单位')

掷骰子决定做什么

from random import randint

face = randint(1, 6)
if face == 1:
result = '唱首歌'
elif face == 2:
result = '跳个舞'
elif face == 3:
result = '学狗叫'
elif face == 4:
result = '做俯卧撑'
elif face == 5:
result = '念绕口令'
else:
result = '讲冷笑话'
print(result)

百分制成绩转等级制


score = float(input('请输入成绩: '))
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'E'
print('对应的等级是:', grade)

输入三条边长如果能构成三角形就计算周长和面积

import math

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
print('周长: %f' % (a + b + c))
p = (a + b + c) / 2
area = math.sqrt(p * (p - a) * (p - b) * (p - c))
print('面积: %f' % (area))
else:
print('不能构成三角形')

上面的代码中使用了math模块的sqrt函数来计算平方根。用边长计算三角形面积的公式叫做海伦公式。

实现一个个人所得税计算器

salary = float(input('本月收入: '))
insurance = float(input('五险一金: '))
diff = salary - insurance - 3500
if diff <= 0:
rate = 0
deduction = 0
elif diff < 1500:
rate = 0.03
deduction = 0
elif diff < 4500:
rate = 0.1
deduction = 105
elif diff < 9000:
rate = 0.2
deduction = 555
elif diff < 35000:
rate = 0.25
deduction = 1005
elif diff < 55000:
rate = 0.3
deduction = 2755
elif diff < 80000:
rate = 0.35
deduction = 5505
else:
rate = 0.45
deduction = 13505
tax = abs(diff * rate - deduction)
print('个人所得税: ¥%.2f元' % tax)
print('实际到手收入: ¥%.2f元' % (diff + 3500 - tax))

输入一个数判断是不是素数

from math import sqrt

num = int(input('请输入一个正整数: '))
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print('%d是素数' % num)
else:
print('%d不是素数' % num)

输入两个正整数,计算最大公约数和最小公倍数

x = int(input('x = '))
y = int(input('y = '))
if x > y:
(x, y) = (y, x)
for factor in range(x, 0, -1):
if x % factor == 0 and y % factor == 0:
print('%d和%d的最大公约数是%d' % (x, y, factor))
print('%d和%d的最小公倍数是%d' % (x, y, x * y // factor))
break

打印三角形图案

row = int(input('请输入行数: '))
for i in range(row):
for _ in range(i + 1):
print('*', end='')
print() for i in range(row):
for j in range(row):
if j < row - i - 1:
print(' ', end='')
else:
print('*', end='')
print() for i in range(row):
for _ in range(row - i - 1):
print(' ', end='')
for _ in range(2 * i + 1):
print('*', end='')
print()

实现计算求最大公约数和最小公倍数的函数

def gcd(x, y):
(x, y) = (y, x) if x > y else (x, y)
for factor in range(x, 0, -1):
if x % factor == 0 and y % factor == 0:
return factor def lcm(x, y):
return x * y // gcd(x, y)

实现判断一个数是不是回文数的函数

def is_palindrome(num):
temp = num
total = 0
while temp > 0:
total = total * 10 + temp % 10
temp //= 10
return total == num

实现判断一个数是不是素数的函数

def is_prime(num):
for factor in range(2, num):
if num % factor == 0:
return False
return True if num != 1 else False

写一个程序判断输入的正整数是不是回文素数

if __name__ == '__main__':
num = int(input('请输入正整数: '))
if is_palindrome(num) and is_prime(num):
print('%d是回文素数' % num)

在屏幕上显示跑马灯文字

import os
import time def main():
content = '北京欢迎你为你开天辟地…………'
while True:
# 清理屏幕上的输出
os.system('cls') # os.system('clear')
print(content)
# 休眠200毫秒
time.sleep(0.2)
content = content[1:] + content[0] if __name__ == '__main__':
main()

设计一个函数产生指定长度的验证码,验证码由大小写字母和数字构成

import random

def generate_code(code_len=4):
"""
生成指定长度的验证码 :param code_len: 验证码的长度(默认4个字符) :return: 由大小写英文字母和数字构成的随机验证码
"""
all_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
last_pos = len(all_chars) - 1
code = ''
for _ in range(code_len):
index = random.randint(0, last_pos)
code += all_chars[index]
return code
# 生成随机字符串
def random_str(random_length=8):
str = ''
# 生成字符串的可选字符串
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
length = len(chars) - 1
random = Random()
for i in range(random_length):
str += chars[random.randint(0, length)]
return str

设计一个函数返回给定文件名的后缀名

def get_suffix(filename, has_dot=False):
"""
获取文件名的后缀名 :param filename: 文件名
:param has_dot: 返回的后缀名是否需要带点 :return: 文件的后缀名
"""
pos = filename.rfind('.')
if 0 < pos < len(filename) - 1:
index = pos if has_dot else pos + 1
return filename[index:]
else:
return ''

设计一个函数返回传入的列表中最大和第二大的元素的值

def max2(x):
m1, m2 = (x[0], x[1]) if x[0] > x[1] else (x[1], x[0])
for index in range(2, len(x)):
if x[index] > m1:
m2 = m1
m1 = x[index]
elif x[index] > m2:
m2 = x[index]
return m1, m2

计算指定的年月日是这一年的第几天

def is_leap_year(year):
"""
判断指定的年份是不是闰年 :param year: 年份 :return: 闰年返回True平年返回False
"""
return year % 4 == 0 and year % 100 != 0 or year % 400 == 0 def which_day(year, month, date):
"""
计算传入的日期是这一年的第几天 :param year: 年
:param month: 月
:param date: 日 :return: 第几天
"""
days_of_month = [
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
][is_leap_year(year)]
total = 0
for index in range(month - 1):
total += days_of_month[index]
return total + date def main():
print(which_day(1980, 11, 28))
print(which_day(1981, 12, 31))
print(which_day(2018, 1, 1))
print(which_day(2016, 3, 1)) if __name__ == '__main__':
main()

打印杨辉三角

def main():
num = int(input('Number of rows: '))
yh = [[]] * num
for row in range(len(yh)):
yh[row] = [None] * (row + 1)
for col in range(len(yh[row])):
if col == 0 or col == row:
yh[row][col] = 1
else:
yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
print(yh[row][col], end='\t')
print() if __name__ == '__main__':
main()

双色球选号

from random import randrange, randint, sample

def display(balls):
"""
输出列表中的双色球号码
"""
for index, ball in enumerate(balls):
if index == len(balls) - 1:
print('|', end=' ')
print('%02d' % ball, end=' ')
print() def random_select():
"""
随机选择一组号码
"""
red_balls = [x for x in range(1, 34)]
selected_balls = []
for _ in range(6):
index = randrange(len(red_balls))
selected_balls.append(red_balls[index])
del red_balls[index]
# 上面的for循环也可以写成下面这行代码
# sample函数是random模块下的函数
# selected_balls = sample(red_balls, 6)
selected_balls.sort()
selected_balls.append(randint(1, 16))
return selected_balls def main():
n = int(input('机选几注: '))
for _ in range(n):
display(random_select()) if __name__ == '__main__':
main()

可以使用random模块的sample函数来实现从列表中选择不重复的n个元素。

约瑟夫环问题

"""

《幸运的基督徒》
有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里面去,有个人想了个办法就是大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,报到9的人继续扔到海里面,直到扔掉15个人。由于上帝的保佑,15个基督徒都幸免于难,问这些人最开始是怎么站的,哪些位置是基督徒哪些位置是非基督徒。 """ def main():
persons = [True] * 30
counter, index, number = 0, 0, 0
while counter < 15:
if persons[index]:
number += 1
if number == 9:
persons[index] = False
counter += 1
number = 0
index += 1
index %= 30
for person in persons:
print('基' if person else '非', end='') if __name__ == '__main__':
main()

数字时钟

from time import sleep

class Clock:
"""[数字时钟] Args: """ def __init__(self, hour=0, minute=0, second=0):
"""[初始化时间]
hour (int, optional): Defaults to 0. [Representing hour]
minute (int, optional): Defaults to 0. [Representing minute]
second (int, optional): Defaults to 0. [Representing second]
""" self._hour = hour
self._minute = minute
self._second = second def run(self):
"""[走字] Bad:
1. 面条代码(spagetti code)
""" while True:
print(self)
self._second += 1
if self._second == 60:
self._second = 0
self._minute += 1 if self._minute == 60:
self._minute = 0
self._hour += 1 if self._hour == 24:
self._hour = 0
sleep(1) def __str__(self):
"""[显示时间]
"""
return '%02d:%02d:%02d' % (self._hour, self._minute, self._second) def main():
"""[主程序入口]
"""
clock = Clock(9, 11, 57)
clock.run() if __name__ == '__main__':
main()

二维坐标

from math import sqrt

class Point:
"""[二维坐标,用(x,y)表示]
""" def __init__(self, x=0, y=0):
"""[坐标构造函数]
x (int, float, optional): Defaults to 0. [坐标x]
y (int, float, optional): Defaults to 0. [坐标y]
""" self.x = x
self.y = y def move_to(self, x, y):
"""[移动到指定位置] Args:
x ([int, float]): [新的坐标x]
y ([int, float]): [新的坐标y]
"""
self.x = x
self.y = y def moved_by(self, dx, dy):
"""[移动指定的增量] Args:
dx ([int, float]): [坐标x的增量]
dy ([int, float]): [坐标y的增量]
"""
self.x += dx
self.y += dy def distance_to(self, other):
"""[计算到另一个坐标的距离] Args:
other ([class Point]): [另一个坐标]
"""
dx = self.x - other.x
dy = self.y - other.y
return sqrt(dx ** 2 + dy ** 2) def __str__(self):
"""[调用print()的时候,调用此方法,for users!]
"""
return '(%s, %s)' % (str(self.x), str(self.y)) def main():
p1 = Point(3, 5)
p2 = Point() print(p1)
print(p2) p2.moved_by(-1, 2) print(p2) print(p1.distance_to(p2)) if __name__ == '__main__':
main()

用装饰器模拟session,或者说用装饰器实现验证功能

user_session = {'username': None, 'login_status': False}

def login_required(func):
def wrapper(*args, **kwargs):
if user_session['username'] and user_session['login_status']:
func(*args, **kwargs)
else:
print('没有足够权限')
return wrapper def auth_func(func):
def wrapper(*args, **kwargs):
username = input('用户名: ').strip()
password = input('密码: ').strip()
if username == 'sb' and password == '123':
user_session['username'] = username
user_session['login_status'] = password
func(*args, **kwargs)
else:
print('用户名或者密码错误') return wrapper @auth_func
def index():
print('欢迎来到京东') @login_required
def home(name):
print('欢迎回家%s' % name) @login_required
def shopping_cart():
print('购物车里有 [%s,%s,%s]' % ('袜子', '鞋子', '娃娃')) index()
home('allen')
shopping_cart()

判断是否属于类的方法(method)

def hasmethod(obj, name):
return hasattr(obj, name) and isinstance(getattr(obj, name), types.MethodType)

BeautifulSoup提取优化

def get_sub_soup(soup, rules):
if isinstance(rules, (list, tuple)):
for rule in rules:
soup = get_sub_soup(soup, rule) next_sibling = rule.pop("find_next_sibling", None)
if soup and next_sibling:
soup = soup.find_next_sibling(next_sibling)
elif isinstance(rules, dict):
temp = rules.pop("find_next_sibling", None)
if soup:
soup = soup.find(**rules)
rules.update(find_next_sibling=temp) return soup def ismethod(obj, name):
return hasattr(obj, name) and isinstance(getattr(obj, name), types.MethodType) def get_soup_attr(obj, attrs):
if isinstance(attrs, (list, tuple)):
result = obj
for attr in attrs:
result = get_soup_attr(result, attr)
else:
if isinstance(obj, dict):
result = obj.get(attrs)
elif ismethod(obj, attrs):
result = getattr(obj, attrs)()
elif isinstance(obj, Tag):
result = getattr(obj, attrs)
else:
return obj return result def parse_soup(soup, rules, attrs, default_result=None):
""" :param soup: soup
:param rules: [{'name': 'div'}, {'name': 'a'}]
:param attrs: "text" or ["text"] or ["attrs", "href"]
:param default_result: '' or []
:return:
"""
result = default_result
soup = get_sub_soup(soup, rules)
if soup:
result = get_soup_attr(soup, attrs) return result

完全去除空格

class SpacesRemover(object):
"""
去除空格
""" def __call__(self, s):
return ''.join(s.split()) def __ror__(self, s):
return self(s) remove_spaces = SpacesRemover()

Python - 代码片段,Snippets,Gist的更多相关文章

  1. Python 代码片段收藏

    list 列表相关 list 中最小值.最大值 import operator values = [1, 2, 3, 4, 5] min_index, min_value = min(enumerat ...

  2. 有用的Python代码片段

    我列出的这些有用的Python代码片段,为我节省了大量的时间,并且我希望他们也能为你节省一些时间.大多数的这些片段出自寻找解决方案,查找博客和*解决类似问题的答案.下面所有的代 ...

  3. 2019-01-29 VS Code创建自定义Python代码片段

    续前文[日常]Beyond的歌里最多是"唏嘘"吗? - Python分词+词频最后的想法, 发现VS Code支持用户自定义代码片段: Creating your own snip ...

  4. sublime 添加代码片段&lpar;snippets&rpar;

    1.工具-新代码片段(Tools -> New Snippet) 2. <snippet> <content><![CDATA[ if(\$rs &&amp ...

  5. python 代码片段26

    #coding=utf-8 ''' 使用空格而不是tab 因为无论在什么平台上开发,你的代码总是有可能会被移动或是复制到 另一不同架构的机器上,win32是4个空格,unix是8个空格,干脆 还是使用 ...

  6. python 代码片段25

    #coding=utf-8 # 虽然python是面向对象的语言,但是没有显式的构造函数概念. # python没有new关键词 class MyClass(object): pass m=MyCla ...

  7. python 代码片段23

    #coding=utf-8 #python还支持动态的实力属性,即那些没有在类定义里生命的属性, #可以"凭空"创造出来 john.tatto='Mom' #继承 class Em ...

  8. python 代码片段22

    #coding=utf-8 class AddressBookEntry(object): version=0.1 def __init__(self, name,phone): self.name ...

  9. python 代码片段20

    #coding=utf-8 # 函数 def foo(x): print x foo(123) # import httplib def check_web_server(host,port,path ...

随机推荐

  1. Android 手机卫士--实现设置界面的一个条目布局结构

    本文地址:http://www.cnblogs.com/wuyudong/p/5908986.html,转载请注明源地址. 本文以及后续文章,将一步步完善功能列表: 要点击九宫格中的条目,需要注册点击 ...

  2. CUDA2&period;1-原理之索引与warp

    本小节来自<大规模并行处理器编程实战>第四节,该书是很好的从内部原理结构上来讲述了CUDA的,对于理解CUDA很有帮助,借以博客的形式去繁取间,肯定会加入自己个人理解,所以有错误之处还望指 ...

  3. C&num; 词法分析器(六)构造词法分析器

    系列导航 (一)词法分析介绍 (二)输入缓冲和代码定位 (三)正则表达式 (四)构造 NFA (五)转换 DFA (六)构造词法分析器 (七)总结 现在最核心的 DFA 已经成功构造出来了,最后一步就 ...

  4. &lbrack;issue&rsqb; dyld&grave;dyld&lowbar;fatal&lowbar;error&colon; -&gt&semi; 0x120015088 &lt&semi;&plus;0&gt&semi;&colon; brk &num;0x3

    iOS "dyld`dyld_fatal_error: -> 0x12000d088 <+0>: brk #0x3"错误 根据上面的博客里的方法二 尝试解决方法二 ...

  5. python&lpar;二&rpar;基础

    1.lambda表达式(一般格式为冒号前边是参数冒号后边是返回值) 单参数: 多参数: 我们如果实现一个普通的filter过滤函数过滤掉偶数: 而我们如果用lambda表达式就很简便: 2.递归 普通 ...

  6. 半模对话框 QProgressDialog

    http://doc.qt.io/qt-4.8/qprogressdialog.html progressdialog 用到了qfuture http://blog.csdn.net/liang198 ...

  7. select下拉菜单反显不可改动,且submit能够提交数据

    首先通过后台funcA()将下拉菜单反显不可改动的数据response到disable.jsp页面,disable.jsp: <script> var data1=${result.obj ...

  8. (八十六)使用系统自带的分享框架Social&period;framework

    使用Social.framework十分简单,能够便捷的分享到主流的社交框架. ①导入主头文件 #import <Social/Social.h> ②以新浪微博为例,首先判断服务是否可用, ...

  9. windows多线程同步--信号量

    推荐参考博客:秒杀多线程第八篇 经典线程同步 信号量Semaphore   首先先介绍和windows信号量有关的两个API:创建信号量.释放信号量   HANDLE WINAPI CreateSem ...

  10. Redis与RabbitMQ作为消息队列的比较

    简要介绍 RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消息中间 ...