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
- wt
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