猜拳游戏1.0
python和java,c++那些不一样的地方就是,每句话后面不用必须加' ; '但我总是习惯,所以就加吧…另外找到了为什么昨天自己写总是报错的原因,还是语法问题,没有仔细学,else是要加冒号然后另起一行的,谨记!
首先了解了随机函数在python里的写法:
import random #先import
computer=random.randint(0,2)
#random.randint(a,b) 的含义就是在0-2的范围内产生随机数,randint是回传一个整数
基本思路就是:玩家选择出拳,计算机随机生成一个数字,再用if语句判断结果。
首先是最基础的版本:
就是让他一直if elif else判断就好了。
# 猜拳小游戏
import random
player=int(input('请出拳(0:石头 1:剪刀 2:布): '))
computer=random.randint(0,2)
if player == 0: #玩家出石头
if computer == 0:
print('打成平手,电脑也出了石头!')
elif computer == 1:
print('玩家获胜,电脑出了剪刀!')
else:
print('电脑获胜,电脑出了布!')
elif player == 1: #玩家出剪刀
if computer == 0:
print('电脑获胜,电脑出了石头!')
elif computer == 1:
print('打成平手,电脑也出了剪刀')
else:
print('玩家获胜,电脑出了布!')
elif player == 2: #玩家出布
if computer == 0:
print('玩家获胜,电脑出了石头!')
elif computer == 1:
print('电脑获胜,电脑出了剪刀!')
else:
print('打成平手,电脑也出了布!')
老师一开始没有嵌套代码结构,因为之前学过别的语言直接用了,相当于提前了一部分,但是我还在想能不能把几个判断条件合并一下,就类似c++,可以更简约代码语言,但是好像判断会更占性能?但我觉得可以几乎不计吧…
逻辑运算符python直接使用and or not,倒是很简约。
while循环结构
while 条件判断 :
do xxxxx
有个和之前语法不一样的地方:
比如for(i=0;i<=100;i++)
在这里变成了while i<=100
i+=1
不能用i++,是错误的语法,这点要注意。
猜拳游戏2.0
# 猜拳小游戏
import random
num = 1;
comwin=0;
plwin=0
while num<4:
player=int(input('请出拳(0:石头 1:剪刀 2:布): '))
computer=random.randint(0,2)
if player == 0: #玩家出石头
if computer == 0:
print('打成平手,电脑也出了石头!')
elif computer == 1:
plwin+=1
print('玩家获胜,电脑出了剪刀!')
else:
comwin+=1
print('电脑获胜,电脑出了布!')
elif player == 1: #玩家出剪刀
if computer == 0:
comwin+=1
print('电脑获胜,电脑出了石头!')
elif computer == 1:
print('打成平手,电脑也出了剪刀')
else:
plwin+=1
print('玩家获胜,电脑出了布!')
elif player == 2: #玩家出布
if computer == 0:
print('玩家获胜,电脑出了石头!')
elif computer == 1:
print('电脑获胜,电脑出了剪刀!')
else:
print('打成平手,电脑也出了布!')
num+=1
if comwin >= 2:
print('三局两胜,电脑赢了!')
elif plwin>=2:
print('三局两胜,玩家赢了!')
else:
print('你们最终打成平手!')
将游戏变为五局三胜的制度,一开始进入死循环了,发现是num+=1那里没有缩进,python对代码格式整洁的要求太高了,要多练习才行!
打印九九乘法表
一开始的代码:
注意这里学习一下
print("%d*%d=%d"%(row,col,row*col),end=" ")
# %d 是取整数的值,然后先把格式写出来,这里是双引号,后再用%确定公式里的几个%d分别的含义
#end是为了防止print自动换行
还有就是%d以外还有啥类似的print格式化输出,因为c++这里老师没怎么讲过,又没学过c,一直不太理解。
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数,%6d表示输出6位整数,如果不足6位整数,则左边补空格
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
这一块哪里用到的时候再学习吧,先暂略。
while col<=9:
row=1
while row<=(10-col) :
print("%d*%d=%d"%(row,col,row*col))
row+=1
pass
col+=1
pass
但是问题出现了:没办法换行,好像这么写不可以。而且我发现我理解错九九乘法表了,这个得出来的不是……被自己蠢死orz
先按照教程打印正三角
row = 1
while row<=9:
col=1
while row>=col :
print("%d*%d=%d"%(row,col,row*col),end=" ")
col+=1
pass
row+=1
print()
pass
但是为了加深自己的理解,想打印个倒三角,或许应该变换row和col的选择,但是我现在只能想到的是把row和col给定值,让每次循环col开始的时候能够做到与row值相同。
row = 1
while row<=9:
col=row
while col<=9 :
print("%d*%d=%d"%(row,col,row*col),end=" ")
col+=1
pass
row+=1
print()
pass
这次结果是成功的。