Python中的if __name__ == ‘__main__‘

if name == 'main’的意思是:当.py文件被直接运行时,if name == 'main’之下的代码块将被运行;当.py文件以模块形式被导入时,if name == 'main’之下的代码块不被运行。
from here

eval()和float()函数都可以把input() 函数接收到的数值型字符串转为数值类型
例:float(‘3.14’) 的结果是数值 3.14

python map函数:map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']

def format_name(s):
    s1=s[0:1].upper()+s[1:].lower();
    return s1;
print map(format_name, ['adam', 'LISA', 'barT'])

from here

不同大小的数组之间的运算叫做广播(broadcasting)

/ 除
// 整除
% 模(返回除法的余数)

Python123-编程更简单

python中的math函数

Python中break和continue区别

Python split()方法:Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

str.split(str="", num=string.count(str)).
参数
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。

 在一行中给出n个非负整数,即这n位学生的成绩,其间以空格分隔。
score = list(map(int, input().split()))  # 通过map()和list()函数把用户输入转化成int列表[添加链接描述](https://docs.python.org/zh-cn/3/library/math.html)
# 输入一个正整数n,计算 1!+2!+3!+...+n! 的和并输出。
def sum_factorial(n):
    total, t = 1, 1
    for i in range(2, n + 1):
        t = t * i
        total = total + t
    return total


n = int(input())
print(sum_factorial(n))

math — 数学函数

正负交错数列前n项和

n = int(input())
result = 1                        # 首项的值,作为累加初值
sign = -1                         # 符号,第二项是负值,
previous, current = 1, 1          # 分母数字的初值,从第二项开始符合这个规律
for i in range(1, n):             # 从1到n-1遍历n-1次
	previous, current = current, previous + current  # 下一个数值是前面两个数的加和
	result = result + sign * i / current             # 注意分子是 i
	sign = -sign                                     # 改变正负号
print('{:.6f}'.format(result))
十进制整数转二进制
num = int(input())
s=''
if num == 0:
	s = '0'
while num != 0:
    s = s + str(num % 2)  # 将num对2取余的结果转字符串拼接到s
    num = num // 2
print(s[::-1])                    
# 逆序输出字符串
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前n项之和,n由用户输入。
# 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和,n由用户输入。
# 除了首项,分子位前一项分子分母只和,分母为前一项分子
n = int(input())
sumn = 0
a,b=2,1
for i in range(1,n + 1):
    sumn=sumn+a/b
    b,a=a,a+b
print(sumn)
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?

for cock in range(1, 101):                 # 公鸡数量不为0且小于或等于100
    for hen in range(1, 101):              # 母鸡数量不为0且小于或等于100
        for chicken in range(1, 101):   # 小鸡数量大于0小于等于100且是3的倍数
            if chicken % 3 == 0:
                if cock + hen + chicken == 100 and 5 * cock + 3 * hen + chicken // 3 == 100:
                    print(cock, hen, chicken)  # 遇到满足条件的数字组合就输出
求数列前n项的平方和
#1×1+2×2+3×3……的前n项和

n = int(input())
sum = 0
for i in range(1,n+1):
    sum = sum + i * i
print(sum)
输出实数a除以b的结果,计算结果四舍五入,保留2位小数。
# 计算a除以b,结果保留2位小数
a = eval(input())
b = eval(input())
if b != 0:
    print(round(a / b, 2))
else:
    print('除零错误')
字符大小写转换
s = input()
for c in s:
    if c.islower():
        print(c.upper(),end = '')
    elif c.isupper():
        print(c.lower(),end = '')
    else:
        print(c,end = '')
# print(''.join([i.lower() if i.isupper() else i.upper() for i in input()]))
# 也可用下述方法将转变后的字符先加入列表,再将列表中的字符拼接到一起输出
# import string
#
#
# def swap_case(s):
#     ls = []
#     for c in s:
#         if c in string.ascii_lowercase:
#             ls.append(c.upper())
#         elif c in string.ascii_uppercase:
#             ls.append(c.lower())
#         else:
#             ls.append(c)
#     return ''.join(ls)
#
#
# if __name__ == '__main__':
#     s = input()
#     result = swap_case(s)
#     print(result)
isinstance(object,type)作用:来判断一个对象是否是一个已知的类型。
import math

n = eval(input())
if isinstance(n, int) and n >= 0:
    print(math.factorial(n))
else:
    print("ERROR")
分期付款计算器

描述
购买房屋或大宗家电时,很多时候可以分期付款,还款方式分为等额本息和等额本金两种:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

等额本息(Average Capital Plus Interest:ACPI)还款公式:
每月还款额=贷款本金月利率(1+月利率)**总还款月数/((1+月利率)**总还款月数-1)
等额本金(Average Capital:AC)还款公式:
每月还款额=贷款本金/总还款月数+(贷款本金-累计已还款本金)*月利率
设计一个程序计算分期付款时每一期的应还款额,还款方式输入错误时,输出“还款方式输入错误”。

price,month,mode,rate = float(input()),int(input()),input(),float(input())
if mode == 'AC':
    ls = []
    for i in range(month):
        repayment = price / month + (price - price / month * i) * rate
        ls.append(round(repayment,2))
    print(ls)
elif mode == 'ACPI':   # 每月还款额相同
    repayment = price * rate * (1 + rate) ** month /((1 + rate) ** month - 1)
    print(round(repayment,2))
else:
    print('还款方式输入错误')
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口、中间还是过道。目前中国高铁和国内飞机窗口位置的字母是’A’和’F’,过道位置是’C’和 ‘D’,中间位置是’B’。每个车厢座位排数是1-17,输入时不区分字母大小写。根据输入判定座位的位置,当输入的数据不是一个合法的座位号时,输出“座位号不存在”。
#用户输入一个数字和一个字母组成的座位号,根据字母判断是不是窗口的位置
#目前中国高铁窗口位置的字母是'A'和'F',过道位置是'C'和 'D',中间位置是'E'
#数字序号是1-17
s = input()
try:
    if 2 <= len(s) < 4 and 1 < int(s[:-1]) <= 17:
        if s[-1] in ['A','a','F','f']:
            print('窗口')
        elif s[-1] in ['C','c','D','d']:
            print('过道')
        elif s[-1] in ['B','b']:
            print('中间')
        else:
            print('座位号不存在')
    else:
        print('座位号不存在')
except:
    print('座位号不存在')
用户输入一个小于10的正整数,求1 + 12 + 123 + 1234 + …… 的前n项的和,当输入大于或等于10时,输出“data error!”
n = int(input())
if n <= 9:
    total = 0
    tmp = 0  # 用来存上一个数
    for i in range(1, n + 1):
        tmp = tmp * 10 + i  # 计算下一个要加的数: 1 —> 12,1234 —> 12345
        total = total + tmp
    print(total)
else:
    print('data error!')

# 面向测试用例编程
# print([1, 13, 136, 1370, 13715, 137171, 1371738, 13717416, 137174205][n - 1])```
一个正整数如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例如正整数145,1!+4!+5!等于145,因此145就是一个阶乘和数。输入一个正整数,计算它的各位数字的阶乘之和,判断它是否是一个阶乘和数。当输入的数字为阶乘和数时,输出“YES”,否则输出“NO”。注意:输入的正整数的最高位不为0。
# 正整数145,1!+4!+5!等于145
import math

# 循环解法
# n = input()
# total = 0
# for i in n:
#     total = total + math.factorial(int(i))
# print(total)
# if int(n) == total:
#     print('YES')
# else:
#     print('NO')

import math

n = input()
s = sum(math.factorial(int(i)) for i in n)  # 推导式
if int(n) == s:
    print('YES')
else:
    print('NO')

《九章算术》的“盈不足篇”里有一个很有意思的老鼠打洞问题。原文这么说的:今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
这道题的意思就是说,有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。

n = int(input())
rat, mouse, day, time = 1, 1, 0, 1
distance_of_rat, distance_of_mouse = 0, 0  # 大老鼠和小老鼠的打洞距离
while n > 0:
    if n - mouse - rat < 0:
        time = n / (mouse + rat)
    n = n - mouse - rat
    distance_of_mouse = distance_of_mouse + time * mouse
    distance_of_rat = distance_of_rat + time * rat
    rat = rat * 2
    mouse = mouse / 2
    day = day + 1
print(day)
print(round(distance_of_mouse, 1), round(distance_of_rat, 1))
13日,如果恰逢星期五就叫“黑色星期五”。编程输出某年所有的黑色星期五的具体日期

补充说明

import datetime
datetime.datetime.now() 表示当前时间
datetime.datetime.now().isoweekday() # 返回1-7,代表周一到周日,当前时间所在本周第几天;

datetime.datetime.now().weekday() # 返回的0-6,代表周一到周日
import datetime
year = int(input())  #输入任意年份
days = [datetime.date(year, i, 13) for i in range(1, 13)]  #产生该年每个月13日 的列表
for i in days:
    if i.isoweekday()==5:
        print(i)
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值