第一次上机
实验一
# 随机生成两个小于100的整数,打印其中一个数的数据类型和存储地址, 求这两个数的和、差、积、商、幂运算.
import random
x = random.randint(1, 100)
y = random.randint(1, 100)
# print(x)
# print(y)
print("这两个随机数是:%d,%d" % (x, y)) # 输出这两个数
# print(type(x))
print("x的类型:%s" % (type(x))) # 输出x的类型
# print(id(x))
print("x的地址:%d" % (id(x))) # 输出x的地址
# print(x+y)
sum = x + y
print("两数之和为:%d" % (sum))
# print(x-y)
dif = x - y
print("两个数之差:%d" % (dif))
# print(x*y)
pro = x * y
print("两个数之积:%d" % (pro))
# print(x/y)
dea = x / y
print("两个数之商:%d" % (dea))
# print(x/y)
dea = x / y
print("两个数之商:%d" % (dea))
# print(x**y)
pow = x ** y
print("两个数之幂:%d" % (pow))
1.print()输出格式
print("这两个随机数是:%d,%d" % (x, y)) # 输出这两个数
print("%d和%d的最大公约数为:%d" % (x, y, n))
print("x的类型:%s" % (type(x)))
# a为列表
print(a)
print("最大值为:", max(a))
ave = sum(a)/len(a) # 求列表所有元素平均值
print("平均值为:", ave)
2.幂运算
pow =x**y
实验二
# 2、编程函数,输入两个数,求最大公约数和最小公倍数
x = int(input("请输入第一个整数:")) # 在input前加上输入值的数据类型
y = int(input("请输入另一个整数:"))
m = [] # 建立空列表
# 比较两个输入值的大小
if x > y:
smaller = y
else:
smaller = x
for i in range(1, smaller+1): # 最大公约数的值不能超过两数中小的那一个
if(x % i == 0) and (y % i == 0):
m.append(i)
continue
n = m[-1] # 取m中的最后一个元素
print("%d和%d的最大公约数为:%d" % (x, y, n))
print("%d和%d的最小公倍数为:%d" % (x, y, x*y//n))
1.input()前加上输入值的数据类型
x = int(input("请输入第一个整数:"))
2.最大公约数&最小公约数
** xy=nm ** n为最大公约数 m为最小公倍数数 比较两数大小,建立空列表,最大公约数的值不能超过两数中小的那一个 最大公约数:两数都可整除,整除的值移入新表,选最后一个元素 求出最大公约数后,用xy=nm求出最小公倍数
实验三
# 3、随机生成一个列表a,10个元素。打乱顺序,然后求a的最大值,最小值,和,平均值,显示从大到小的顺序。
import random
# a=[random.randint(1,100) for i in range(10)]
a = []
for i in range(1, 11):
b = random.randint(1, 100)
a.append(b) # append()用于在列表的末尾追加元素:a列表中添加b中生成的元素
print(a)
random.shuffle(a) # 随机打乱顺序
print(a)
print("最大值为:", max(a))
print("最小值为:", min(a))
print("和为:", sum(a))
ave = sum(a)/len(a) # 求列表所有元素平均值
print("平均值为:", ave)
a.sort(reverse=True) # 逆序排序
print(a)
1.逆序、顺序排序
a.sort(reverse=True) # 逆序排序
a.sort(x) # 顺序排序,x为列表
2.求列表中所有元素的平均值
ave = sum(a)/len(a) # 求列表所有元素平均值
print("平均值为:", ave)
3.建立元素个数确定的随机列表
a = [] # 建立空列表
for i in range(1, 11):
b = random.randint(1, 100)
a.append(b) # append()用于在列表的末尾追加元素:a列表中添加b中生成的元素
第二次上机
实验一
# 1、编写程序,用户输入一个四位整数,输出其百位千位和个位数字之和。
x = int(input("请输入一个四位整数:"))
m = x // 1000 # 千位数字
print(m)
n = (x % 1000)//100 # 百位数字
print(n)
z = x % 10 # 个位数字
print(z)
sum = m + n + z
print("千位、百位、个位数字之和为:%d " % (sum))
实验二
# 2、生成包括1000个0到100之间的随机整数,统计每个元素的出现次数,输出重复次数最多的元素。(提示:可能存在重复数据。)
import random
a = []
for i in range(1000):
b = random.randint(0, 100)
a.append(b)
for i in a:
from collections import Counter
cs = Counter(a).most_common(1)
print(cs)
1.统计每个元素出现的次数,求最多次数的值
for i in a: from collections import Counter cs = Counter(a).most_common(1)
实验三
# 3、请输入一个字符串,再输入要删除的某个字符 ,大小写不用区分,将字符串中出现的指定字符全部删除。
a_str = str(input("请输入一个字符串: "))
b_c = str(input("请输入一个需要删除的字符: "))
c = ' '
for i in a_str:
if i.lower() != b_c.lower():
c += i
print(c)
1.删除指定字符
当两个小写值不相等时,把不相等的值移到新列表中
第三次上机
实验一
# 产生一个 1-26 的数字列表A的代码是:
A = [i for i in range(1, 27)]
print(A)
# 产生一个“ A”- “Z”的字母列表B是:
B = [chr(i) for i in range(65, 91)]
print(B)
# 请生成一个字典mydict,使得数字与字符形成对应,如1):1:”A”, 2: ”B”……26:” Z”
mydict = dict(zip(A, B))
print(mydict)
# 2)已知 ListA=[1,2,3,4,5], ListB= [ ‘one ’, ’two ’, ’three ’, ’four ’, ’five ’],
# 请把两个列表合并成字典
ListA = [i for i in range(1, 6)]
ListB =['one', 'two', 'three', 'four', 'five']
thisdict =dict(zip(ListA, ListB))
print(thisdict)
1. 产生一个“ A”- “Z”的字母列表B是:
B = [chr(i) for i in range(65, 91)]
2.产生一个 1-26 的数字列表A的代码是:
A = [i for i in range(1, 27)]
3.mydict = dict(zip(A, B))
实验二
# 2. 使用字典来创建程序,提示用户输入电话号码,并用英文单词形式显示数字。
# 例如:输入 521 显示为“five two one ”.
num = [i for i in range(0, 10)]
num2 = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
numdict = dict(zip(num, num2))
hua = input("请输入一个电话号码:")
for i in hua:
print(numdict[int(i)], end=' ')
由键找值:for i in hua: print(numdict[int(i)], end=’ ')
实验三
# 3. 莫尔斯电码采用了短脉冲和长脉冲 (分别为点和点划线) 来编码字母和数字。 例如,字母“A”是点划线,“B”是点划线点点。如文件 Mos.txt 文件所示。
# A .- B ... C -.-. D -.. E . F ..-. G --. H .... I ..
# J .--- K -.- L .-.. M -- N -. O --- P .--.
# Q --.- R .-. S ... T - U ..- V ...- W .--
# X -..- Y -.-- Z --..
# 1)创建字典,将字符映射到莫尔斯电码。
# 2)输入一段英文,翻译成莫尔斯电文。
A = [chr(i) for i in range(65, 91)]
B = ['.-','...','-.-.','-..','.','..-.','--.','....','..','.---','-.- ','.-..','--','-.','---','.--.','--.-','.-.','...',' - ','..- ','...-','.--','-..-','-.--','--..']
mydict = dict(zip(A, B))
print(mydict)
words = input("请输入一段英文: ").strip()
for i in words:
print(mydict[i], end=' ')
第四次上机
实验一
# 1. 通过 Input()函数任意输入三条边长,经过简单的计算后,判断三条边长能否构成三角 形,
# 并确定是什么类型的三角形,如(等边,等腰,一般三角形)。
x = float(input("请输入一条边长:"))
y = float(input("请输入一条边长:"))
z = float(input("请输入一条边长:"))
if x + y > z and x - y < z:
print("这三条边可以构成三角形")
if x == y and y ==z:
print("该三角形为等边三角形")
elif x == y or y == z or x == z:
print("该三角形为等腰三角形")
else:
print("该三角形为一般三角形")
else:
print("这三边不能构成三角形")
实验二
# 2. 密码登录程序。要求:建立一个登录窗口 ,要求输入帐号和密码。
# 设定用户名为 ”zhangshan”,密码为 “Python123”;
# 若用户名正确, 密码正确,则显示 “Zhangshan先生,欢迎你 ! ”;
# 如果用户名错误,则显示“用户名错误,请重新输入 ! ”;
# 若密码不正确 ,显示“对不起 ,密码错误 ,无法登录! ”。
x = str(input("请输入账号: "))
y = str(input("请输入密码: "))
if x == 'zhangshan' and y == 'Python123':
print("Zhangshan先生,欢迎你 ! ")
elif x != 'zhangshan' and y == 'Python123':
print("用户名错误,请重新输入 ! ")
elif x == 'zhangshan' and y != 'Python123':
print("对不起 ,密码错误 ,无法登录!")
实验三
# 4. 计算一元二次方程 ax2+bx+c 的根是公式。因为负数的平方根是虚的,所以可以使用平方根里面的表达式(称为差别式)
# 先进行判别,检查根型。
# 如果判别式是负数,根是虚的。如果判别式是零,只有一个根;如果判别式是正的,
# 有两个根。
# 写 一个程序,使用二次方根式得到实根,即忽略虚根。使用判别式确定有一个根或两个根, 然后显示出答案。
a = int(input("请输入a的值: "))
b = int(input("请输入b的值: "))
c = int(input("请输入c的值: "))
if b*b-4*a*c > 0:
print("有两个实根")
elif b*b-4*a*c == 0:
print("有一个实根")
elif b*b-4*a*c < 0:
print("没有实根")
第五次上机
实验一
# 1.编写程序,找出 7 的倍数中十位数为 2 的所有 3 位数。
for x in range(99, 1000):
if x % 7 == 0:
a = (x // 10) % 10
if a == 2:
print(x)
for i in range(99, 1000):
if i % 7 == 0:
if (i % 100) // 10 == 2:
print(i)
x % 7 == 0:整除,无余数
实验二
# 编写程序用 Print 语句输出 2000 年至 2500 年间的所有闰年, 要求每行输出 8 个。
i = 0
for x in range(2000, 2501):
if(x % 400 == 0) or (x % 4 == 0 and x % 100 != 0):
# 闰年①整百年份必须是400的倍数②非整百数必须是4的倍数
print(x, end=" ")
i += 1
if(i % 8 == 0):
print("\n")
闰年计算:是400的倍数 或 是4的倍数不是100的倍数
固定一行个数
**i += 1
if(i % 8 == 0):
print("\n")**
实验三
# 编写程序解决爱因斯坦台阶问题:有人走一台阶,若以每步走两级则最后剩下一级
# 若每步走三级则剩两级;若每步走四级则剩三级;若每步走五级则剩四级
# 若每步走六级则剩五级;若每步走七级则刚好不剩。问台阶至少共有多少级?
x = 7
while True:
x = x+7
if x % 7 == 0 and x % 6 == 5 and x % 5 == 4 and x % 4 == 3 and x % 3 == 2 and x % 2 == 1:
break
print(x)
可以看出是7的倍数,只需要在7的倍数中寻找
实验四
# 我国有 13 亿人口,如果按人口年增长 0.8%计算,多少年后将达到 26 亿
x = 13
i = 0
while x <= 26:
x = x*1.008
i += 1
print("还需要", i, "年")
使用while循环,循环1即i+1
第六次上机
实验一
# 编写一函数 Fabonacci(n),其中参数 n 代表第 n 次的迭代。
def Fabonacci(n):
if n == 0:
return 0
elif n == 1 or n == 2:
return 1
else:
n = Fabonacci(n-1) + Fabonacci(n-2)
return n
def main():
n = int(input("输入n值:"))
print(Fabonacci(n))
main()
实验二
# 编写一函数 Prime(n),对于已知正整数 n,判断该数是否为素数,如果是素数,返回 True,否则返回 False
def Prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
def main():
n = int(input("请输入一个正整数:"))
print(Prime(n))
main()
素数判断计算,在2 -(n-1)中逐一找能整除的数
使用range(),列出所有值,逐一试 for i in range(2, n): if n % i == 0: return False
实验三
# 利用上题中判断素数的函数,编写程序找出 1~100 之间的所有孪生素数(若两个素数之差为 2,则 这两个素数就是一对孪生素数) 。
# 例如: 3 和 5、5 和 7、11和 13 等都是孪生素数
def Prime(n):
for i in range(2, n):
if n % i == 0:
return 0
return 1
def main():
for n in range(1, 100):
if Prime(n) == 1 and Prime(n+2) == 1:
print(n, n+2)
main()
**for n in range(1, 100):
if Prime(n) == 1 and Prime(n+2) == 1:
print(n, n+2)**
第七次上机
实验一
# 编写一函数,将摄氏温度与华氏温度互转。(公式: C*1.8+32=F)
def main():
c = float(input("请输入摄氏温度:"))
f = c * 1.8 + 32
print("华氏温度为:", f)
main()
实验二
# 堆里有 16 颗豆子,有两个玩家(假设一个玩家是电脑) 。每个玩家都可以从堆中的 16 颗豆子中取出 1 颗, 2 颗或者 3 颗豆子。
# 每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后 一颗豆子的玩家是输家。
# 思路: 写一个人取豆子的函数 ; 帮电脑设计一个算法,实现取豆子的函数 ; 在主程序中进行输流调用,谁 最后拿到 1 粒豆子谁就输。
import random
def human(n):
print('-' * 30)
while 1:
guess_human = int(input("人玩家取豆数为: ")) # 人类玩家取豆数量
if 1 <= guess_human <= 3: # 判断数量正确与否
break
else: # 取的数量有误
print("取豆数量超出范围")
print("剩余豆子数量为:", n - guess_human) # 剩余豆数量
return (n - guess_human)
def computer(n):
print('-' * 30)
guess_computer = random.randint(1, 3)
print("机器玩家取豆数为: ", guess_computer)
print("剩余豆子数量为:", (n - guess_computer)) # 剩余豆数量
return (n - guess_computer)
def main():
computer_win = False # 预先设定
total = 16 # 豆子总数
print("豆子总量为", total)
print("每次取豆数需为1-3颗豆子。")
while 1:
total = human(total)
if total <= 0:
computer_win = False
break
total = computer(total)
if total == 0:
computer_win = True
break
if computer_win:
print("人类玩家胜利!")
else:
print("电脑玩家胜利!")
main()
第二次作业
实验一
# 假设有一段英文,其中有单词中间的字母i误写为I,请编写程序进行纠正
s = input('请输入一段英文:')
list1 = s.split() # 分割这一段英文
result = [] # 存放最后结果的空列表
print(list1) # 打印用户输入的这一段英文
for i in range(len(list1)):
if len(list1[i]) != 1: # 列表list1中的第i个元素是单词时
result.append(list1[i])
else: # 列表list1中的第i个元素不是单词时
if list1[i] == 'i':
result.append('I')
else:
result.append(list1[i])
print(result)
print(' '.join(result)) # 将列表result中的元素用空格连接起来
实验二
# 有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一个,例如:文本内容为“This is is a desk.”,程序输出为“This is a desk.”。
l = []
s = "This is is a desk."
for i in s.split(" "):
if i not in l:
l.append(i)
result = " ".join(l)
print(result)
实验三
4.编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词。
# 编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词。
s = input('请输入一段英文:')
list2 = s.split() # 分割这一段英文
result = [] # 存放最后结果的空列表
for i in list2:
if len(i) == 3: # 如果单词的长度为3 输出
print(i)
else:
print('')
第一次作业
实验一
# 10.编写程序,用户输入一个三位以上的整数,输入其百位以上的数字。例如用户输入1234,则程序输出12(使用整数运算)
s = input('请输入一段英文:')
list1 = s.split() # 分割这一段英文
result = [] # 存放最后结果的空列表
print(list1) # 打印用户输入的这一段英文
for i in range(len(list1)):
if len(list1[i]) != 1: # 列表list1中的第i个元素是单词时
result.append(list1[i])
else: # 列表list1中的第i个元素不是单词时
if list1[i] == 'i':
result.append('I')
else:
result.append(list1[i])
print(result)
print(' '.join(result)) # 将列表result中的元素用空格连接起来
10.编写程序,用户输入一个三位以上的整数,输入其百位以上的数字。例如用户输入1
|