以下所有测试实例来自于菜鸟教程:https://www.runoob.com/python3/python3-examples.html

1:Python 数字求和

自己的代码

#用户输入数字,并转换为浮点型(float)
a = float(input('请输入数字1:'))                                               
b = float(input('请数入数字2:'))                                               

#数字求和                                                                                                                                                                                                      
sum = a+b

# 显示计算结果                                                                                                                                                       
print('{0}和{1}的和为{2}'.format(a,b,sum))

执行结果:

请输入数字1: > 8.321
请输入数字2: > 4.2312
8.321和4.2312的和为12.5522

菜鸟教程参考代码

# 用户输入数字
num1 = input('输入第一个数字:')
num2 = input('输入第二个数字:')
 
# 求和
sum = float(num1) + float(num2)
 
# 显示计算结果
print('数字 {0} 和 {1} 相加结果为: {2}'.format(num1, num2, sum))

执行结果:

输入第一个数字:1.5
输入第二个数字:2.5
数字 1.5 和 2.5 相加结果为: 4.0

或者直接一行代码执行

print('两数之和为 %.1f' %(float(input('输入第一个数字:'))+float(input('输入第二个数字:'))))

%.1f 指的输出保留一位小数的浮点数。
%f 表示其输出格式为浮点数。

其他人参考笔记

写了一个报错重新输入的处理

while 1:    
    x=input("请输入数字x的值")    
    y=input("请输入数字y的值")    
    try:        
        sum=float(x)+float(y)    
    except:        
        print("输入的数字格式不正确,请重新输入")        
        continue    
    else:        
        print(f"两个数字之和为{sum:.2f}")        
        break

print(f" ")
格式化的字符串文字前缀为 f ,和接受的格式字符串相似str.format(),
以 f 开头,包含的{ }表达式在程序运行时会被表达式的值代替。

列子:

w = 2
print('%.2f' %w)
print(f'w = {w:.2f}')

#执行结果:
2:00
w = 2.00

2:Python 平方根

自己的代码

num = float(input("请输入数字"))                                                                                                                                                                     
                                                                                                                                                                                                      
a = num ** 0.5                                                                                                                                                                                       
                                                                                                                                                                                                     
print(f'%.2f的平方根为{a:.2f}'%num)

执行结果:

请输入数字 78
78.00的平方根为8.83

菜鸟教程参考代码

代码1

num = float(input('请输入一个数字: '))
num_sqrt = num ** 0.5
print(' %0.3f 的平方根为 %0.3f'%(num ,num_sqrt))

执行结果:

请输入一个数字: 4
 4.000 的平方根为 2.000

代码2

# 计算实数和复数平方根
# 导入复数数学模块
 
import cmath
 
num = int(input("请输入一个数字: "))
num_sqrt = cmath.sqrt(num)
print('{0} 的平方根为 {1:0.3f}+{2:0.3f}j'.format(num ,num_sqrt.real,num_sqrt.imag))

执行结果:

请输入一个数字: -8
-8 的平方根为 0.000+2.828j

cmath.sqrt(x) x的开方,以上支持 负数 和 复数 的平方根。

注:可能版本原因,本人3.8版本,菜鸟教程需要用到cmath.sqrt模块支持负数和复数,但是我测试取幂的方式num ** 0.5,同样支持负数 和 复数 的平方根运算。

3:Python 二次方程

主要根据公式法求解,上过初中的公式。

二次方程求根公式法:Δ=b^2-4ac,x=[-b±(b^2-4ac)^(1/2)]/2a。

自己的代码

a = float(input('输入 a: '))                                                                                                                              
b = float(input('输入 b: '))                                                                                                                              
c = float(input('输入 c: '))                                                                                                                              
                                                                                                                                                                                         
d = b**2-4*a*c
                                                                                                                                          x = (-b+d**0.5)/(2*a)                                                                                                                                     
x2 = (-b-d**0.5)/(2*a)  
                                                                                                                                  
print(f'方程式{a:.2f}x^2+({b:.2f}x)+({c:.2f})中x值为{x:.2f}和{x2:.2f}')

执行结果:

输入 a: > 1
输入 b: > -10
输入 c: > 24
方程式1.00x^2+(-10.00x)+(24.00)中x值为6.00和4.00

菜鸟教程参考代码

# 二次方程式 ax**2 + bx + c = 0
# a、b、c 用户提供,为实数,a ≠ 0
 
# 导入 cmath(复杂数学运算) 模块
import cmath
 
a = float(input('输入 a: '))
b = float(input('输入 b: '))
c = float(input('输入 c: '))
 
# 计算
d = (b**2) - (4*a*c)
 
# 两种求解方式
sol1 = (-b-cmath.sqrt(d))/(2*a)
sol2 = (-b+cmath.sqrt(d))/(2*a)
 
print('结果为 {0} 和 {1}'.format(sol1,sol2))

执行结果:

输入 a: 1
输入 b: 5
输入 c: 6
结果为 (-3+0j) 和 (-2+0j)

菜鸟教程同上面例子一样,用到cmath.sqrt模块支持负数和复数,我用取幂的方式num ** 0.5,同样支持负数 和 复数。

4:Python 计算三角形的面积

三角形面积公式有很多,这里简单的就用到海伦-秦九韶公式:

设三角形ABC三个角A、B、C的对边分别为a、b、c,三角形ABC的面积为S,则S=“p(p-a)(p-b)(p-c)的算术平方根”。其中p等于三角形周长的一半。即p=(1/2)x(a+b+c)。

自己的代码

a = float(input('输入 a: '))
b = float(input('输入 b: '))
c = float(input('输入 c: '))

p=(a+b+c)/2

s=(p*(p-a)*(p-b)*(p-c))**0.5
print(f'边长为{a:.2f},{b:.2f},{c:.2f}的三角形面积为{s:.2f}')

执行结果:

输入 a: 3
输入 b: 4
输入 c: 5
边长为3.00,4.00,5.00的三角形面积为6.00

菜鸟教程参考代码

a = float(input('输入三角形第一边长: '))
b = float(input('输入三角形第二边长: '))
c = float(input('输入三角形第三边长: '))
 
# 计算半周长
s = (a + b + c) / 2
 
# 计算面积
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('三角形面积为 %0.2f' %area)

执行结果:

输入三角形第一边长: 5
输入三角形第二边长: 6
输入三角形第三边长: 7
三角形面积为 14.70

其他人参考笔记

a = float (input ('输入三角形第一边长:'))
b = float (input ('输入三角形第二边长:'))
c = float (input ('输入三角形第三边长:'))
while a+b<c or a+c<b or b+c<a:
    print ('输入的边构不成三角形,请重新输入!')
    a = float (input ('输入三角形第一边长:'))
    b = float (input ('输入三角形第二边长:'))
    c = float (input ('输入三角形第三边长:'))

s = (a+b+c) /2
area = (s*(s-a)*(s-b)*(s-c))**0.5
print ('三角形面积为:%0.2f'%area)

加了三角形判断

5:Python 计算圆的面积

圆的公式:S=π r^2

自己的代码

pi = 3.14
a = float (input ('输入圆的半径r:'))

s=pi*a**2
print(f'圆面积为:{s:.2f}')

执行结果:

输入圆的半径r: 3
圆面积为:78.50

菜鸟教程参考代码

用到了定义方法

#定义一个方法来计算圆的面积
def findArea(r):
    PI = 3.142
    return PI * (r*r)
 
 #调用方法
print("圆的面积为 %.6f" % findArea(5))

执行结果:

圆的面积为 78.550000

其他人参考笔记

创建函数,可重复输入且非数字不会中

#计算圆的面积
import math

def cirarea():
    r=0
    while r <=0:
        print('请输入大于0的数字!')
        try:
            r=float(input('您所要求的圆的半径是:'))
        except:
            print('输入错误,请输入数字!')    
    else:
        p=math.pi
        square=p*r**2
        print('您所求的圆的面积为:%.4f'%square)
cirarea()

6:Python 随机数生成

自己的代码

根据输入的位数,生成随机数

import random
def random(length):
	min = 10**(length-1)
	max = 10**length -1
	return random.randint(min,max)
length = int(input("请输入随机的位数:"))
print(random(length))

执行结果:

请输入随机的位数: > 5
14771

菜鸟教程参考代码

# 导入 random(随机数) 模块
import random
 
print(random.randint(0,9))
执行以上代码输出结果为:
4

以上实例我们使用了 random 模块的 randint() 函数来生成随机数,你每次执行后都返回不同的数字(0 到 9),该函数的语法为:

random.randint(a,b)

函数返回数字 N ,N 为 a 到 b 之间的数字(a <= N <= b),包含 a 和 b。

其他人参考笔记

random() 函数中常见的函数如下:

import random

print( random.randint(1,10) )        # 产生 1 到 10 的一个整数型随机数  
print( random.random() )             # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) )     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
print( random.randrange(1,100,2) )   # 生成从1到100的间隔为2的随机整数

a=[1,3,5,6,7]                # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)

Python 生成随机数、随机字符串

import random
import string

# 随机整数:
print random.randint(1,50)

# 随机选取0到100间的偶数:
print random.randrange(0, 101, 2)

# 随机浮点数:
print random.random()
print random.uniform(1, 10)

# 随机字符:
print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')

# 多个字符中生成指定数量的随机字符:
print random.sample('zyxwvutsrqponmlkjihgfedcba',5)

# 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print ran_str

# 多个字符中选取指定数量的字符组成新字符串:
print ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5))

# 随机选取字符串:
print random.choice(['剪刀', '石头', '布'])

# 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print random.shuffle(items)

7:Python 摄氏温度转华氏温度

首先了解换算公式:
华氏度(℉)=32+摄氏度(℃)×1.8,
摄氏度(℃)=(华氏度(℉)-32)÷1.8。

自己的代码

a = int(input("请选择需要输入的温度,1:摄氏度。2:华氏度"))
def she(tem):
	hua = 32 + tme * 1.8
	return hua
def hua(tem):
	she = (tem-32) / 1.8
	return she
if a == 1:
	tem = float(input("请输入摄氏温度:"))
	b = she(tem)
	print(f'{tem:f}摄氏度,为{b:.4f}华氏度')
elif a == 2:
	tem = float(input("请输入华氏温度:"))
	b = hua(tem)
	print(f'{tem:f}华氏度,为{b:.4f}摄氏度')
else:
	print("请输入正确的值1或者2")

执行结果:

请选择需要输入的温度,1:摄氏度。2:华氏度 > 1
请输入摄氏温度: > 38

38.00摄氏度,为100.40华氏度

菜鸟教程参考代码

# 用户输入摄氏温度
 
# 接收用户输入
celsius = float(input('输入摄氏温度: '))
 
# 计算华氏温度
fahrenheit = (celsius * 1.8) + 32
print('%0.1f 摄氏温度转为华氏温度为 %0.1f ' %(celsius,fahrenheit))

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

输入摄氏温度: 38
38.0 摄氏温度转为华氏温度为 100.4

其他人参考笔记

a = input("请输入带有符号的温度值: ")
if a[-1] in ['F','f']:
    C = (eval(a[0:-1]) - 32)/1.8
    print("转换后的温度是{:.1f}C".format(C))
elif a[-1] in ['C','c']:
    F = 1.8*eval(a[0:-1]) + 32
    print("转换后的温度是{:.1f}F".format(F))
else:
    print("输入格式错误")

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

请输入带有符号的温度值: 38C
转换后的温度是100.4F

8:Python 交换变量

自己的代码

a = input("a的值:")
b = input("b的值:")
print(f"a值为{a},b值为{b}")
a,b = b,a
print(f"交换后a值为{a},b值为{b}")

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

a的值: > 10
b的值: > 20

a值为10,b值为20                                                                                                                                                                                      
交换后a值为20,b值为10

菜鸟教程参考代码

# 用户输入
 
x = input('输入 x 值: ')
y = input('输入 y 值: ')
 
# 创建临时变量,并交换
temp = x
x = y
y = temp
 
print('交换后 x 的值为: {}'.format(x))
print('交换后 y 的值为: {}'.format(y))

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

输入 x 值: 2
输入 y 值: 3
交换后 x 的值为: 3
交换后 y 的值为: 2

以上实例中,我们创建了临时变量 temp ,并将 x 的值存储在 temp 变量中,接着将 y 值赋给 x,最后将 temp 赋值给 y 变量。

不使用临时变量。

# 用户输入
 
x = input('输入 x 值: ')
y = input('输入 y 值: ')
 
# 不使用临时变量
x,y = y,x
 
print('交换后 x 的值为: {}'.format(x))
print('交换后 y 的值为: {}'.format(y))

其他人参考笔记

不使用临时变量:

# 用户输入
x = int(input('输入 x 值: '))
y = int(input('输入 y 值: '))

x = x + y
y = x - y
x = x - y

print('交换后 x 的值为: {}'.format(x))
print('交换后 y 的值为: {}'.format(y))

异或形式:

#交换变量
x = int(input('输入 X 值:'))
y = int(input('输入 Y 值:'))
x = x ^ y
y = x ^ y
x = x ^ y
print('交换后的 X 值为:',x)
print('交换后的 Y 值为:',y)

9:Python 判断字符串是否为数字

自己的代码

逻辑,通过float 类型判断,数字float不会报错,报错就不是数字。除了异常报错,用try except 语法。

def isnumber(a):
    try:
        float(a)
        return (f"{a}是数字")
    except:
        return (f"{a}不是数字")

a = input("请输入值:")

print(isnumber(a))

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

请输入值:1.213123
1.213123是数字

请输入值:asd
asd不是数字

菜鸟教程参考代码

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
 
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass
 
    return False
 
# 测试字符串和数字
print(is_number('foo'))   # False
print(is_number('1'))     # True
print(is_number('1.3'))   # True
print(is_number('-1.37')) # True
print(is_number('1e3'))   # True
 
# 测试 Unicode
# 阿拉伯语 5
print(is_number('٥'))  # True
# 泰语 2
print(is_number('๒'))  # True
# 中文数字
print(is_number('四')) # True
# 版权号
print(is_number('©'))  # False

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

False
True
True
True
True
True
True
True
False

更多方法
Python isdigit() 方法检测字符串是否只由数字组成。

#!/usr/bin/python3

str = "123456";
print (str.isdigit())

str = "Runoob example....wow!!!"
print (str.isdigit())

以上实例输出结果如下:

True
False

Python isnumeric() 方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。
isnumeric() 方法检测字符串是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。

指数类似 ² 与分数类似 ½ 也属于数字。

#!/usr/bin/python3

str = "runoob2016"  
print (str.isnumeric())

str = "23443434"
print (str.isnumeric())

以上实例输出结果如下:

False
True

10:Python 判断奇数偶数

自己的代码

num = int(input("输入一个数字: "))
if (num % 2) == 0:
   print(f"{num} 是偶数")
else:
   print(f"{num} 是奇数")

以上实例输出结果如下:

输入一个数字: 2
 2 是奇数
 
输入一个数字: 21
 21 是奇数

菜鸟教程参考代码

num = int(input("输入一个数字: "))
if (num % 2) == 0:
   print("{0} 是偶数".format(num))
else:
   print("{0} 是奇数".format(num))

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

输入一个数字: 3
3 是奇数

其他人代码参考

优化加入输入判断:

while True:
    try:
        num=int(input('输入一个整数:')) #判断输入是否为整数
    except ValueError: #不是纯数字需要重新输入
        print("输入的不是整数!")
        continue
    if num%2==0:
        print('偶数')
    else:
        print('奇数')
    break

简洁就是美丽。

num = eval(input('Number:\n'))
print('{} is '.format(num) + ('even number.' if num % 2 == 0 else 'odd number.'))

11:Python 判断闰年

自己的代码

year = int(input("输入年份:"))

if (year % 100) == 0:
    if (year % 400) == 0:
        print(f"{year}是闰年")
    else:
        print(f"{year}不是闰年")
else:
    if (year % 4) == 0:
        print(f"{year}是闰年")
    else:
        print(f"{year}不是闰年")

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

输入年份:1900
1900不是闰年

输入年份:2004
2004是闰年

菜鸟教程参考代码

year = int(input("输入一个年份: "))
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年
       else:
           print("{0} 不是闰年".format(year))
   else:
       print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
else:
   print("{0} 不是闰年".format(year))

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

输入一个年份: 2000
2000 是闰年
输入一个年份: 2011
2011 不是闰年

其他人代码参考

但其实 Python 的 calendar 库中已经封装好了一个方法 isleap() 来实现这个判断是否为闰年:

>>> import calendar
>>> print(calendar.isleap(2000))
True
>>> print(calendar.isleap(1900))
False

实例

import calendar

year = int(input("请输入年份:"))
check_year=calendar.isleap(year)
if check_year == True:
    print ("闰年")
else:
    print ("平年")

12:Python 获取最大值函数

自己的代码

print(max(1, 2))
执行结果:
2

菜鸟教程参考代码

使用max()方法求最大值:

# 最简单的
print(max(1, 2))
print(max('a', 'b'))
 
# 也可以对列表和元组使用
print(max([1,2]))
print(max((1,2)))
 
# 更多实例
print("80, 100, 1000 最大值为: ", max(80, 100, 1000))
print("-20, 100, 400最大值为: ", max(-20, 100, 400))
print("-80, -20, -10最大值为: ", max(-80, -20, -10))
print("0, 100, -400最大值为:", max(0, 100, -400))

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

2
b
2
2
80, 100, 1000 最大值为:  1000
-20, 100, 400最大值为:  400
-80, -20, -10最大值为:  -10
0, 100, -400最大值为: 100

13:Python 质数判断

一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的因数。

自己的代码

num = int(input("输入整数:"))

if num > 1:
    for i in range(2,num):
        if num % i == 0:
            print(f"{num}不是质数")
            break
    else:
        print(f"{num}是质数")

执行结果:

输入整数:23
23是质数

输入整数:25
25不是质数

注意点:range 是包含左边,不包含右边,如:range(1,5)范围为: 1,2,3,4。

菜鸟教程参考代码

# 用户输入数字
num = int(input("请输入一个数字: "))
 
# 质数大于 1
if num > 1:
   # 查看因子
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"不是质数")
           print(i,"乘于",num//i,"是",num)
           break
   else:
       print(num,"是质数")
       
# 如果输入的数字小于或等于 1,不是质数
else:
   print(num,"不是质数")

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

请输入一个数字: 1
1 不是质数

请输入一个数字: 4
4 不是质数
2 乘于 2 是 4

请输入一个数字: 5
5 是质数

其他人代码参考

原作者的算法基本正确,但时间复杂度较高,在判断一个大数是质数还是合数的情况下,应该在查看因子那里的循环中使用到平方根。代码如下:

# Python 程序用于检测用户输入的数字是质数还是合数
import math
# 用户输入数字
num = int(input("请输入一个数字: "))
# 质数大于 1
if num > 1:
    # 找到其平方根( √ ),减少算法时间
    square_num = math.floor( num ** 0.5 )
    # 查找其因子
    for i in range(2, (square_num+1)): #将平凡根加1是为了能取到平方根那个值
        if (num % i) == 0:
            print(num, "是合数")
            print(i, "乘于", num // i, "是", num)
            break
    else:
        print(num, "是质数")
        # 如果输入的数字小于或等于 1,不是质数
else:
    print(num, "既不是质数,也不是合数")

原理是用了开根号法:

假如一个数N是合数,它有一个约数a,那么有a×b=N

则a、b两个数中必有一个大于或等于根号N,一个小于或等于根号N。

因此,只要小于或等于根号N的数(1除外)不能整除N,则N一定是素数。

14:Python 输出指定范围内的素数

同上,只是加了for取num值。

自己的代码

minn = int(input("输入最小整数:"))
maxn = int(input("输入最大整数:"))
for num in range(minn,maxn+1):
	if num > 1:
	    for i in range(2,num):
	        if num % i == 0:
	            print(f"{num}不是质数")
	            break
	    else:
	        print(f"{num}是质数")

执行结果:

输入最小整数:11
输入最大整数:20

 11是质数                                                                                                                                                                                             
 12不是质数                                                                      
 13是质数                                                                        
 14不是质数                                                                      
 15不是质数                                                                      
 16不是质数                                                                      
 17是质数                                                                        
 18不是质数                                                                      
 19是质数                                                                        
 20不是质数

菜鸟教程参考代码

lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
 
for num in range(lower,upper + 1):
    # 素数大于 1
    if num > 1:
        for i in range(2,num):
            if (num % i) == 0:
                break
        else:
            print(num)

其他人代码参考

与前面判断是否是质数一样,作者算法中未使用到"开根号法"来节约时间复杂度,同时为加入个数等说明,因此对其改进如下:

import math

# 输出指定范围内的素数
# 用户输入范围
lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
print("素数结果如下:")
print("="*10)
pri_num = 0
com_num = 0
for num in range(lower, upper + 1):
    # 找到其平方根( √ ),减少算法时间
    square_num = math.floor(num ** 0.5)
    # 素数大于 1
    if num > 1:
        for i in range(2, (square_num + 1)):
            if (num % i) == 0:
                com_num += 1
                break
        else:
            pri_num += 1
            print(num)
print("="*10)
print(com_num,'个合数')
print(pri_num,'个素数')

15:Python 阶乘实例

整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1。即:n!=1×2×3×…×n。

自己的代码

num = int(input("请输入一个数字: "))
s	= 1
if num > 0:
   for i in range(1,num+1):
   		s = s * i
   print(f"{num}的阶乘是{s}")

执行结果:

请输入一个数字: 10
10的阶乘是3628800

菜鸟教程参考代码

# 通过用户输入数字计算阶乘
 
# 获取用户输入的数字
num = int(input("请输入一个数字: "))
factorial = 1
 
# 查看数字是负数,0 或 正数
if num < 0:
   print("抱歉,负数没有阶乘")
elif num == 0:
   print("0 的阶乘为 1")
else:
   for i in range(1,num + 1):
       factorial = factorial*i
   print("%d 的阶乘为 %d" %(num,factorial))

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

请输入一个数字: 3
3 的阶乘为 6

其他人代码参考

查了一下 math 库的帮助,发现自带阶乘函数。所以代码可以简洁一点。

import math
num = int(input("请输入一个数字:"))
if num < 0:
    print("负数是没有阶乘的!")
else:
    print("{0} 的阶乘为 {1}".format(num, math.factorial(num)))

16:Python 九九乘法表

自己的代码

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={i*j}",end=" ")
    print()

执行结果:

1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

print() 默认为换行,省略值end=‘/n’,及print() = print(end=‘/n’),
print(“aa”,end=" ,"),及更改了/n默认值,不会换行,而是以“ ,”结尾。

菜鸟教程参考代码

# 九九乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(j, i, i*j), end='')
    print()

通过指定end参数的值,可以取消在末尾输出回车符,实现不换行。

其他人代码参考

一句话输出99乘法表,可以参考一下:

print('\n'.join(' '.join("%dx%d=%-2d" % (x, y, x*y) for x in range(1, y+1)) for y in range(1, 10)))

17:Python 斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

自己的代码

如果在细一点,需要加个if大于等于1的判断

num = int(input("输入大于1的范围值:"))

a = 0
b = 1

print("0,1",end=',')
while True:
    c = a + b
    a,b=b,c
    if c > num:
        break
    print(c,end=',')

执行结果:

输入大于1的范围值:100
0,1,1,2,3,5,8,13,21,34,55,89,

菜鸟教程参考代码

# Python 斐波那契数列实现
 
# 获取用户输入数据
nterms = int(input("你需要几项?"))
 
# 第一和第二项
n1 = 0
n2 = 1
count = 2
 
# 判断输入的值是否合法
if nterms <= 0:
   print("请输入一个正整数。")
elif nterms == 1:
   print("斐波那契数列:")
   print(n1)
else:
   print("斐波那契数列:")
   print(n1,",",n2,end=" , ")
   while count < nterms:
       nth = n1 + n2
       print(nth,end=" , ")
       # 更新值
       n1 = n2
       n2 = nth
       count += 1

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

你需要几项? 10
斐波那契数列:
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 ,

我写的是范围,这个是位数

其他人代码参考

用函数方法,值得参考

def fib(n):
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()
fib(1000)  # 取值范围可以任意

# 输出结果如下:
# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

18:Python 阿姆斯特朗数

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。

1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。

自己的代码

显示范围内的所有阿姆斯特朗数,用字符串的形式,获取每位数的值并计算。

num=int(input("请输入范围值:"))

for n in range(1,num+1):
    sum = 0
    numlen=len(str(n))
#    print(f"{n}的位数为{numlen}")

    for i in range(0,numlen):
        s = int(str(n)[i])
        s1 = s**numlen
        sum = sum + s1
#        print(f"{n}的第{i}位为{s},{s}的{numlen}次方为{s1},和的值为{sum}")
        if sum == n:
            print(f"{n}为 阿姆斯特朗数")

执行结果:

输入范围:10000
1为 阿姆斯特朗数
2为 阿姆斯特朗数
3为 阿姆斯特朗数
4为 阿姆斯特朗数
5为 阿姆斯特朗数
6为 阿姆斯特朗数
7为 阿姆斯特朗数
8为 阿姆斯特朗数
9为 阿姆斯特朗数
153为 阿姆斯特朗数
370为 阿姆斯特朗数
370为 阿姆斯特朗数
371为 阿姆斯特朗数
407为 阿姆斯特朗数
1634为 阿姆斯特朗数
6688为 阿姆斯特朗数
8208为 阿姆斯特朗数
9474为 阿姆斯特朗数

菜鸟教程参考代码

菜鸟教程,是通过除数余数来获取每位数的值。

# Python 检测用户输入的数字是否为阿姆斯特朗数
 
# 获取用户输入的数字
num = int(input("请输入一个数字: "))
 
# 初始化变量 sum
sum = 0
# 指数
n = len(str(num))
 
# 检测
temp = num
while temp > 0:
   digit = temp % 10
   sum += digit ** n
   temp //= 10
 
# 输出结果
if num == sum:
   print(num,"是阿姆斯特朗数")
else:
   print(num,"不是阿姆斯特朗数")

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

请输入一个数字: 345
345 不是阿姆斯特朗数

请输入一个数字: 153
153 是阿姆斯特朗数

请输入一个数字: 1634
1634 是阿姆斯特朗数

获取指定期间内的阿姆斯特朗数

lower = int(input("最小值: "))
upper = int(input("最大值: "))
 
for num in range(lower,upper + 1):
   # 初始化 sum
   sum = 0
   # 指数
   n = len(str(num))
 
   # 检测
   temp = num
   while temp > 0:
       digit = temp % 10
       sum += digit ** n
       temp //= 10
 
   if num == sum:
       print(num)

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

最小值: 1
最大值: 10000
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474

其他人代码参考

获取指定期间内的阿姆斯特朗数

lower=int(input("Please input a number: "))
upper=int(input("Please input a number: "))
sum=0
for num in range(lower,upper):
    l = len(str(num))
    for n in str(num):
        sum=sum+int(n)**l
    if num==sum:
        print(num)
    sum=0

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

python默认方法转换值

自己的代码

n=int(input("请输入值:"))
print(f"{n}的二进制为{bin(n)},十进制为{oct(n)},十六进制为{hex(n)}")

执行结果

请输入值:10
10的二进制为0b1010,十进制为0o12,十六进制为0xa

菜鸟教程参考代码

# 获取用户输入十进制数
dec = int(input("输入数字:"))
 
print("十进制数为:", dec)
print("转换为二进制为:", bin(dec))
print("转换为八进制为:", oct(dec))
print("转换为十六进制为:", hex(dec))

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

输入数字:5
十进制数为:5
转换为二进制为: 0b101
转换为八进制为: 0o5
转换为十六进制为: 0x5

其他人代码参考

具体实现

十进制到二进制:

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:

20:Python ASCII码与字符相互转换

同上,用python默认方法转换值

自己的代码

n=input("请输入字符:")
print(f"{n}的ASCII 码为{ord(n)}")

同理,chr(a))为ASCII码转字符。

执行结果:

请输入字符:a
a的ASCII 码为97

菜鸟教程参考代码

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

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

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