PythonClassChy/python27HomeWork/python/FloraHomeWork_0218.py

332 lines
11 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
=================================
Author: Flora Chen
Time: 2020/2/18 19:45
-_- -_- -_- -_- -_- -_- -_- -_-
=================================
"""
"""
1、一、输出99乘法表结果如下提示嵌套for循环参照上课打印三角形的案例
"""
for i in range(1, 10):
for j in range(1, i + 1):
print('{} * {} = {}\t'.format(i, j, i * j), end='')
print()
"""
2、实现剪刀石头布游戏提示用户输入要出的拳 石头1剪刀23/退出4 电脑随机出拳比较胜负,显示 用户胜、负还是平局。
运行如下图所示提示while循环加条件判断做判断时建议先分析胜负的情况
"""
# musen老师代码
import random
print('---石头剪刀布游戏开始---')
print('请按照下面的提示出拳:')
li = ['石头', '剪刀', '']
while True:
print('石头【1】剪刀【2】布【3】/结束游戏【4】')
user_num = int(input('请输入你的选项:'))
r_num = random.randint(1, 3)
print(r_num)
if 1 <= user_num <= 3:
if r_num == user_num:
print('您的出拳为:{} 电脑出拳:{},平局'.format(li[user_num - 1], li[r_num - 1]))
elif (user_num - r_num) == -1 or (user_num - r_num) == 2:
print('您的出拳为:{} 电脑出拳:{},您胜利了'.format(li[user_num - 1], li[r_num - 1]))
else:
print('您的出拳为:{} 电脑出拳:{},您输了'.format(li[user_num - 1], li[r_num - 1]))
elif user_num == 4:
print('游戏结束!')
break
else:
print('您出拳有误,请按规矩出拳!')
# --------------------------------------------------------------------------
while True:
print('---石头剪刀布游戏开始---')
print('请按照下面的提示出拳:\n石头【1】剪刀【2】布【3】/结束游戏【4】')
user_hand = int(input('请输入你的选项:'))
# 根据用户输入的数字,输出用户出拳的象征
if user_hand == 1:
user_icon = '石头'
print('用户出的是:', user_icon)
elif user_hand == 2:
user_icon = '剪刀'
print('用户出的是:', user_icon)
elif user_hand == 3:
user_icon = ''
print('用户出的是:', user_icon)
elif user_hand == 4:
print('游戏结束!')
break
else:
print('您出拳有误,请按规矩出拳!')
# 根据系统随机输出的数字,输出系统出拳的象征
system_hand = random.randint(1, 3)
if system_hand == 1:
system_icon = '石头'
print('系统出的是:', system_icon)
elif system_hand == 2:
system_icon = '剪刀'
print('系统出的是:', system_icon)
elif system_hand == 3:
system_icon = ''
print('系统出的是:', system_icon)
# 根据用户以及系统的出拳,决定胜负
if ((user_hand == 1) and (system_hand == 2)) or ((user_hand == 2) and (system_hand == 3)) or (
(user_hand == 3) and (system_hand == 1)):
print('您的出拳为:{} 电脑出拳:{},您胜利了\n'.format(user_icon, system_icon))
elif user_hand == system_hand:
print('您的出拳为:{} 电脑出拳:{},平局\n'.format(user_icon, system_icon))
else:
print('您的出拳为:{} 电脑出拳:{},您输了\n'.format(user_icon, system_icon))
"""
3、通过定义一个计算器函数调用函数分别提示用户输入数字1数字2然后再提示用户选择 加【1】 减【2】 乘【3】 除【4】
根据不同的选择完成不同的计算 ,然后打印结果(提示:函数中加条件判断)。
"""
def calculate():
print('欢迎使用计算器!')
num1 = int(input('请输入数字1'))
num2 = int(input('请输入数字2'))
cal_way = int(input('请选择计算方式加【1】 减【2】 乘【3】 除【4】'))
if cal_way == 1:
return num1 + num2
elif cal_way == 2:
return num1 - num2
elif cal_way == 3:
return num1 * num2
elif cal_way == 4:
return num1 / num2
else:
return print('您的输入有误')
print('结果是:', calculate())
"""
5、扩展练习题不用提交不计入评分有时间的同学可以做
学习控制流程时,我们讲了一个登录的案例,现在要求大家通过代码实现一个注册的流程,基本要求:
1、运行程序提示用户输入用户名输入密码再次确认密码。
2、判读用户名有没有被注册过如果用户名被注册过了那么打印结果该用户名已经被注册。
3、用户名没有被注册过则判断两次输入的密码是否一致一致的话则注册成功否则给出对应的提示。
4、下面是已注册的两个账户注册成功的账号密码按下面的形式保存到列表users中
users = [{"uaer":"py27","pwd":"lemonban"},{"uaer":"py28","pwd":"lemonban2"}]
提示要是有for-else语句才能实现
"""
# 运行程序,提示用户,输入用户名,输入密码,再次确认密码
username = input('请输入用户名:')
passwd = input('请输入密码:')
passwd_confirm = input('请再次输入密码:')
# 已有的用户列表
users = [{'user': 'py27', 'pwd': 'lemonban'}, {'user': 'py28', 'pwd': 'lemonban2'}]
# 循环遍历用户列表
for items in users:
# 判断用户名是否已注册,已注册就提示用户已注册,并且终止循环
if username == items['user']:
print('该用户名已经被注册:', username)
break
# 用户名未注册,就判断用户两次输入的密码是否一致
else:
# 如果一致就将用户信息添加到已有用户列表,并提示用户注册成功
if passwd == passwd_confirm:
users.append({'user': username, 'pwd': passwd})
print('恭喜你!注册成功', users)
# 如果不一致就提示用户两次输入的密码不一致
else:
print('两次输入的密码不一致!')
"""
4、整理笔记
=================================
Notes
Author: Flora Chen
-_- -_- -_- -_- -_- -_- -_- -_-
=================================
******for循环******
1. 定义
for i in xxx:
# 循环体
2. 遍历字符串
示例:
str1 = 'flora'
for i in str1:
print(i)
3. 遍历列表
示例:
# 当前有10位同学的成绩在一个列表中请区分成绩的等级
li = [90, 78, 56, 89, 65, 80, 74, 34, 89, 100]
for score in li:
if 0 < score < 60:
print('成绩{}:不及格'.format(score))
elif 60 <= score < 80:
print('成绩{}:及格'.format(score))
elif 80 <= score < 90:
print('成绩{}:优秀'.format(score))
else:
print('成绩{}:非常优秀'.format(score))
4. 遍历字典
示例:
dic1 = {'name': 'flora', 'gender': 'girl', 'age': 18}
for i in dic1.keys():
print('遍历字典的键:', i)
for i in dic1.values():
print('遍历字典的值:', i)
for i in dic1.items():
print('遍历字典的键值对:', i)
# 遍历字典键值对时用2个变量分别保存键和值。
# for i in dic1.items():
# k, v = i
# print('遍历字典的键:', k)
# print('遍历字典的值:', v)
for k, v in dic1.items():
print('遍历字典的键:', k)
print('遍历字典的值:', v)
5. for循环中的break, continue
示例:
# 需求一打印10遍hello python
for i in range(1, 11):
print('1: 这是第{}遍: hello python'.format(i))
# 需求二打印到第50遍跳出循环
for i in range(1, 11):
print('2: 这是第{}遍: hello python'.format(i))
if i == 5:
break
# 需求三第3~5遍不打印
for i in range(1, 11):
if 3 <= i <= 5:
continue
print('3这是第{}遍: hello python'.format(i))
6. for循环中的高级语法for -- else
for对应的else语句只有当循环是通过break结束的时候不会执行。其他情况下都会执行。
示例:
for i in range(10):
print('本轮遍历的数据为{}'.format(i))
else:
print('for对应的else语句')
示例:
users = [{'user': 123}, {'user': 122}, {'user': 124}]
user = input('请输入您的账号:')
for i in users:
if user == str(i['user']):
print('用户已存在!')
break
else:
print('用户不存在!')
# 缺陷输入1111会打印3遍用户不存在
for i in users:
if user == str(i['user']):
print('用户已存在!')
break
else:
print('用户不存在!')
******内置函数range()******
range(n) 默认生成0 ~ n-1的整数序列。对于这个序列我们可以通过list()转化为列表类型的数据。
range(n, m)左闭右开默认生成从n ~ m-1的整数序列。 对于这个序列我们可以通过list()转化为列表类型的数据。
range(n, m , k)左闭右开n初始值m-1结束值 k步长 递增或者递减的整数序列。
默认生成从n ~ m-1并且间隔k的整数序列。 对于这个序列我们可以通过list()转化为列表类型的数据。
# 示例:
print(list(range(10))) # 输出结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1, 10))) # 输出结果: [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(2, 8, 2))) # 输出结果: [2, 4, 6]
print(list(range(101, 5, -5)))
# 输出结果: [101, 96, 91, 86, 81, 76, 71, 66, 61, 56, 51, 46, 41, 36, 31, 26, 21, 16, 11, 6]
print(list(range(5, 101, 5)))
# 输出结果: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
******元组拆包*****
示例:
tu = (111, 222)
a, b = tu
print(a, b) # 输出结果111 222
******函数*****
1. 常用的内置函数
type():查看数据的类型
id() 查看数据的内存地址
len():查看数据的长度
range() 生成数据
2. 函数的定义
def 函数名():
# 函数内部的功能代码
# 函数内部的功能代码
# 函数内部的功能代码
可以将单一的功能封装成一个函数,在需要使用该功能的时候直接调用函数就可以了。
函数的作用: 封装代码。
函数的意义:提高代码的重用率。
函数的命名规范可以由数字下划线组成不能使用数字开头不能使用python关键字不要和内置函数和模块第三方模块官方库重名。
函数的命名风格:推荐使用下划线命名法。
示例:
def func(n):
for i in range(n):
for j in range(i + 1):
print('* ', end='')
print()
func(5)
3. 函数的参数:定义在函数后面的括号中
定义的参数叫形参,调用函数的时候传入的参数叫实参。
示例:
def add_number(a, b):
print('a+b: ', a + b)
add_number(3, 5)
4. 函数的返回值return
# 注意如果接收到的数据为None 说明没有返回值
示例:
def add_number(a, b):
return a + b
res = add_number(3, 5)
print(res)
"""