题目:
获得用户的非数字输入,如果输入中存在数字,则要求用户重新输入,直到满足条件为止,并输出用户输入字符个数。
While True:
s = input("请输入不带数字的文本:")
for i in s:
if i == '1234567890':
break
else:
break
print(len(s))
while
循环一直成立,获取用户的输入之后,判断输入的内容中是否有数字。(if语句用来检查判断
)
用一个for循环
遍历整个字符串,如果有(条件成立
),就用break语句
立即跳出内层for循环,让用户重新输入。
for循环是正常结束的,没有被break中断,将执行else子句
。break语句跳出while循环,执行下一条语句。
题目:
寻找列表中目标元素,如果找到就把他从数据库中删除
target = '123-123'
for num in numlist:
if num == target:
print('found', target, '...deleting')
deleteFromPhoneDB(target)
break
题目:
寻找最大公约数。
(有两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①)
def gcd(a, b):
while b!=0:
a, b = b, a%b
return a
```python
# 求给定数字num的最大公约数,迭代所有可能的数字
num = eval(input("请输入一个数字:"))
count = num // 2
while count > 0:
if num % count == 0:
print(count, "is the lagest factor of", num)
break
count -= 1
知识回顾:
break语句
break : 跳出并结束当前整个循环,执行循环后的语句
(外部条件触发(一般用if语句检查),需要从循环中退出)else语句
while循环和for循环中使用else语句。
在循环中使用,else子句只在循环完成后执行,也就是说 break语句会跳过else语句块。
题目:
txt = input()
import jieba
word_list = jieba.lcut(txt)
m = 0 # 词语统计
for i in word_list:
if i in ',。':
continue
m += 1
print(i, end='/') # 没有换行以/结束
# 打印下一句内容的时候在打印前加入换行符
print('\n中文词语数是:{}\n'.format(m))
# 再增加一个空行,就在字符串末尾增加一个换行符
ss = '' # 记录每一句的中文字符
for i in txt:
# 以逗号句号分割,逐行打印输出
if i in ',。': # 本句结束
print('{:^20}'.format(ss))
# 输出之后 将ss置空,记录下一句的中文字符
ss = ''
continue # 跳过continue之后的语句,进行下一轮的循环
ss += i
#输入:月亮河是宽宽的河,一天我从你身旁过。
月亮/河是/宽宽的/河/一天/我/从/你/身边/过/
中文词语数是:10
月亮河是宽宽的河
一天我从你身边过
题目:
英文字符的鲁棒输入
描述:获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误。
txt = input() # 获得用户的输入
letter = [] # 用一个列表存放所有的英文字母
for i in range(26):
letter.append(chr(ord('a')+i))
letter.append(chr(ord('A')+i))
for i in txt: # 遍历整个字符串,判断每一个字符是英文字母
if i in letter:
print(i, end='')
异常处理 try-except
描述:获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果
num_str = input('请输入一个数字:')
try:
if complex(num_str) == complex(eval(num_str)):
# complex()和complex(eval())比较 排除非数字类型
print(eval(num_str)**2)
except:
print('输入错误,请重新输入')
else: # try正常执行结束,才会执行else语句
print('输入的数字',num_str)
finally:
print('本次执行结束')
知识回顾:
try语句放入 会引发异常的代码(引发异常的情况:用户输入的内容不是数字类型,if语句判断是否是数字类型,是数字类型就进行计算,不是数字类型就异常,执行except语句。)
无异常执行try同级代码,或else代码
一个try可以包含多个except
finally子句,无论是否异常都会执行。
猜一猜游戏
设计一个猜字母程序,程序随机给出一个26小写英文字母,答题者猜测,输入的如果不是英文字母,让用户重新输入;若字母在正确答案之前之后给出相应的提示;若答题5次(含五次),则答题失败,退出游戏。如果正确,程序输出回答次数并退出。
letter_list = ['a', 'b', 'c', 'd', 'e', 'f','g',
'h', 'i', 'j', 'k', 'l','m', 'n',
'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z']
import random
letter = letter_list[random.randint(0, 25)]
count = 0
while True:
guess = input("请输入一个小写英文字母:")
count += 1
if guess not in letter_list:
print('请重新输入')
else:
if count > 5:
print('猜测超过5次了, 游戏失败!')
break
elif guess < letter:
print('你输入的字母排在该字母的前面')
elif guess > letter:
print('你输入的字母排在该字母后面')
elif guess == letter:
print('恭喜你答对了,总共猜了{}次'.format(count))
break
else:
print('未知错误')