Python 条件和循环练习题

题目
获得用户的非数字输入,如果输入中存在数字,则要求用户重新输入,直到满足条件为止,并输出用户输入字符个数。

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('未知错误')
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值