1、编写一个程序,提示用户输入一个整数,如果输入的不是整数,则让用户重新输入,直到是一个整数为止。例如:第一次输入abc,第二次输入12.5,第三次输入6,执行效果如下。
# 需在终端中运行
input_num = input("请输入一个整数")
while not input_num.isdigit():
print("输入的不符合要求,请重新输入")
input_num = input("请输入一个整数")
print("输入正确,你输入的整数为:",input_num)
2、编写一个程序,模拟打印下载进度效果,每隔0.2秒打印一次下载进度,要求下载进度只在一行打印,每次打印的进度不同,下载完成后打印下载完成!(程序休眠、同一行打印不换行)效果如下:
import os
import time
for i in range(100):
time.sleep(0.2)
print("当前的下载进度为:",i,"%")
# macos
os.system('clear')
# windows
#os.system("cls")
print("下载完成")
3、编写一个程序,随机生成1000个字母,包含大写字母和小写字母,然后统计各个字母出现的次数,统计时忽略字母的大小写,最后将统计结果按照字母出现的次数从高到低排序输出。
import random
from collections import Counter
alphabet_list = [chr(x) for x in range(65,122) if x not in range(91,97)]
print(alphabet_list)
all_alphabet_list = random.choices(alphabet_list,k=1000)
print(all_alphabet_list)
print(Counter(all_alphabet_list).most_common())
4、已知某个班级学生年龄分布如下:
编写程序将学生按照年龄分类,并按照年龄从大到小打印出各个年龄下的学生姓名列表。
ages = [("a",19),("b",20),("c",20),("d",19),("e",21),("f",19),("g",18),("h",19),
("i",19),("j",21),("k",18),("l",19),("m",18),("n",21),("o",18),("p",19),("q",18),
("r",19),("s",20),("t",19),("u",19),("v",20),("w",19),("x",20),("y",20),("z",19)]
import pandas as pd
ages = pd.DataFrame(ages,columns=["姓名","年龄"])
ages_list = list(ages.groupby(ages["年龄"]))
print(ages_list)
for i in range(len(ages_list)):
print("年龄",ages_list[i][0])
print("姓名",list(ages_list[i][1]["姓名"]))
5、对于青蛙跳台阶的各种跳法,用每一步跳多少的数字列表,列出每一种跳的序列。例:
count = 0
nums = [1,2]
def backtrack(n,res):
if n==0:
global count
count = count+1
print(res)
if n<0:
return
for i in range(len(nums)):
res.append(nums[i])
backtrack(n-nums[i],res)
res.pop()
def climbStairs(n):
res = []
backtrack(n,res)
climbStairs(4)
print(count)
6、对于高校信息表统计,分别显示各省的985、211、一般院校的个数,以及每类学校的学校名称,一个省的每类学校的名称组成一个列表,放在一个单元格中。表格格式和内容自定。
import pandas as pd
df = pd.read_excel("school.xls")
provinces = list(df.groupby("所在省份").count().index)
new_df = pd.DataFrame(columns=["省份","985院校","211院校","普通院校"])
count = 0
for province in provinces:
new_df.loc[count]=[province,
list(df.loc[(df["所在省份"] == province)&(df["是否985"] == "是")]["招生单位名称"][:]),
list(df.loc[(df["所在省份"] == province)&(df["是否211"] == "是")]["招生单位名称"][:]),
list(df.loc[(df["所在省份"] == province)&(df["是否985"] == "否")&(df["是否211"] == "否")]["招生单位名称"][:])]
count = count+1
new_df.to_excel("生成的table.xls",index=False)
7、设计一个银行账户类:Account,该类包含三个成员变量:账号、用户名、余额。该类提供三个方法:存款、取款、转账。初始化时,账户余额为0,取款和转账前需判断余额是否充足,余额不足时,操作失败,打印相关提示信息。如果两个账户账号相同时,则认为它们是同一个账户。打印账户对象时,将会显示账号、用户名、余额等基本信息。(提示:重写eq方法、str方法)
class Account:
__account_list = []
def __init__(self,account_number,username,balance=0):
self.__account_number = account_number
self.__username = username
self.__balance = balance
Account.__account_list.append(self)
def save_money(self,amount):
self.__balance = self.__balance + amount
def withdraw_money(self,amount):
self.__balance = self.__balance - amount
def transfer(self,account_number,amount):
for account in Account.__account_list:
if account.__account_number == account_number and self != account:
print(account)
confirm = eval(input("是否确定为该账户,确定按1,取消按0"))
if confirm == True:
self.__balance = self.__balance-amount
account.__balance = account.__balance-amount
def __str__(self) -> str:
return "账户:"+str(self.__account_number)+"\n用户名"+str(self.__username)+"\n余额"+str(self.__balance)
def __eq__(self,other):
return self.__account_number == other.__account_number
account1 = Account(123,"qwe")
account1.save_money(1000)
account1.withdraw_money(100)
account2 = Account(345,"asd")
account1.transfer(345,100)
print(account1)
print(account2)