python学习笔记之例题篇NO.1

求解一元二次方程

已知一元二次方程的三个系数,编程求ax^2 +bx+c=0方程的根,系数a,b,c的值由键盘输入,构建一个一元二次方程的实例,假设a,b,c的值,要求根据 b^2 −4ac的值的不同输出不同的结果。
1)a=0 并且 b=0 ,无解;
2)a=0 并且 b!=0,有一个实根;x=-c/b;
3) b^2-4ac = 0,有两个相等实根:x1=x2=-b/(2a);
4) b^2-4ac > 0,有两个不等实根:
5) b^2-4ac < 0,有两个共轭复根:

import math
a,b,c=eval(input())
if (a == 0):
    if (b == 0):print("此方程无解!")
    else:print(str.format("此方程的解为: {0}", -c / b))
  
elif b**2 -4*a*c == 0:
    x = -b/(2*a)
    print("此方程有两个相等实根: %.2f"%x)
elif b**2 -4*a*c > 0:
    x1 = (-b+(b**2 - 4*a*c)**0.5)/(2*a)
    x2 = (-b-(b**2 - 4*a*c)**0.5)/(2*a)
    print("此方程有两个不等实根: %.2f 和 %.2f"%(x1, x2))
else:
    a1 = -b/(2*a)
    b1 = (4*a*c-b*b)**(0.5)/(2*a)
    print("此方程有两个不等实根: %.2f+%.2fi 和 %.2f-%.2fi"%(a1, b1, a1, b1))

用牛顿迭代法求一元多次方程 x^3 - 3x^2-x+3=0在给定值附近的解(保留2位小数)。
迭代公式:
x1=x0-f(x0)/f’(x0),其中,
f(x)= x^3 - 3x^2-x+3,
f’(x)=3x^2-6x-1
(相差1e-5输出)

#用牛顿迭代法求一元方程x^3-3x^2-x+3=0在指定值附近的根
import math
x=eval(input()) #x为指定值
#-------------------BEGIN------------------
x0 = x - 1e-5
while (abs(x - x0) >= 1e-6):
    x0 = x                                      
    f = ((x-3)*x-1)*x + 3       
    f1 = (3*x-6)*x - 1              
    x = x - f / f1                               
print("x=%.2f"%x)
#------------------- END------------------

数字汉字转换

不管是阿拉伯数字(1、2、3……), 还是所谓汉字小写数码(一、二、三……), 由于笔画简单,容易被涂改伪篡。所以一般文书和商业财务票据上的数字都要采用汉字数码大写: 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、(“万、亿”本身笔画已经比较复杂,使用机会也少,没有必要再用别的字代替)。如“ 3564 元”写作“叁仟伍佰陆拾肆元” 。

x=input("")
hz='零壹贰叁肆伍陆柒捌玖'
dw='拾佰仟万拾佰仟亿拾佰仟兆'
y=""

i=len(x)
for c in x[:-1]:#除掉了个位数
    #转大写数字
    if c!="0" or (c=='0' and x[-i+1]!="0" and i!=5 and i!=9):#①
        y=y+hz[int(c)]
    #添加单位
    if c!='0' or (c=='0' and ((i==5 and y[-1]!="亿" and y[-1]!="兆") or (i==9 and y[-1]!="兆"))):#②
        y=y+dw[i-2]
    i=i-1#
#判断个位是否为0
if x[-1]!="0":
    y=y+hz[int(x[-1])]
y=y+"元"

print(y)
'''
若无①判断条件 
eg:1000 => 【壹仟零佰零拾元】(应该是【壹仟元】)
【判断逻辑】应为:
    ①如果【该位】的数字不为0;
    ②如果【该位】为0,则必需【下一位】的数字不为0,且【该位】不处于【万】位或【亿】位上(如果处于万位
    eg:101000=>【壹拾零万壹仟元】
    其实该处相当于低位上的个位处理)。
满足上述条件任意一条,则可直接转换为大写汉字

②处的判断逻辑:
    当(i==5 or i==9)时
    就是【该位】处于【万】位或【亿】位上,即使此处为0,也应该把单位输出,如果没有
    eg:101000=>【壹拾壹仟元】(应该是【壹拾万壹仟元】)
    加上(y[-1]!="亿" and y[-1]!="兆")是对高位的判断,若无此判断
    eg:100000000=>壹亿万元(应该为【壹亿元】)

    !!!本题涉及到了【数字转换】和【单位添加】的三种判断情况:
    ①【连续0】情况的判断
    ②【该位】处于【万】位或【亿】位的情况判断
    ③最高位是【亿】或【兆】对于②的情况判断
'''

​模拟中国体育彩票七星彩。过程:随机产生一个数,包含7个数码(0~9任意)。用户根据提示从键盘输入自己的幸运号码,判断是否中奖,若中奖,判断中奖等级,并输出结果(包括中奖号码,和中奖情况)。‍
​中奖等级根据相同的数码个数决定(判断相同位置的号码是否相同。)。 ​例如:随机产生的数是:1234567;你输入的随机数是:1222222
前两个数相同,五等奖。 ​又例如:随机数4523874 和幸运号码 5820670
,也有两位数项目,分别是第4位的2和第6位的7,所以也的五等奖。
​等级如下: ​
相同数字个数 2 3 4 5 6 7
中奖等级别 5 4 3 2 1 特等奖

while 1:
    import random
    # 随机产生数
    random_num = str(random.randint(0,9999999))
    # 输入的数
    input_num = input("PLS input:")

    # 补0操作
    random_num = random_num.zfill(7)

    #中奖结果
    print(random_num)
    ans = 0
    for i in range(7):
        if random_num[i]==input_num[i]:
            ans+=1

    if ans>1&ans<7:
        print(str(7-ans)+"等奖")
    elif ans == 7:
        print("特等奖")
    else:
        print("谢谢惠顾")

输入一个整数,判断其是否回文数。

x=input("请输入一个数字")
#代码开始
if x.isnumeric():
    s = x[::-1]
    if s == x:
        print(x+"是回文数")
    else:
        print(x+"不是回文数")
else:
    print("不是数字")

猜单词

猜单词游戏,计算机随机产生一个单词,打乱字母顺序,供玩家猜测,采用控制字符界面。例如:
乱序后单词: luebjm
请你猜:jumble
真棒 ,你猜对了!
是否继续(Y/N):

import random

#单词库
words = ["reluctant","reliance","diffuse","wholly","entail"]
save = list()

#主函数
def main():
    while 1:
        #生成随机单词
        rword = list(words[random.randint(0, len(words) - 1)])
        cword = rword[:]
        random.shuffle(rword)
        print("乱序后单词:"+"".join(rword))
        
        flag = 0
        for i in range(3):
            print("请你猜:",end="")
            userword = list(input())
            if userword == cword:
                save.append("".join(cword))
                print("真棒,你猜对了!")
                flag = 1
                break
            
        if flag == 1:
            print("是否继续(Y/N)")
            ans = input()
            if ans == 'Y':
                continue
            else:
                print(save)
                break
        else:
            print("".join(cword))
            continue
            
main()    

有用的知识点

获取字符在字符串的位置                               
使用str.find(c)方法可以返回字符串str中字符c所在位置的序号。
“2021/2/25.find(/)返回数字4str.rfind(c)方法可以返回从尾部起,字符串str中字符c所在位置的序号。
“2021/2/25.rfind(/)返回数字6
可以逆序间隔地取字符
例如 x="hello world"
则x[-1::-2]表示从结尾字符每隔2个字符取子串,即"drwolh"
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值