您的位置:首页 > 编程语言 > Python开发

python基础与高级特性(一):python概述(练习)

2019-05-24 16:05 162 查看

1.需求: 输入某学生的三门课程成绩,计算出该学生的总成绩sumScore和平均成绩avg_score(保留两位小数点)。
提示: (course1+course2+course3)/3

name = input('姓名:')
score1 = float(input('请输入你的成绩:'))
score2 = float(input('请输入你的成绩:'))
score3 = float(input('请输入你的成绩:'))
#2.计算出该学生的总成绩和平均成绩
sumscore = score1+score2+score3
avgscore = sumscore / 3
#3.输出该学生的成绩并保留两位小数
print('%s的总成绩为%.2f' % (name,sumscore))
print('%s的平均成绩为%.2f' % (name,avgscore))


2.编写程序将温度从华氏温度转换为摄氏温度。转换公式为celsius * 1.8 = fahrenheit - 32

fahrenheit =float(input('请输入华氏温度:'))
celsius = (fahrenheit-32)/1.8
print('%s摄氏温度:' %(celsius))


3.需求: 判断给定年份是否是闰年?
规则:
一个闰年就是指它可以被 4 整除,但不能被 100 整除, 或者它既可以被 4 又可以被 100 整除。
解释: year能被4整除但是不能被100整除 或者 year能被400整除, 那么就是闰年;
测试用例:
1992,1996 和 2000 年是闰年,但 1967 和 1900 则不是闰年。(and, or, not)

year = int(input('请输入年份:'))
if (year % 4 == 0 and year % 100 !=0) or (year % 400 == 0):
print('%s是闰年' %(year))
else:
print('%s不是闰年' %(year))


4. 需求1: 求1~100之间所有偶数的和;
需求2: 求1~100之间所有奇数的和;
需求3: 用户输入一个整形数, 求该数的阶乘; 3!=321=6

需求1: 求1~100之间所有偶数的和
sumResult = 0  #保存累加结果的变量
odds = range(0, 101, 2)
for item in odds:
sumResult += item
print(sumResult)

需求2: 求1~100之间所有奇数的和
sum_result = 0
adds = range(1, 101, 2)
for item in adds:
sum_result += item
print(sum_result)

#需求3: 用户输入一个整形数, 求该数的阶乘; 3!=3*2*1=6
num = int(input('请输入需要求阶乘的数字:'))
if num == 0:
print(1)
elif num < 0:
print('请输入正确的数字,number>0')
else:
factResult = 1
nums = range(1, num+1)
for item in nums:
factResult *= item
print(factResult)


5.用户登陆程序需求:
1. 输入用户名和密码;
2. 判断用户名和密码是否正确?
name=‘root’
passwd=‘westos’
3. 为了防止暴力破解, 登陆仅有三次机会, 如果
超过三次机会, 报错提示;

提升: 密码能不能明文存储? 为什么?如何解决?

import getpass

tryCount = 0
while tryCount < 3:
tryCount += 1

user_name = input('请输入用户名:')
user_passwd = getpass.getpass('请输入密码:')
if user_name == 'root' and user_passwd == 'westos':
print('登陆成功请稍等')
flag = 1

1bb8c
break
else:
print('登陆失败,你已经尝试%d' %(tryCount))

else:
print('尝试超过三次')


6.有猜数字游戏,其游戏规则为:
1). 程序内置一个 1 到 100 之间的数字作为猜测的结果,由用户猜测此数字(仅5次机会)。
2). 用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了;
3). 直到用户猜对结果,则提示游戏胜利。用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,或者超过5次机会,则游戏失败。

gameResult = 26
guessnum = int(input('请输入数字:'))
tryCount = 0
while tryCount < 6:
tryCount += 1
if guessnum == 0:
print('游戏失败')
break
if guessnum < gameResult:
print('小了')
break
elif guessnum > gameResult:
print('大了')
break
else:
print('游戏胜利')
break


7.输入两个数值, 求两个数的最大公约数和最小公倍数.

  1. 最大公约数就是A和B能整除的最大的数;
  2. 求最大公约数(gys)算法:
  3. (40, 60) = 20
#定义函数
#求最大公约数
def gys(num1: int, num2: int) -> int:
minNum =  num2 if num1 > num2 else num1
#minNum = min(num1, num2)
for num in range(minNum, 0, -1):
if num1 % num == 0 and num2 % num ==0:
return num
#求最小公倍数
def lcm(num1: int, num2:int) -> int:
lcmNum = num1 *num2 / gys(num1,num2)
return int(lcmNum)
if __name__ == '__main__':
print(gys(2,3))
print(gys(2,6))
print(gys(6,8))
print(lcm(40,60))


8.求取x的平方根

import math
def mySqrt(x:int)->int:
if x == 1: return 1
num = 1
while num**2 <= x:
num += 1
return num -1
print(mySqrt(4))
print(mySqrt(8))


9.利用math的sqrt()方法取平方根

import math
def get_root(a, b, c):
delta = pow(b, 2) -4 * a * c
if delta == 0:
x1 = (-b + math.sqrt(delta)) / 2 * a
return x1
elif delta > 0:
x1 = (-b + math.sqrt(delta)) / 2 * a
x1 = (-b - math.sqrt(delta)) / 2 * a
return x1, x2
else:
print('没有根')
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print(get_root(a, b, c))

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: