1.判断变量名是否合法
需求:
判断用户输入的变量名是否合法:
1.变量名可以由字母,数字或者下划线组成
2.变量名只能以字母或者下划线开头
分析:
1.判断变量名的第一个元素是否为字母或者下划线 s[0]
2.如果第一个元素符合条件,判断除了第一个元素之外的其他元素s[1:]
代码:
while True:
s = input('变量名:')
if s == 'q':
exit()
# 判断首字母是否符合变量名要求
if s[0] == '_' or s[0].isalpha():
# 依次判断剩余的所有字符
for i in s[1:]:
# 只要有一个字符不符合,便不是合法的变量;alnum表示字母或数字
if not (i.isalnum() or i == '_'):
print('%s不是一个合法的变量名' % s)
break
else:
print('%s是一个合法的变量名' % s)
else:
print('%s不是一个合法的变量名' % s)
(1)用for循环实现
代码:
for i in range(1,10):
for j in range(1,i+1):
# 将i和j位置调换即可输出正常的乘法表
# print('%s*%s=%s\t' % (i, j, i * j), end='')
print('%s*%s=%s\t' %(j,i,i*j),end='')
print('\n')
代码:
i = 1
while i < 10:
j = 1
while j <= i:
print('%d*%d=%d\t' %(j, i, i*j),end=(''))
j +=1
print('')
i +=1
需求:
给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个
字符:
'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场
如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),
那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
示例 1:
输入: "PPALLP"
输出: True
示例 2:
输入: "PPALLL"
输出: False
分析:不超过两个连续的L 即为字符串中出现LLL的次数为0
代码:(方法1)
print("""
出勤记录规则
'A' : Absent 缺勤
'L' : Late 迟到
'P' : Present 到场
""")
while True:
c = input('请输入考勤记录:')
# count() 表示指定字符出现的次数
if c.count('A') <= 1 and c.count('LLL') == 0 and c != 'q':
print('True')
elif c == 'q':
exit()
else:
print('False')
print("""
出勤记录规则
'A' : Absent 缺勤
'L' : Late 迟到
'P' : Present 到场
""")
while True:
c = input('请输入考勤记录:')
print(c.count('A') <= 1 and c.count('LLL') == 0)
需求:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,
单词用空格分割, 单词之间只有一个空格,前后没有空格。
比如:
“hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
- 示例1:
- 输入
hello xiao mi
- 输出
mi xiao hello
代码:( 方法1)
# s = input('s:')
# split 分离; [::-1] 逆序; join 连接
# print(' '.join(s.split(' ')[::-1]))
# input 接收用户输入; split 分离; [::-1] 逆序; join 连接
print(' '.join(input('s:').split(' ')[::-1]))
需求:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例
如,输入”They are students.”和”aeiou”,
则删除之后的第一个字符串变成”Thy r stdnts.”
- 输入描述:
每个测试输入包含2个字符串
- 输出描述:
输出删除后的字符串
- 示例1:
输入
They are students.
aeiou
输出
Thy r stdnts.
代码:(方法1)
# 定义两个接收用户输入的变量
str1 = input('str1:')
str2 = input('str2:')
# 遍历整个字符串
for i in str1:
for j in str2:
if i == j:
break
# end 指定结束符,在for语句体中表示不换行输出
else:
print(i,end='')
s1 = input('s1:')
s2 = input('s2:')
# 遍历字符串s1
for i in s1:
# 依次判断s1中的每个字符是否在s2中
if i in s2:
# replace 表示替换;
# 将s1中与s2中相同的所有字符,替换为空字符
s1 = s1.replace(i,'')
print(s1)
需求:
设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);
代码:
# 导入生成随机数的模块
import random
# 定义用来记录回答正确的题数和总的题数
right = 0
counts = 0
# 无限循环
while True:
# 生成0-10的随机数
a = random.randint(0,10)
b = random.randint(0,10)
# 输出题目
print('%d + %d =' %(a,b))
# 接收用户输入的答案
question = input('请输入您的答案:(q退出)')
# 计算正确答案
result = a + b
# 判断答案是否正确
if question == str(result):
print('回答正确')
right += 1
counts += 1
# break表示退出当前循环
elif question == 'q':
break
else:
print('回答错误')
# 回答正确的题数与回答错误的题数之和便是总的答题数目
counts += 1
# 计算正确率(除数不能为0)
if counts == 0:
percent = 0
else:
percent = right / counts
# 两个%%表示一个%
print ('测试结束,共回答%d道题,正确个数为%d,正确率为:%.2f%%' %(counts,right,percent*100))