第一周作业
一、选择题
-
下列变量名中不合法的是?(c)
A. abc
B. Npc
C. 1name
D ab_cd
-
下列选项中不属于关键字的是?(d)
A. and
B. print
C. True
D. in
-
下面哪个选项对应的代码写法是正确的?(c)
A.
print('Python') print('新手村')
B.
print('Python') print('新手村')
C.
print('Python') print('新手村')
D.
print('Python''新手村')
-
下面选项中能打印出50的是?b
A.
print('100 - 50')
B.
print(100 - 50)
-
关于引号,下面选项中使用正确的是?d
A.
print('hello)
B.
print("hello')
C.
print(“hello”)
D.
print("hello")
二、编程题
-
写代码在控制台打印
good good study, day day up!
print('good good study','day day up',sep=',')
-
写代码在控制台打印5次
you see see, one day day!
for x in range(5): print('you see see', 'one day day', sep=',')
-
写代码打印数字 11、12、13、... 21
i = 11 for x in range(10): print(i, end='.') i += 1 else: print(i) 结果: 11.12.13.14.15.16.17.18.19.20.21
-
写代码打印数字 11,13,15,17,...99
i = 11 for x in range(88): print(i, end='.') i += 1 else: print(i)
-
写代码打印数字:10、9、8、7、6、5
i = 10 for x in range(5): print(i, end='.') i -= 1 else: print(i)
-
写代码计算:1+2+3+4+...+20 的和
i = 1 a = 0 x = 0 for x in range(0,20): #print(i, end='.') a += i i += 1 else: print(a) 结果: 210
-
写代码计算100以内所有偶数的和
a = 0 x = 0 for x in range(0,100,2): a += x else: print(a) 结果: 2450
-
写代码统计100~200中个位数是3的数的个数
a = 0 x = 0 for x in range(100,201): q = x % 10 if q == 3: a += 1 else: print(a)
-
写代码计算
2*3*4*5*...*9
的结果print(2*3*4*5*6*7*8*9) 结果: 362880
-
输入一个数,如果输入的数是偶数就打印
偶数
否则打印奇数
x = random.randint(1,100) if x % 2: print(x,'奇数') else: print(x,'偶数') 结果: 34 偶数 37 奇数
-
统计1000以内能被3整除但是不能被5整除的数的个数。
for x in range(0,1000): if not(x % 3) and x % 5: c += 1 else: print(c) 结果: 267
-
判断101-200之间有多少个素数,并输出所有素数。
count = 0 for x in range(101,201): for i in range(2,x): if x % i == 0: break else: print('%d是一个素数'%x) count += 1 print('一共有%d个素数'%count) 101是一个素数 103是一个素数 107是一个素数 109是一个素数 113是一个素数 127是一个素数 131是一个素数 137是一个素数 139是一个素数 149是一个素数 151是一个素数 157是一个素数 163是一个素数 167是一个素数 173是一个素数 179是一个素数 181是一个素数 191是一个素数 193是一个素数 197是一个素数 199是一个素数 一共有21个素数
-
求整数1~100的累加值,但要求跳过所有个位为3的数。
count = 0 for x in range(1,101): c = x % 10 if c % 3: count += x else: print(count) 结果: 2970
-
有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数
a=2 b=3 c=1 d=2 for x in range(3,21): if x % 2: a += b print(a,end='-') c += d else: b+=a print(b,end='~') d += c else: print(b) print('%d/%d'%(b,d)) 结果: 5-8~13-21~34-55~89-144~233-377~610-987~1597-2584~4181-6765~10946-17711~17711 分数:17711/10946
-
写程序计算 n 的阶乘 n! 的结果
x = random.randint(1,50) b = x count = x while (x - 1): count *= (x-1) x -= 1 else: print('%d!等于%d'%(b,count)) 结果: 40!等于815915283247897734345611269596115894272000000000 2!等于2 5!等于120
-
求1+2!+3!+...+20!的和
c = 1 for x in range(2, 21): count = x b = x while (x-1): count *= (x - 1) x -= 1 else: c += count else: print(c) 结果: 2561327494111820313
-
写程序求表达式 a + aa + aaa + aaaa+ ... 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)
-
控制台输出三角形
a.根据n的值的不同,输出相应的形状 n = 5时 n = 4 ***** **** **** *** *** ** ** * * shape = '*' n = random.randint(1,10) print('%d值'%n) for i in range(n,0,-1): f = shape d = i while d-1: f += shape d -= 1 else: print(f) 结果:6值 ****** ***** **** *** ** * b.根据n的值的不同,输出相应的形状(n为奇数) n = 5 n = 7 * * *** *** ***** ***** ******* shape = '*' shape1 = ' ' n = 7 c = (n-1)//2+1 q = c active = True shape5 = shape*n print('输入的值:%d'%n) for i in range(c,0,-1): f = shape g = shape1 d = i num1 = 0 num = '' while d: num += shape1 num1 += 1 d -= 1 if d == 0: while num1: num += shape*((c-num1)*2+1) num += shape1*d print(num) num1 = 0 结果: 输入的值:7 * *** ***** ******* 输入的值:9 * *** ***** ******* ********* c. 根据n的值的不同,输出相应的形状 n = 4 1 121 12321 1234321 n = 5 1 121 12321 1234321 123454321 shape = ' ' n = 5 num = '' print('所输入的值:%d'%n) for i in range(n,0,-1): num = '' f = shape num1 = 0 d = i num2 = 0 num4 = 0 num5 = 0 while d: num += shape num1 += 1 d -= 1 if d == 0 : print(num, end='') num3 = n - num1 + 1 while num3: num2 += 1 num4 += 1 print(num2, end='') num3 -= 1 if num3 == 0: num5 = num4 while num4-1: num5 -= 1 print(num5,end='') num4 -= 1 else: print(' ') 结果: 所输入的值:5 1 121 12321 1234321 123454321 所输入的值:8 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321
-
小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?
num1 = 15 nu1 = 6 num2 = 2 nu2 = 50 num3 = 5 nu3 =20 for i in range(0,7): for j in range(0,51): for n in range(0,21): if i*num1+j*num2+n*num3 == 100: print('洗发水%d瓶,香皂%d个,牙刷%d双'%(i,j,n)) 结果: 洗发水0瓶,香皂0个,牙刷20双 洗发水0瓶,香皂5个,牙刷18双 洗发水0瓶,香皂10个,牙刷16双 洗发水0瓶,香皂15个,牙刷14双 洗发水0瓶,香皂20个,牙刷12双 洗发水0瓶,香皂25个,牙刷10双 洗发水0瓶,香皂30个,牙刷8双 洗发水0瓶,香皂35个,牙刷6双 洗发水0瓶,香皂40个,牙刷4双 洗发水0瓶,香皂45个,牙刷2双 洗发水0瓶,香皂50个,牙刷0双 洗发水1瓶,香皂0个,牙刷17双 洗发水1瓶,香皂5个,牙刷15双 洗发水1瓶,香皂10个,牙刷13双 洗发水1瓶,香皂15个,牙刷11双 洗发水1瓶,香皂20个,牙刷9双 洗发水1瓶,香皂25个,牙刷7双 洗发水1瓶,香皂30个,牙刷5双 洗发水1瓶,香皂35个,牙刷3双 洗发水1瓶,香皂40个,牙刷1双 洗发水2瓶,香皂0个,牙刷14双 洗发水2瓶,香皂5个,牙刷12双 洗发水2瓶,香皂10个,牙刷10双 洗发水2瓶,香皂15个,牙刷8双 洗发水2瓶,香皂20个,牙刷6双 洗发水2瓶,香皂25个,牙刷4双 洗发水2瓶,香皂30个,牙刷2双 洗发水2瓶,香皂35个,牙刷0双 洗发水3瓶,香皂0个,牙刷11双 洗发水3瓶,香皂5个,牙刷9双 洗发水3瓶,香皂10个,牙刷7双 洗发水3瓶,香皂15个,牙刷5双 洗发水3瓶,香皂20个,牙刷3双 洗发水3瓶,香皂25个,牙刷1双 洗发水4瓶,香皂0个,牙刷8双 洗发水4瓶,香皂5个,牙刷6双 洗发水4瓶,香皂10个,牙刷4双 洗发水4瓶,香皂15个,牙刷2双 洗发水4瓶,香皂20个,牙刷0双 洗发水5瓶,香皂0个,牙刷5双 洗发水5瓶,香皂5个,牙刷3双 洗发水5瓶,香皂10个,牙刷1双 洗发水6瓶,香皂0个,牙刷2双 洗发水6瓶,香皂5个,牙刷0双
-
一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
n=8*(10**-5) num1 = 1 num2 = 2 num3 = 0 num4 = 0 while 1: num4 += 1 num3 = num2**num1 n *= num3 if n > 8848.13: print('对折%d次后的高度%s'%(num4,n)) break 结果: 对折27次后的高度10737.41824
-
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
num = 2 for i in range(1,13): d = i if d < 3: num = 2 print('%d月的兔子总数%d'%(d,num)) if 3 <= d <=5: num += 2 print('%d月的兔子总数%d'%(d,num)) if d > 5: num += 2 * (d-4) print('%d月的兔子总数%d' % (d, num)) 结果: 1月的兔子总数2 2月的兔子总数2 3月的兔子总数4 4月的兔子总数6 5月的兔子总数8 6月的兔子总数12 7月的兔子总数18 8月的兔子总数26 9月的兔子总数36 10月的兔子总数48 11月的兔子总数62 12月的兔子总数78
-
将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
237
-
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
x = random.randint(1000,9999) a = ((x % 10)+5)%10 #个位 b = ((x % 100 // 10)+5)%10 c = ((x % 1000 // 100)+5)%10 d = ((x // 1000)+5)%10 print('%d加密后的值为:%d%d%d%d'%(x,a,b,c,d)) 结果: 3819加密后的值为:4638 6557加密后的值为:2001
-
将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num1 = random.randint(1, 10000) j = num1 print(j,end='=') active = 1 while j>1: for i in range(2, j+1): if j % i == 0: j = j // i if j == 1: print(i) else: print(i,end='*') break 结果: 9999=3*3*11*101 5820=2*2*3*5*97 84=2*2*3*7
-
本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。
money = 10000 interest = 0.003 n = 5 c = 0 for i in range(1,n+1): money += money * interest print('%d年的利息加本金为:%s'%(n,money)) 结果: 5年的利息加本金为:10150.90270405243
-
输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)
x = random.randint(1,100000) c = str(x) length = len(c) print(length, x) num = 0 num1 = 0 for i in range(1,length+1): num = (x % (10**i)) // (10**(i-1)) num1 +=num print('%d的各位数上之和为:%d'%(x,num1)) 结果: 5 35411 35411的各位数上之和为:14 6 438066 438066的各位数上之和为:27
-
求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)
a = random.randint(1,50) b = random.randint(1,50) c =0 print(a,b) if a >= b: c = b else: c = a for x in range(c,0,-1): if a % x == 0 and b % x ==0: i = a // x j = b // x n = i * j * x print('%d和%d的最大公约数和最小公倍数为:%d %d'%(a,b,x,n)) break 结果: 2 5 2和5的最大公约数和最小公倍数为:1 10 6 24 6和24的最大公约数和最小公倍数为:6 24 14 19 14和19的最大公约数和最小公倍数为:1 266