python练习

 

 
#hello.py
#编写程序:hello.py,要求用户输入姓名并打印“你好,姓名!”

name = input("请输入你的名字:")
print("你好," + name + "!")
#编写程序:calc.py
#要求用户输入1到100之间数字并判断
#输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑”

tmp = input("请输入一个1到100的数字:")
num = int(tmp)
if 1 <= num <= 100:
    print("安安真棒")
else:
    print("安安真傻")

此处注意要把tmp转换成int型

 

#人类思维是习惯“四舍五入”法,有什么办法使得int()按照“四舍五入”的方式取整?

x = float(input("请输入一个浮点数:"))
#直接input输入的变量是str类型
print(x)
print(type(x))

tmp = x
print(tmp)

tmp *= 10
print(tmp)

a = int(x) if ((int(tmp))%10 < 5) else int(x)+1
print('该数四舍五入之后的值为:')
print(a)

#答案:好简洁
#5.4 “四舍五入”结果为:5,int(5.4+0.5) == 5
#5.6 “四舍五入”结果为:6,int(5.6+0.5) == 6

#leap year

tmp = input("请输入一个年份:")
year = int(tmp)
#如果不转换类型的话,就会报错
#TypeError: not all arguments converted during string formatting

if (year%400 == 0 or (year%100 != 0 and year%4 == 0)) :
    print("是闰年")
else:
    print("不是闰年")
#为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环

import random

i = 2
secret = random.randint(1, 10)
print(secret)
tmp = input("请输入一个1-10之间的整数:")
guess = int(tmp)

while guess != secret and i:
    tmp = input("猜错了,请重新输入一个1-10之间的整数:")
    guess = int(tmp)

    i -= 1

    if guess == secret:
        break

if guess != secret and i == 0 :
    print("三次机会已用完!")
else:
    print("猜对啦!")
#打印1-100偶数、奇数

print("1-100的偶数有:")
for i in range(1, 100):
    if i%2 == 0:
        print(i)
        #print('偶数有:%s'  %i)

print("1-100的奇数有:")
for i in range(1, 100):
    if i%2 == 1:
        print(i)

疑问:有没有办法可以把这些个数横着输出呢?

"""
爱因斯坦曾出过这样一道有趣的数学题:
有一个长阶梯,
若每步上2阶,最后剩1阶;
若每步上3阶,最后剩2阶;
若每步上5阶,最后剩4阶;
若每步上6阶,最后剩5阶;
只有每步上7阶,最后刚好一阶也不剩。
(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)

题目:请编程求解该阶梯至少有多少阶?
"""

i = 1

while i:
    if(i%2 == 1 and i%3==2 and i%5==4 and i%6==5 and i%7==0):
        break

    else:
        i+=1

print("阶梯长度为:%d" % i)

#小甲鱼
x = 7
i = 1
flag = 0

while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        flag = 1
    else:
        x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1

if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')

这个是小甲鱼的源码,这个比自己的效率更高,学习一下

#交换值
x, y, z = 1, 2, 3
print(x, y, z)

x, y, z = z, y, x
print(x, y, z)

"""
视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,
但根据一般的统计规律,一个班的成绩一般服从正态分布,
也就是说平均成绩一般集中在 70~80 分之间,
因此根据统计规律,我们还可以改进下程序以提高效率。
"""

#按照100分制,90分以上成绩为A,80到90为B,70到80为C,60到70为D,其余为不及格
#写一个程序,当用户输入分数,自动转换为ABCD的形式打印。

score = float(input('请输入成绩:'))

while score < 0 or score > 100:
    print("成绩输入有误!")
    score = float(input('请重新输入成绩:'))

if 70 <= score < 80:
    print("%d对应的级别为C" % score)
    
elif 80 <= score < 90:
    print("%d对应的级别为B" % score)

elif 60 <= score < 70:
    print("%d对应的级别为D" % score)

elif 90 <= score < 100:
    print("%d对应的级别为A" % score)

else:
    print("%d对应的级别为不及格" % score)
            

上述代码在输入正确的情况下只能输入一次成绩,现在对其进行改进,使其能够输入多次

#improve

#按照100分制,90分以上成绩为A,80到90为B,70到80为C,60到70为D,其余为不及格
#写一个程序,当用户输入分数,自动转换为ABCD的形式打印。

score = float(input('请输入成绩(输入99999结束输入):'))

while score != 99999:
    
    if score < 0 or score > 100:
        print("成绩输入有误!")
        score = float(input('请重新输入成绩(输入99999结束输入):'))
        break

    if 70 <= score < 80:
        print("%d对应的级别为C" % score)
    
    elif 80 <= score < 90:
        print("%d对应的级别为B" % score)

    elif 60 <= score < 70:
        print("%d对应的级别为D" % score)

    elif 90 <= score < 100:
        print("%d对应的级别为A" % score)

    else:
        print("%d对应的级别为不及格" % score)

    score = float(input('请输入下一个成绩(输入99999结束输入):'))
            

#设计一个验证用户密码程序,用户只有三次机会输入错误,
#不过如果用户输入的内容中包含"*"则不计算在内。

count = 3
password = 'MayDay'

while count:
    passwd = input('请输入密码:')
    if passwd == password:
        print('密码正确')
        break

    elif '*' in passwd:
        print('密码中不能包含*号,请重新输入!您还有%d次机会' % count)
        continue

    else:
        count -= 1
        print('密码错误,请重新输入!您还有%d次机会' % count)

if count == 0:
    print('您的三次机会已用完!')
        

小技巧:自己平时判断的时候都是用字符串相等作为条件的,这个是以次数作为条件的,以后可以从这个方面进行考虑。

#有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。
#先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,
#编程计算摸出球的各种颜色搭配。

print('red\tyellow\tblue')
for red in range(1, 4):
    for yellow in range(1, 4):
        for blue in range(1, 7):
            if red + yellow + blue == 8:
                print(red, '\t', yellow, '\t', blue, '\t')


"""
编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
"""

print('100-999的水仙花数有:')
for i in range(100, 1000):
    gewei = i %10
    shiwei = i // 10 % 10
    baiwei = i // 100 % 10

    if i == gewei ** 3 + shiwei ** 3 + baiwei ** 3:
        print(i)
    

同样的问题,怎么写成同一行?

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安安csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值