python学习记录——day6
2018-03-05 本文已影响0人
Jason_c8d4
函数
-
为什么要用函数和函数的定义:
我们可以把程序中相对独立的功能模块抽取出来
这样做的好处一是减少重复代码的编写
二是将来可以重复的使用这些功能模块
python中的函数就是代表了这样的功能模块
数学上 y = f(x) f是函数名 x是自变量 y是因变量
当需要这个功能的时候直接调用已经定义好的函数就行了
-
代码有很多坏味道,重复代码是最坏的
craps赌博游戏升级版
from random import *
def row_dice(num=2):#参数可以设置默认值
"""
摇骰子
:param num: 骰子数量
:return: 点数和
"""
total = 0
for _ in range(num):
r = randint(1, 6)
print(r,end=' ')
total += r
print(total)
return total
def roe_result(result,player_money,computer_money):
"""
游戏结果,金额计算
:param result: 游戏结果
:param player_money: 玩家金额
:param computer_money: 电脑金额
:return: 计算后的玩家金额和电脑金额
"""
if result == True:
print('\033[0;35m玩家获胜\033[0m')
player_money += stake
computer_money -= stake
return player_money,computer_money
else:
print('\033[0;35m电脑获胜\033[0m')
player_money -= stake
computer_money += stake
return player_money,computer_money
player_money = 1000
computer_money = 1000
while True:
stake = int(input('请下注:'))
if computer_money >= stake and player_money >= stake:
is_result = True
frist_r = row_dice()
if frist_r==7 or frist_r==11:
player_money,computer_money = roe_result(True, player_money, computer_money)
elif frist_r==2 or frist_r==3 or frist_r==12:
player_money, computer_money = roe_result(False, player_money, computer_money)
else:
while is_result:
r = row_dice()
if frist_r == r:
player_money, computer_money = roe_result(True, player_money, computer_money)
is_result = False
elif r == 7:
player_money, computer_money = roe_result(False, player_money, computer_money)
is_result = False
print('玩家剩余余额为:¥%d'%(player_money))
print('电脑剩余余额为:¥%d' % (computer_money))
else:
print('押注金额不能大于余额!')
if player_money <= 0:
print('\033[1;35m电脑获得游戏胜利!!!\033[0m')
break
elif computer_money <= 0:
print('\033[1;35m玩家获得游戏胜利!!!\033[0m')
break
-
文档注释
"""
计算阶乘
:param x: 一个非负整数
:return: 阶乘
""" -
谷歌文档
"""
判断一个数是不是素数
parameter:
num - 要判断的数Returns:
返回字符串判断结果
"""
特别的:
-
name是当前文件的名字,正在执行的值为main,其他就是文件名
-
函数定义的参数可以设置默认值
-
函数参数可以是不定参数
def add(*args):
"""
计算多个数相加
:param args: 可变加数
:return: 相加的和
"""
total = 0
for i in args:
total += i
return total
-
三元运算符
(x,y) = (y,x) if x>y else (x,y)#这个好一些!
(x,y) = x>y and (y,x) or (x,y)
-
and 和 or运算符都是带短路功能和运算符
如果and左边的表达式是false那么右边的表达式被短路(不执行)
如果or左边的表达式是true那么右边的表达式被短路(不执行) -
回文数 12321
from sushu import *
def is_palindrome(num):
"""
判断一个数是不是回文数
:param num: 一个正整数
:return: 返回判断结果
"""
# l = len(str(num))
# for i in range(l//2):
# if str(num)[i]!=str(num)[-(i+1)]:
# return '不是回文数'
# return '是回文数'
temp = num
total = 0
while temp>0:
total = total * 10 + temp % 10
temp //= 10
return num == total