练习3.10

简单计算器实现

def add(x, y):
    """相加"""

    return x + y


def subtract(x, y):
    """相减"""

    return x - y


def multiply(x, y):
    """相乘"""

    return x * y


def divide(x, y):
    """相除"""

    return x / y


# 用户输入
print("选择运算:")
print("1、相加")
print("2、相减")
print("3、相乘")
print("4、相除")

choice = input("输入你的选择(1/2/3/4):")

num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

if choice == '1':
    print(num1, "+", num2, "=", add(num1, num2))

elif choice == '2':
    print(num1, "-", num2, "=", subtract(num1, num2))

elif choice == '3':
    print(num1, "*", num2, "=", multiply(num1, num2))

elif choice == '4':
    print(num1, "/", num2, "=", divide(num1, num2))
else:
    print("非法输入")

生成日历

# 引入日历模块
import calendar

# 输入指定年月
y = int(input("输入年份: "))
m = int(input("输入月份: "))

# 显示日历
print(calendar.month(y, m))

使用递归斐波那契数列

def recur_fibo(n):
    """递归函数
    输出斐波那契数列"""
    if n <= 1:
        return n
    else:
        return (recur_fibo(n - 1) + recur_fibo(n - 2))


# 获取用户输入
n= int(input("您要输出几项? "))

# 检查输入的数字是否正确
if n<= 0:
    print("输入正数")
else:
    print("斐波那契数列:")
    for i in range(n):
        print(recur_fibo(i))

字符串判断

print("测试实例一")
str = "runoob.com"
print(str.isalnum()) # 判断所有字符都是数字或者字母
print(str.isalpha()) # 判断所有字符都是字母
print(str.isdigit()) # 判断所有字符都是数字
print(str.islower()) # 判断所有字符都是小写
print(str.isupper()) # 判断所有字符都是大写
print(str.istitle()) # 判断所有单词都是首字母大写,像标题
print(str.isspace()) # 判断所有字符都是空白字符、\t、\n、\r

字符串大小写转换

str = "www.runoob.com"
print(str.upper())          # 把所有字符中的小写字母转换成大写字母
print(str.lower())          # 把所有字符中的大写字母转换成小写字母
print(str.capitalize())     # 把第一个字母转化为大写字母,其余小写
print(str.title())          # 把每个单词的第一个字母转化为大写,其余小写 

计算每个月天数

import calendar
y=int(input('请输入年份'))
m=int(input('请输入月份'))
monthRange = calendar.monthrange(y,m)
print(monthRange)

获取昨天日期

import datetime
def getYesterday():
    today = datetime.date.today()
    oneday = datetime.timedelta(days=1)
    yesterday = today - oneday
    return yesterday

# 输出
print(getYesterday())

list 常用操作

>>> li 
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.index("example")
5
>>> li.index("new")
2
>>> li.index("c")
Traceback (innermost last):
 File "", line 1, in ?
ValueError: list.index(x): x not in list
>>> "c" in li
False
>>> li = ['a', 'b', 'mpilgrim']
>>> li = li + ['example', 'new']
>>> li 
['a', 'b', 'mpilgrim', 'example', 'new']
>>> li += ['two']         
>>> li 
['a', 'b', 'mpilgrim', 'example', 'new', 'two']
>>> li = [1, 2] * 3
>>> li 
[1, 2, 1, 2, 1, 2]
params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}

# 使用 f-string 格式化键值对
formatted_pairs = [f"{k}={v}" for k, v in params.items()]

# 使用 join() 拼接字符串
result = ";".join(formatted_pairs)

print(result)
>>> li = ["a", "mpilgrim", "foo", "b", "c", "b", "d", "d"]
>>> [elem for elem in li if len(elem) > 1]
['mpilgrim', 'foo']
>>> [elem for elem in li if elem != "b"]
['a', 'mpilgrim', 'foo', 'c', 'd', 'd']
>>> [elem for elem in li if li.count(elem) == 1]
['a', 'mpilgrim', 'foo', 'c']
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ";".join(li)
>>> s 
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";")   
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(";", 1) 
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']

约瑟夫生者死者小游戏

30 个人在一条船上,超载,需要 15 人下船。

于是人们排成一队,排队的位置即为他们的编号。

报数,从 1 开始,数到 9 的人下船。

如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

people={}
for x in range(1,31):
    people[x]=1 #值为一表明都在船上
print(people)
check=0 #check:用于计数,每当计数达到9时,当前的人下船。
i=1 #i:当前检查的人的编号。
j=0 #:已经下船的人数
while i<31:
    if i==30:
        i=1
    elif j == 15:
        break
    else:
        if people[i] == 0:
            i+=1
            continue
        else:
            check+=1
            if check == 9:
                people[i]=0
                check = 0
                print("{}号下船了".format(i))
                j+=1
            else:
                i+=1
                continue
def a(n,k):
    circle=list(range(1,n+1))
    index=0
    while len(circle)>15:
        index=(index+k-1)%len(circle)
        eliminated=circle.pop(index)
        print(f'淘汰了第{eliminated}个人')
    return  circle
n=30
k=9
result=a(30,9)
print(f'剩下的15个人为:{result}')

Python 五人分鱼

​编辑 Python3 实例

A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。

C、D、E依次醒来,也按同样的方法拿鱼。

问他们至少捕了多少条鱼?

def find_min_fish():
    n = 1  # 从1开始尝试
    while True:
        n += 1  # 每次尝试下一个数
        fish = n
        for _ in range(5):  # 五个人依次分鱼
            if (fish - 1) % 5 != 0:  # 如果不能整除5,说明这个n不满足条件
                break
            fish = (fish - 1) // 5 * 4  # 拿走一份,剩下4/5
        else:  # 如果所有人都成功分鱼,说明找到了满足条件的n
            return n

# 找到最小的鱼的数量
min_fish = find_min_fish()
print(f"他们至少捕了 {min_fish} 条鱼")

你可能感兴趣的:(python,开发语言)