1. 情节描述:上公交车(10个座位),并且有座位就可以坐下
要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果车上有空座位,才可以上。
seat = 10
while seat > 0:money = int(input("请输入余额:"))if money >= 2:print("刷卡成功。")seat -= 1else:print("余额不足,请充值。")
print("票已售完。")
2. 猜拳游戏
剪刀(0) 石头(1) 布(2)
该题使用到random库的randint(0,2)
(扩展:改成每次玩完添加对用户的问询,输入Y继续游戏,N则结束游戏)
恭喜你,胜利啦,是否还需要继续玩猜拳游戏(Y/N)?
from random import randintwhile True:player = int(input("请输入 0(剪刀)、1(石头)、2(布)"))if player < 0 or player > 2:print("输入有误,请重新输入。")else:computer = randint(0, 2)if computer == player:print("平局")elif ((computer == 0 and player == 1)or (computer == 1 and player == 2)or (computer == 2 and player == 0)):print("你赢了")elif ((computer == 0 and player == 2)or (computer == 1 and player == 0)or (computer == 2 and player == 1)):print("你输了")try_again = input("是否继续?(y/n)")if try_again == "y":continueelse:break
3.猜数字
随机生成一个0-100之间的整数,如果猜大了,提示猜大了,如果猜小了,提示猜小了,游戏继续,如果猜对了,给与恭喜类提示信息,游戏停止
from random import randintnumber = randint(0, 100)
while 1:number_input = int(input("请输入0-100之间的整数: "))if number_input == number:print("猜对了!")breakelif number_input < number:print("猜小了!")elif number_input > number:print("猜大了!")else:print("请输入0-100之间的整数。")
4.三角形判断
编写一个程序,要求用户输入一个三角形的三条边长,然后判断它们能否组成一个合法的三角形,并输出相应的消息。根据三角形的特性,两边之和必须大于任意一边的长度,否则无法构成三角形。
a = eval(input("请输入第一条边长: "))
b = eval(input("请输入第二条边长: "))
c = eval(input("请输入第三条边长: "))
if a > 0 and b > 0 and c > 0 and a + b > c and a + c > b and b + c > a :print("可以构成三角形。")
else:print("不可以构成三角形。")
5.求和 while for
- 求1~100的和
- 求1~100所有偶数的和 奇数和
1.for
sum = 0
for number in range(1,101):sum += number
print(f"1-100的和是:{sum}")
while:
sum = 0
number = 1
while number <= 100:sum += numbernumber += 1
print(f"1-100的和是:{sum}")
2.所有偶数和
for:
sum = 0
for number in range(1, 101):if number % 2 == 0:sum += number
print(f"1-100的所有偶数和是:{sum}")
while:
sum = 0
number = 1
while number <= 100:if number % 2 == 0:sum += numbernumber += 1
print(f"1-100所有偶数和是:{sum}")
sum = 0
for number in range(1, 101):if number % 2 == 1:sum += number
print(f"1-100的所有奇数和是:{sum}")
while:
sum = 0
number = 1
while number <= 100:if number % 2 == 1:sum += numbernumber += 1
print(f"1-100所有奇数和是:{sum}")
6.break练习
求1~100的和,当总和大于2000时,终止循环
sum = 0
number = 1
while number <= 100:sum = sum + numbernumber = number + 1if sum > 2000:break
print(sum)
2016
打印 1~100 内,不能被 7 整除的所有数字。
for number in range(1, 101):if number % 7 != 0:print(number,end=" ")
1 2 3 4 5 6 8 9 10 11 12 13 15 16 17 18 19 20 22 23 24 25 26 27 29 30 31 32 33 34 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 65 66 67 68 69 71 72 73 74 75 76 78 79 80 81 82 83 85 86 87 88 89 90 92 93 94 95 96 97 99 100
number = 1
while number <= 100:if number % 7 != 0:print(number,end=" ")number = number + 1
1 2 3 4 5 6 8 9 10 11 12 13 15 16 17 18 19 20 22 23 24 25 26 27 29 30 31 32 33 34 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 65 66 67 68 69 71 72 73 74 75 76 78 79 80 81 82 83 85 86 87 88 89 90 92 93 94 95 96 97 99 100
计算 1~100 内,所有不能被 7 整除的数字之和。
sum7 = 0
for number in range(1, 101):if number % 7 != 0:sum7 += number
print(f" 1~100 内,所有不能被 7 整除的数字之和为:{sum7}")
1~100 内,所有不能被 7 整除的数字之和为:4315
sum7 = 0
number = 1
while number <= 100:if number % 7 != 0:sum7 += numbernumber = number + 1
print(f" 1~100 内,所有不能被 7 整除的数字之和为:{sum7}")
1~100 内,所有不能被 7 整除的数字之和为:4315
7.continue练习
遍历字符串"Hello World!"跳过空格。
for character in "Hello World!":if character == " ":continueelse:print(character)
H
e
l
l
o
W
o
r
l
d
!
8.使用嵌套循环输出以下图案
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
for i in range(1, 6):for j in range(1, i+1):print(j, end=" ")print()
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
9.输出 2 的倍数,直到乘积大于 100。
number = 0
product = 1
while product <= 100 :number += 2product *= numberprint(number,end=" ")
2 4 6 8
10.爬楼梯
使用嵌套循环描述爬楼梯的过程,例如,一共三层楼,每层有20个台阶,通过嵌套循环描述所爬的层数和台阶数
当前第1层第1个台阶
当前第1层第2个台阶
...
当前第2层第1个台阶
...
当前第2层第20个台阶
...
当前第3层第20个台阶
for F in range(1,4):for C in range(1,21):print(f"当前第{F}层第{C}个台阶")
当前第1层第1个台阶
当前第1层第2个台阶
当前第1层第3个台阶
当前第1层第4个台阶
当前第1层第5个台阶
当前第1层第6个台阶
当前第1层第7个台阶
当前第1层第8个台阶
当前第1层第9个台阶
当前第1层第10个台阶
当前第1层第11个台阶
当前第1层第12个台阶
当前第1层第13个台阶
当前第1层第14个台阶
当前第1层第15个台阶
当前第1层第16个台阶
当前第1层第17个台阶
当前第1层第18个台阶
当前第1层第19个台阶
当前第1层第20个台阶
当前第2层第1个台阶
当前第2层第2个台阶
当前第2层第3个台阶
当前第2层第4个台阶
当前第2层第5个台阶
当前第2层第6个台阶
当前第2层第7个台阶
当前第2层第8个台阶
当前第2层第9个台阶
当前第2层第10个台阶
当前第2层第11个台阶
当前第2层第12个台阶
当前第2层第13个台阶
当前第2层第14个台阶
当前第2层第15个台阶
当前第2层第16个台阶
当前第2层第17个台阶
当前第2层第18个台阶
当前第2层第19个台阶
当前第2层第20个台阶
当前第3层第1个台阶
当前第3层第2个台阶
当前第3层第3个台阶
当前第3层第4个台阶
当前第3层第5个台阶
当前第3层第6个台阶
当前第3层第7个台阶
当前第3层第8个台阶
当前第3层第9个台阶
当前第3层第10个台阶
当前第3层第11个台阶
当前第3层第12个台阶
当前第3层第13个台阶
当前第3层第14个台阶
当前第3层第15个台阶
当前第3层第16个台阶
当前第3层第17个台阶
当前第3层第18个台阶
当前第3层第19个台阶
当前第3层第20个台阶
11.计算5的阶乘
factorial = 1
for i in range(1, 6):factorial = factorial * i
print(factorial)
120
12.计算并输出1 到 10 的阶乘。
for i in range(1, 11):factorial = 1for j in range (1, i+1):factorial = factorial * jprint(f"{i}的阶乘为{factorial}")
1的阶乘为1
2的阶乘为2
3的阶乘为6
4的阶乘为24
5的阶乘为120
6的阶乘为720
7的阶乘为5040
8的阶乘为40320
9的阶乘为362880
10的阶乘为3628800
13、计算并输出1到10的阶乘之和
sumFactorial = 0
for i in range(1, 11):factorial = 1for j in range (1, i+1):factorial = factorial * jsumFactorial = sumFactorial + factorial
print(f"1到10的阶乘之和{sumFactorial}")
1到10的阶乘之和4037913
14.倒序输出 10 到 1 。
for num in range(10,0,-1):print(num)
10
9
8
7
6
5
4
3
2
1
num = 10
while num > 0:print(num)num -= 1
10
9
8
7
6
5
4
3
2
1
15.计算 2 的幂,从 2 的 0 次方到 2 的 10 次方。
for i in range(0,11):print(2**i)
1
2
4
8
16
32
64
128
256
512
1024
i = 0
while i < 11:print(2**i)i += 1
1
2
4
8
16
32
64
128
256
512
1024
### 16.使用循环绘制一个等腰三角形。
for i in range(1,9):for j in range(1,9-i):print(" ",end='')for k in range(1,2*i):print("*",end='')print()
*************************************************
***************
17.使用循环绘制一个菱形。
for i in range(1,9):for j in range(1,9-i):print(" ",end='')for k in range(1,2*i):print("*",end='')print()
for a in range(8, 1,-1):for b in range(1, 10 - a):print(" ", end='')for c in range(1, 2 * a -2):print("*", end='')print()
*************************************************
****************************************************************
18.人口增长预测
现有13亿人口,设每年增长0.8%,编写程序,计算多少年后达到26亿?
people = 13
year = 0
while people <= 26:people = people + people * 0.008year += 1
print(f"{year}年后达到26亿")
87年后达到26亿
19.水仙花数
输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153 = 1 + 125 + 27 。
for bai in range(1, 10):for shi in range(0, 10):for ge in range(0, 10):if bai ** 3 + shi ** 3 + ge ** 3 == bai * 100 + shi * 10 + ge:print(f"{bai * 100 + shi * 10 + ge}是水仙花数")
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
20.输出100以内的所有素数。
for number in range(2,101):flag = 1for k in range(2,number):if number % k == 0:flag = 0breakif flag == 1:print(number,end=" ")
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
number = 2
while number <= 100:flag = 1k = 2while k < number :if number % k == 0:flag = 0breakk = k + 1if flag == 1:print(number,end=" ")number += 1
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
#答案
for number in range(2, 101):for k in range(2, number):if number % k == 0:breakelse:print(number, end=" ")
21.登录模拟
# 输入用户名和密码
# 如果从没有输入用户名,提示用户名不可为空,重新输入用户名
# 对用户名和密码进行等值判断,并且给予对应的提示,自输入非空用户名起,可错误三次,然后重新回归初始校验状态
username ="root"
password ="123"
log_count = 0
while 1:username_input = input("请输入用户名:")#第一次登录且用户名为空,提示用户名不能为空。if not username_input and log_count == 0:print("用户名不能为空")print(f"登录次数:{log_count}")else:password_input = input("请输入密码:")#登录成功,退出循环。if username_input == username and password_input == password:print("登录成功")breakelse:#登录失败,提示用户名或密码错误,登录次数+1,如果登录次数达到3次,提示登录失败,登录次数清零。print("用户名或密码错误")log_count += 1if log_count == 3:print("登录失败")log_count = 0print(f"登录次数:{log_count}")
用户名不能为空
登录次数:0
用户名不能为空
登录次数:0
用户名不能为空
登录次数:0
用户名或密码错误
登录次数:1
用户名或密码错误
登录次数:2
用户名或密码错误
登录失败
登录次数:0
登录成功