【二十五】优化石头剪刀布游戏和条件语句、循环语句课堂练习(两题)

优化:石头剪刀布游戏

import random
INFO = {0: '石头', 1: '剪刀', 2: '布'}

while True:
	count_p = 0
	count_c = 0
	for i in range(1, 4):
		computer = random.choice(range(3))
		# 判定玩家的输入是否合理, 如果不合理重新输入
		while (player := int(input('请出拳(0代表石头, 1代表剪刀, 2代表布): '))) not in range(3):
			print('您的输入有误, 请重新输入...')
		# 出拳展示
		print(f'电脑出拳: {INFO[computer]}')
		print(f'玩家出拳: {INFO[player]}')
		# 判断本局胜方
		if computer == player:
			print(f'第{i}把平局!')
		elif computer-player==1 or player-computer==2:
			print(f'第{i}把玩家胜!')
			count_p += 1
		else:
			print(f'第{i}把电脑胜!')
			count_c += 1
            
		# 如果有一方先赢两把, 就不需要再比了
		if count_p == 2 or count_c == 2:
			break
		# 判断本轮胜方
	if count_p == count_c:
			print('本轮三局两胜平局!')
	elif count_p > count_c:
			print('本轮三局两胜玩家胜!')
	else:
			print('本轮三局两胜电脑胜!')
            
		# 判定玩家的输入是否合理, 如果不合理重新输入
	while (ans := input('请问您是否需要继续游戏(Y/N): ')) not in ('Y', 'y', 'N', 'n'):
		print('您的输入有误, 请重新输入...')
		# 在玩家输入合理的前提下, 继续判定输入是否为N或者n
	if ans in ('N', 'n'):
		print('游戏结束, 欢迎下次光临...')
		break

        
# 做题要求: 条件语句、 循环语句

"""
已知字典 dict1 = {'a': 100, (): '9', 8: 300.1}, 计算键和值中所有number类型的和
"""















"""
实现程序: 请用户输入一个非负整数 num, 反复将各个位上的数字相加, 直到结果为一位数, 则输出。

示例:
输入: 38
输出: 2
解释: 各位相加的过程为: 3 + 8 = 11, 1 + 1 = 2; 由于 2 是一位数, 所以输出 2
"""

条件语句、循环语句课堂练习

"""
已知字典 dict1 = {'a': 100, (): '9', 8: 300.1}, 计算键和值中所有number类型的和
"""
dic1 = {'a': 100, (): '9', 8: 300.1}
total = 0
# items_tuple = dic1.items()
# for key, value in items_tuple:
#     if type(key) in (int, float, bool, complex):
#         total += key
#     if type(value) in (int, float, bool, complex):
#         total += value
# print(total)

key_lst = list(dic1.keys())
value_lst = list(dic1.values())
lst = key_lst + value_lst
# print(lst)
for i in range(len(lst)):
    if type(lst[i]) in (int, float, complex, bool):
        total += lst[i]
print(total)






"""
实现程序: 请用户输入一个非负整数 num, 反复将各个位上的数字相加, 直到结果为一位数, 则输出。

示例:
输入: 38
输出: 2
解释: 各位相加的过程为: 3 + 8 = 11, 1 + 1 = 2; 由于 2 是一位数, 所以输出 2
"""
num = input("请您输入一个非负整数:")

# while not (len(str(num)) == 1):
#     total = 0
#     for _ in range(len(str(num))):
#         rem = int(num) % 10
#         total += rem
#         div = int(num) // 10
#         num = div
#     num = total
# print(num)

while not (len(str(num)) == 1):
    total = 0
    for i in range(len(str(num))):
        total += int(str(num)[i])
    num = total
print(num)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值