python3日期相减_Python3 实例(三)

4f1f9df64a55d84145c94cb0024d8bf2.png

Python 十进制转二进制、八进制、十六进制

以下代码用于实现十进制转二进制、八进制、十六进制:

实例(Python 3.0+)

# -*- coding: UTF-8 -*-
 # Filename : test.py
 # author by : www.runoob.com
 
 # 获取用户输入十进制数
 dec = int(input("输入数字:"))
 
 print("十进制数为:", dec)
 print("转换为二进制为:", bin(dec))
 print("转换为八进制为:", oct(dec))
 print("转换为十六进制为:", hex(dec))

执行以上代码输出结果为:

python3 test.py 
输入数字:5
十进制数为:5
转换为二进制为: 0b101
转换为八进制为: 0o5
转换为十六进制为: 0x5
python3 test.py 
输入数字:12
十进制数为:12
转换为二进制为: 0b1100
转换为八进制为: 0o14
转换为十六进制为: 0xc

笔记

具体实现

十进制到二进制:

def dec2bin(num):
 l = []
 if num < 0:
 return '-' + dec2bin(abs(num))
 while True:
 num, remainder = divmod(num, 2)
 l.append(str(remainder))
 if num == 0:
 return ''.join(l[::-1])

十进制到八进制:

def dec2oct(num):
 l = []
 if num < 0:
 return '-' + dec2oct(abs(num))
 while True:
 num, remainder = divmod(num, 8)
 l.append(str(remainder))
 if num == 0:
 return ''.join(l[::-1])

十进制到十六进制:

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]def dec2hex(num):
 l = []
 if num < 0:
 return '-' + dec2hex(abs(num))
 while True:
 num,rem = divmod(num, 16)
 l.append(base[rem])
 if num == 0:
 return ''.join(l[::-1])

Python ASCII码与字符相互转换

以下代码用于实现ASCII码与字符相互转换:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com
 # 用户输入字符
 c = input("请输入一个字符: ")
 
 # 用户输入ASCII码,并将输入的数字转为整型
 a = int(input("请输入一个ASCII码: "))
 
 print( c + " 的ASCII 码为", ord(c))
 print( a , " 对应的字符为", chr(a))

执行以上代码输出结果为:

python3 test.py 
请输入一个字符: a
请输入一个ASCII码: 101
a 的ASCII 码为 97
101 对应的字符为 e

Python 最大公约数算法

以下代码用于实现最大公约数算法:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com
# 定义一个函数
def hcf(x, y):
 """该函数返回两个数的最大公约数"""
 
 # 获取最小值
 if x > y: 
 smaller = y
 else: 
 smaller = x
 
 for i in range(1,smaller + 1): 
 if((x % i == 0) and (y % i == 0)): 
 hcf = i
 
 return hcf
 
# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print( num1,"和", num2,"的最大公约数为", hcf(num1, num2))

执行以上代码输出结果为:

输入第一个数字: 54
输入第二个数字: 24
54 和 24 的最大公约数为 6

笔记

可按以下思路减少循环次数:

1. 当最小值为最大公约数时,直接返回;

2. 当最小值不为最大公约数时,最大公约数不会大于最小值的1/2;

3. 求最大公约数理应从大到小循环递减求最大。

实例:

def gcd(a, b):
 if b > a:
 a, b = b, a # b为最小值
 if a % b == 0:
 return b # 判断b是否为最大公约数
 for i in range(b//2+1, 1, -1): # 倒序求最大公约数更合理
 if b % i == 0 and a % i == 0:
 return i
 return 0while(True):
 a = int(input("Input 'a':"))
 b = int(input("Input 'b':"))
 print(gcd(a, b))

Python 最小公倍数算法

以下代码用于实现最小公倍数算法:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com 
# 定义函数
def lcm(x, y): 
 # 获取最大的数
 if x > y: 
 greater = x
 else: 
 greater = y
 
 while(True): 
 if((greater % x == 0) and (greater % y == 0)): 
 lcm = greater
 break
 greater += 1
 
 return lcm
 
# 获取用户输入
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))

执行以上代码输出结果为:

输入第一个数字: 54
输入第二个数字: 24
54 和 24 的最小公倍数为 216

笔记

按以下思路可减少循环次数:

1.当最大值为最小公倍数时,返回最大值;

2.当最大值不为最小公倍数时,最小公倍数为最大值的倍数。

实例:

# 最小公倍数def lcm(a, b):
 if b > a:
 a, b = b, a # a为最大值
 if a % b == 0:
 return a # 判断a是否为最小公倍数
 mul = 2 # 最小公倍数为最大值的倍数
 while a*mul % b != 0:
 mul += 1
 return a*mul
while(True):
 a = int(input("Input 'a':"))
 b = int(input("Input 'b':"))
 print(lcm(a, b))

Python 简单计算器实现

以下代码用于实现简单计算器实现,包括两个数基本的加减乘除运输:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com
# 定义函数
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("非法输入")

执行以上代码输出结果为:

选择运算:
1、相加
2、相减
3、相乘
4、相除
输入你的选择(1/2/3/4):2
输入第一个数字: 5
输入第二个数字: 2
5 - 2 = 3

笔记

参考方法:

def divide(x,y):
 #相除
 if y ==0:
 print('0不能做为分母')
 return
 else:
 return x/y
choice =int(input("请选择运算:
1,相加
2,相减
3,相乘
4,相除
请输入运算(1/2/3/4):"))
num1 = float(input("请输入第一个数:"))
num2 = float(input("请输入第二个数:"))if choice ==1:
 print("{}+{}={}".format(num1,num2,num1+num2))elif choice ==2:
 print("{}-{}={}".format(num1,num2,num1-num2))elif choice ==3:
 print("{}x{}={}".format(num1,num2,num1*num2))elif choice ==4:
 print("{}/{}={}".format(num1,num2,divide(num1,num2)))else:
 print("选择的运算为非法输入")

Python 生成日历

以下代码用于生成指定日期的日历:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com
# 引入日历模块
importcalendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))

执行以上代码输出结果为:

输入年份: 2015
输入月份: 6
 June 2015
Mo Tu We Th Fr Sa Su
 1 2 3 4 5 6 7
 8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Python 使用递归斐波那契数列

以下代码使用递归的方式来生成斐波那契数列:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com
def recur_fibo(n):
 """递归函数
 输出斐波那契数列"""
 if n <= 1: 
 return n
 else: 
 return(recur_fibo(n-1) + recur_fibo(n-2))
 
# 获取用户输入
nterms = int(input("您要输出几项? "))
# 检查输入的数字是否正确
if nterms <= 0:
 print("输入正数")
else:
 print("斐波那契数列:")
 for i in range(nterms): 
 print(recur_fibo(i))

执行以上代码输出结果为:

您要输出几项? 10
斐波那契数列:
0
1
1
2
3
5
8
13
21
34

Python 文件 IO

以下代码演示了Python基本的文件操作,包括 open,read,write:

实例(Python 3.0+)

# Filename : test.py
# author by : www.runoob.com
# 写文件
with open("test.txt", "wt") as out_file:
 out_file.write("该文本会写入到文件中
看到我了吧!")
 
# Read a file
with open("test.txt", "rt") as in_file:
 text = in_file.read()
print(text)

执行以上代码输出结果为:

该文本会写入到文件中
看到我了吧!

笔记

  • w, r, wt, rt 都是 python 里面文件操作的模式。
  • w 是写模式,r 是读模式。
  • t 是 windows 平台特有的所谓 text mode(文本模式),区别在于会自动识别 windows 平台的换行符。
  • 类 Unix 平台的换行符是 ,而 windows 平台用的是 两个 ASCII 字符来表示换行,python 内部采用的是 来表示换行符。
  • rt 模式下,python 在读取文本时会自动把 转换成 。
  • wt 模式下,Python 写文件时会用 来表示换行。

Python 字符串判断

以下代码演示了Python字符串的判断:

实例

# Filename : test.py
# author by : www.runoob.com
# 测试实例一
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()) # 判断所有字符都是空白字符、	、
、

print("------------------------")
# 测试实例二
print("测试实例二")
str = "runoob"
print(str.isalnum()) 
print(str.isalpha()) 
print(str.isdigit()) 
print(str.islower()) 
print(str.isupper()) 
print(str.istitle()) 
print(str.isspace()) 

执行以上代码输出结果为:

测试实例一
False
False
False
True
False
False
False
------------------------
测试实例二
True
True
False
True
False
False

Python 字符串大小写转换

以下代码演示了如何将字符串转换为大写字母,或者将字符串转为小写字母等:

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

执行以上代码输出结果为:

WWW.RUNOOB.COM
www.runoob.com
Www.runoob.com
Www.Runoob.Com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值