Python 综合练习

if 练习:
1、求平均成绩
- 输入学生姓名;
- 依次输入学生的三门科目成绩;
- 计算该学生的平均成绩, 并打印;
- 平均成绩保留一位小数点;
- 计算该学生语文成绩占总成绩的百分之多少?并打印。eg: 78%;

name = raw_input('请输入学生姓名:')
Chinese = float(raw_input('请输入该学生的语文成绩:'))
Math = float(raw_input('请输入该学生的数学成绩:'))
English = float(raw_input('请输入该学生的英语成绩:'))
average = (Chinese+Math+English)/3
print '该学生的平均成绩为 % .1f' % average
precent = Chinese/(Chinese+Math+English)
print '该学生语文成绩占总成绩的% .f%%' % (precent * 100)

这里写图片描述

2、判断是否为闰年?
- 用户输入年份year, 判断是否为闰年?
- year能被4整除但是不能被100整除 或者 year能被400整除, 那么就是闰年;

year = int(raw_input("Year:"))
if (year % 4 == 0 and year % 100 != 0) or ( year % 400 == 0):
    print("%s是闰年" %(year))
else:
    print("%s不是闰年" %(year))

这里写图片描述
3、输入年、月,输出本月有多少天。合理选择分支语句完成设计任务。
-输入样例1:2016 2
-输出结果1:本月29天

year = int(raw_input('请输入年份:'))
month = int(raw_input('请输入月份:'))

if (month == 1 or month == 3 or month == 5 or month == 7
    or month == 8 or month == 10 or month == 12):
    print '31天'
elif month == 4 or month == 6 or month == 9 or month == 11:
    print '30天'
elif month == 2 and year%4==0 and year%100!=0 or year%400==0:
    print '29天'
else:
    print '28天'

这里写图片描述
3、猜拳游戏:
-系统出拳,玩家出拳,比较胜负

import random

# 1.从控制台输入要出的拳(石头1/剪刀2/布3)
player = int(raw_input('请输入您要出的拳:石头1/剪刀2/布3:'))

# 2.电脑出拳
computer = random.randint(1,3)
print computer

# 3.比较胜负
"""
石头胜剪刀
剪刀胜布
布胜石头
"""
if ((player == 1 and computer == 2)
    or (player == 2 and computer == 3) \
            or (player == 3 and computer == 1)):
    print '玩家胜利了~'
elif player == computer:
    print '平局'

else:
    print '玩家输了~'

这里写图片描述

while 练习:
1、
(1)、0~100之间所有数字的累积求和

i = 0
sum = 0
while i <= 100:
    sum+=i
    i +=1
print '0~100的和为%d' % sum

这里写图片描述
(2)、0~100之间的偶数累积求和

i = 0
sum = 0

while i<=100:
    if i % 2 == 0:
        sum += i
    i += 1

print '0~100之间偶数求和为 %d' % sum

这里写图片描述
(3)、0~100之间的奇数累积求和

i = 0
sum = 0

while i<=100:
    if i % 2 != 0:
        sum += i
    i += 1

print '0~100之间奇数求和为 %d' % sum

这里写图片描述

2、在控制台连续输出五行*,每一行星号的数量依次递增

row = 1
while row <= 5:
    col = 1
    while col <= row:
        print '*',  # 按要求打印星星  如果不加星星会换行最后结果 只有一列星星
        col += 1

    print ' '       # 换行    如果不加则所有的星星打印在一行
    row += 1

这里写图片描述
3、打印九九乘法表

row = 1
while row <= 9:
    col = 1
    while col <= row:
        print '%d * %d = %d\t' % (row, col, col * row),
        col += 1
    # print '%d' % row
    print ''
    row += 1

这里写图片描述
4、猜数字游戏

 1. 系统随机生成一个1~100的数字;
 2. 用户总共有5次猜数字的机会;
 3. 如果用户猜测的数字大于系统给出的数字,打印“too big”;
 4. 如果用户猜测的数字小于系统给出的数字,打印"too small";
 5. 如果用户猜测的数字等于系统给出的数字,打印"恭喜",并且退出循环;
import random
computer = random.randint(1,100)
print '系统数字为:%d'% computer

i = 0

while i<5:
    user = int(raw_input('请输入用户数字:'))
    if user > computer:
        print 'too big'
    elif user < computer:
        print 'too small'
    else:
        print '恭喜'
        break
    i += 1

这里写图片描述
5、用户登陆程序

for  i  in range(3):
    name = raw_input('用户名:')
    passwd = raw_input('密码:')
    if name == 'root' and passwd == 'westos':
        print '登陆成功'
    else:
        print '登陆失败'
        print '您还剩下%d 次机会' % (2-i)
else:
    print '机会已经用完,请您等待100s再次登陆系统'

这里写图片描述

6、break 实现命令行提示符雏形

import os


while True:
    cmd = raw_input('[kiosk@test ~]$')
    if cmd:
        if cmd == 'exit':
            print 'logout'
            break
            #print 'hello'
        else:
            print 'run %s' % cmd
            # 运行shell命令
            os.system(cmd)
    else:
        continue
        #print 'hello'

这里写图片描述
三、for 循环练习:
1、0~100 中奇数和偶数的和

sum1 = 0
for i in range(2,101,2):
    sum1 += i
sum2 = 0
for j in range(1,101,2):
    sum2 += j
print '1~100之间所有偶数之和为: %d ,1~100之间所有奇数之和为:%d' % (sum1,sum2)

这里写图片描述
2、求阶乘

num = int(raw_input('请输入一个整数:'))       
result = num                           
for i in range(1, num):                
    result *= (num - i)                
print '阶乘结果为:%d' % result                                  
num = int(raw_input('Num:'))
res = 1
for i in range(1,num+1): # num:3 rang(1,4)== 1,2,3
    res = res * i
print '%d 的结果是:%d' %(num,res)

这里写图片描述
3、求最大公约数和最小公倍数

num1 = int(raw_input('Num1:'))
num2 = int(raw_input('Num2:'))
min_num = min(num1, num2)
for i in range(1, min_num + 1):
    if num1 % i == 0 and num2 % i == 0:
        # 当循环结束,保存最大公约数
        gys = i
lcm = (num1 * num2)/gys
print '%s和%s的最大公约数为%s' %(num1,num2,gys)
print '%s和%s的最小公倍数为%s' %(num1,num2,lcm)

这里写图片描述
四、str 字符串
1、回文数判断

num = raw_input('Num:')
if num == num[::-1]:
    print '这是一个回文数'
else:
    print '这不是一个回文数'

这里写图片描述
2、变量是否合法?
变量名可以由字母,数字或者下划线组成;
变量名只能以字母或者下划线开头;
s = “hello@”
1. 判断变量名的第一个元素是否为字母或者下划线; s[0]
2. 如果第一个元素符合条件, 判断除了第一个元素的其他元素;s[1:]

while True:
    s = raw_input('变量名:')
    if s == 'exit':
        print '欢迎再次使用'
        break
    if s[0].isalpha() or s[0] == '_':
        for i in s[1:]:
            if not (i.isalnum() or i == '_'):
                print '%s变量名不合法 ' % s
                break
        else:
            print '%s 变量名合法' % s
    else:
        print '%s变量名不合法' % s

这里写图片描述
3、输入一行字符,统计其中有多少个单词,每两个单词之间以空格隔开。
如输入: This is a c++ program. 输出:There are 5 words in the line.

a = raw_input('请输入一行英文字符:')
li = a.split()
b = len(li)
print 'There are %d words in the line' % b

这里写图片描述
4、 给出一个字符串,在程序中赋初值为一个句子,例如”he threw three free throws”,
自编函数完成下面的功能:
1)求出字符列表中字符的个数(对于例句,输出为26)

a = raw_input('请输入一行字符:')
b = len(a)
print '%d' % b
![这里写图片描述](https://img-blog.csdn.net/20180828173034627?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MDQ4NTA0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
5、给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:
'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场
如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),
那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
示例 1:
输入: "PPALLP"
输出: True
示例 2:
输入: "PPALLL"
输出: False

s = raw_input()
if s.count(‘A’) <= 1 and s.count(‘LLL’) ==0:
print True
else:
print False
“`
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37048504/article/details/82151713
今日推荐