Python学习中的错误总结

终于下定决心认真学习Python了,并且发誓要学精通,根据费曼学习法则,我准备把入门第一天起的所有错误和学习感悟记录下来,以便后续复习和提高。

使用资料https://github.com/jackfrued/Python-100-Days/​​​​​​

2022/09/22

Day 01遇到了很多严重的小错误,很没头脑,希望下次不要再错了。 //另两个错误:pi(计算圆的周长和面积)没有定义也没有引用库就直接使用;字符串 " "和布尔值(直接写比较运算表达式)的表达有区别。注意闰年比较运算表达式中and与or的使用。

"""
华氏温度与摄氏温度转换
"""
f = float(input("请输入华氏温度:"))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f,c)) #注意 % 前面后面都不能加 ,
print(f'{f:.1f}华氏度 = {c:.1f}摄氏度') #同样的输出效果

"""
分支结构-用户身份验证
"""
username = input('请输入用户名:')
password = input('请输入口令:')
#用户名设置为admin且密码是123456
if username == 'admin' and password == '123456': 
    print('身份验证成功!')  #注意Python中If-else的 : 和代码块缩进 4个空格
else:
    print('身份验证失败!')
"""
分段函数
"""
x = float(input('x = '))
if x > 1:    #注意if-else比较判别式的写法,比较的顺序
    y = 3 * x - 5
elif x >= -1:    # -1 <= x <= 1
    y = x + 2
else:            # x < -1
    y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y)) # f(x的值) = y 的值
"""
判断三条边能否构成三角形,并计算面积和周长
"""
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a: #注意缩进
    print('周长: %f' % (a + b + c))
    p = (a + b + c) / 2
    area = (p * (p - a) * (p - b) * (p - c)) ** 0.5
    print('面积: %f' % (area)) #海伦公式
else:
    print('不能构成三角形')
"""
1-100之间的偶数求和
"""
sum = 0
for x in range(2,101,2): #初始值2,结束值100,左闭右开,步长2
    sum += x
print(sum)

2022/09/23

学得很慢,但是重在积累。 期间JupyterNotebook运行时总是有*,代码检查没问题,上网搜索解答,尝试重启Kernel总算能跑了,但是原理没搞懂。

"""
九九乘法表,注意列数范围、运算式的空格和换行的表达
"""
for i in range(1, 10): #行数1-9
    for j in range(1, i+1): #列数1到当前行数,巧妙使用行数与乘数的关系
        print('%d*%d=%d' % (i, j, i * j), end = '\t') #此处用制表符来隔开每个算式
    print() #每行结束后换行
"""
素数判断,注意除数的选择,对比从1除到该数本身(时间复杂度)
"""
from math import sqrt
number = int(input('输入一个正整数:'))
end = int(sqrt(number)) #求除数的上界,sqrt开根号
is_prime = True #素数标记
for x in range(2, end + 1): #range左闭右开
    if number % x == 0: #注意缩进
        is_prime = False
        break #注意跳出循环
if is_prime and number != 1:
    print('%d是素数' % number)
else:
    print('%d不是素数' % number)
"""
求最大公约数和最小公倍数
注意交换两数的写法,找公因子,最大公约数的求法,对比辗转相除法
"""
x = int(input('输入第一个整数:'))
y = int(input('输入第二个整数:'))
if x > y:
   x, y = y, x  #很简洁的写法交换x和y的值,x始终是最小值,对于找公因子重要O(n)
for factor in range(x, 0, -1): #从较小的数开始找公因子
    if x % factor == 0 and y % factor == 0: #and是短路判断前面是false就跳出
        print('%d和%d的最大公约数是%d' % (x, y, factor)) #因为递减查找
        print('%d和%d的最小公倍数是%d' % (x, y, x * y // factor)) 
        break  #找到就退出循环
"""
打印如下图的三角形
*
**
***
****
*****
"""
row = int(input('请输入行数: '))
for i in range(row):
    for _ in range(i + 1):
        print('*', end='')
    print()
"""
打印如下图的三角形
    *
   **
  ***
 ****
*****
"""
row = int(input('请输入行数: '))
for i in range(row):
    for j in range(row):
        if j < row - i - 1:
            print(' ', end='')
        else:
            print('*', end='')
    print()
"""
打印如下图的三角形
    *
   ***
  *****
 *******
*********
"""
row = int(input('请输入行数: '))
for i in range(row):
    for _ in range(row - i - 1):
        print(' ', end='')
    for _ in range(2 * i + 1):
        print('*', end='')
    print() 

2022/09/26 

在例子里学习简洁精妙的思维真的是一种享受,一些巧妙运用往往令人感慨前辈的智慧和功底之深厚,这无疑是一种工匠精神。

"""
求水仙花数:注意整除是//,%是从右边开始保留,//是从右边开始删除
"""
for num in range(100, 1000):
    low = num % 10  #相当于右边保留一位,即个位
    mid = num // 10 % 10 #右边删除一位,再保留最右边一位,即十位
    high = num // 100  #右边删除两位,即百位
    if num == low ** 3 + mid ** 3 + high ** 3 :  #符合水仙花数定义
        print(num)
"""
正整数的逆置输出:如何对未知长度的数字取各位数——刀削面
一个while循环,一个“容器”reversed_num,%从右边保留,//从右边删除,每取下一个数就从右边删除
"""
num = int(input('num = '))
reversed_num = 0
while num > 0:
    reversed_num = reversed_num * 10 + num % 10
    num //= 10
print(reversed_num)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值