前言
光看知识点不练习终究不能将一门语言学好,在更新小知识点的同时持续更新利用知识点的题,巩固所学的知识点呀!
python简单题目学习
python简单题目学习
1.最小公倍数和最大公约数
**说明:**求两数的最小公倍数和最大公约数
参考题解:
def gcd(x, y):
if x > y:
(x, y) = (y, x)
for factor in range(x, 1, -1):
if x % factor == 0 and y % factor == 0:
return factor
return 1
def lcm(x, y):
return x * y // gcd(x, y)
print(gcd(数A,数B))
print(lcm(数A,数B))
2.水仙花数(100~1000)
说明:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:1^3 + 5^3+ 3^3=153。
参考题解:
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num)
我的题解:
for num in range(100,1000):
s=num
sum=0
while s!=0:
sum+=(s%10)**3
s//=10
if sum==num:
print(num)
(ps:自主用python写的第一个题,习惯性用c++的语法习惯了(>~<)
if后面不要用括号啊!!!语句结尾没有分号啊!!!if,while没有大括号,用缩进表示在不在循环范围内!!!还有自定义使用的变量一定要初始化,要不然报错也看不懂!!!)
TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int'
这个报错就是自变量没有初始化!
这题里面就有包含正数反转问题哦~
for num in range(1,21):
s=num
while s!=0:
print(s%10,end="")#print输出默认换行,使它输出后不换行
s//=10
print()
3.百钱百鸡问题
说明:百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?
for x in range(0,20):
for y in range(0,33):
z=100-x-y
if 5*x+3*y+z/3==100:
print("公鸡:%d只,母鸡:%d只,小鸡:%d只"%(x,y,z))
注意:上面使用的方法叫做穷举法,也称为暴力搜索法,如果数据过大不建议使用,时间复杂度会很大
4.猜数字游戏
说明:猜出随机产生的数字(猜大和猜小都有提示)
import random#产生随机数的模块(类似于C++中的头文件)
ran=random.randint(1,50)
while True:
quess=int(input("请输入你猜的数字:"))
if quess==ran:
print("恭喜猜对啦!")
break
elif quess>ran:
print("猜大啦!")
else:
print("猜小啦!")
#ps:没有很多要说的,条件语句就好
附加上C++代码(好难改正习惯(>~<))
#include<iostream>
#include<cstdlib>
using namespace std;
#include<ctime>//这里利用时间产生一个随机数
int main()
{
int a,b;
srand((unsigned int)time(NULL));
a=rand()%100+1;
cout<<"请猜测一个数字:\n"<<endl;
while(1){
cin>>b;
if(b==a){
cout<<"你猜对了,你真棒!"<<endl;
break;
}
else if(b>a)
cout<<"你猜的数字大了"<<endl;
else
cout<<"你猜的数字小了"<<endl;
}
return 0;
}
5.三局两胜猜拳游戏
说明:人机对战猜拳,三局两胜制度。1代表剪刀,2代表石头,3代表布。分出胜负为止
分析:双方出拳只有9种结果,1,2,3分别代表剪刀,石头,布,则只要有一方的值减去另一方的值结果为1就会分出胜负,反之就是平局。由此就很好进行条件判断记录每一局的胜负了。
from random import randint
computer_win=0
people_win=0
draw=0
while computer_win<2 and people_win<2:
computer=randint(1,3)
people=int(input('玩家请出拳:'))
if computer-people==1:
computer_win+=1
print("这一局你输了!")
elif people-computer==1:
people_win+=1
print("这一局你赢了!")
else:
draw+=1
print("这一局是平局!")
print("computer:%d you:%d draw:%d"%(computer_win,people_win,draw))
if computer_win-people_win==2:
print("很遗憾,你输了!")
else :
print("恭喜你获胜!")
注意:
python中没有自增自减运算符,所以在每一句结束时不能直接进行自增记录结果
6.CPAPS赌博游戏
说明:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简单的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。
from random import randint#用模块中的随机数函数
money =1000
while money>0:
print("你的总资产为:",money)
needs_go_on=False
while True:
debt=int(input('请下注:'))
if debt>0 and debt<=money:
break
first=randint(1,6)+randint(1,6)#1-6的随机数
print('玩家摇出了%d点'%first)
if first==7 or first==11:
print('玩家胜!')
money+=debt
elif first==2 or first==3 or first==12:
print('庄家胜!')
money-=debt
else:
needs_go_on=True
while needs_go_on:
current=randint(1,6)+randint(1,6)
print('玩家摇出了%d点'%current)
if current==7:
print('庄家胜!')
money-=debt
needs_go_on=False
elif current==first:
print('玩家胜!')
money+=debt
needs_go_on=False
print('你破产了,游戏结束!')
总结
学过了C/C++之后习惯性将C/C++代码习惯带入python的语法之中,要改正过来,习惯各种语言灵活切换!