#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)
同样的问题,怎么写成同一行?