大厂Python招聘面试100题
看着教程会敲代码,自己敲就不会了?如果你也遇到和我初学python是一样的问题,把下面的题目都自己动手敲一遍,保证你编程pytho大牛!
问题 1
问题:编写一个程序,找出所有可以被 7 整除但不是 5 倍数的数字,介于 2000 和 3200 之间(都包括在内)。获得的数字应以逗号分隔的顺序打印在一行上。
提示:考虑使用 range(#begin, #end) 方法
解决方案:
for num in range(2000, 3200):
if num % 7 == 0 and num % 5 != 5:
print(num, end=",")
问题2
1级
问题:编写一个程序,可以计算给定数字的阶乘。结果应以逗号分隔的顺序打印在一行上。假设向程序提供以下输入:8 那么,输出应该是:40320
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
def fact ( x ): if x == 0 : return 1 return x * fact ( x - 1 ) x = int (输入()) 打印(事实( x ))
问题 3
1级
问题:给定整数 n,编写一个程序来生成一个字典,其中包含 (i, i*i) 使得它是介于 1 和 n(都包括在内)之间的整数。然后程序应该打印字典。假设向程序提供以下输入: 8 那么,输出应该是: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64 }
提示:如果向问题提供输入数据,则应假定它是控制台输入。考虑使用 dict()
解决方案:
n = int ( input ()) d = dict () for i in range ( 1 , n + 1 ): d [ i ] = i * i 打印( d )
问题 4
1级
问题:编写一个程序,从控制台接受逗号分隔的数字序列,并生成一个列表和一个包含每个数字的元组。假设向程序提供以下输入:34,67,55,33,12,98 那么,输出应该是:['34', '67', '55', '33', '12', ' 98'] ('34', '67', '55', '33', '12', '98')
提示:如果向问题提供输入数据,则应假定它是控制台输入。tuple() 方法可以将列表转换为元组
解决方案:
值=输入() l =值。拆分( "," ) t =元组( l ) 打印( l ) 打印( t )
问题 5
1级
问题:定义一个至少有两个方法的类: getString:从控制台输入获取字符串 printString:以大写形式打印字符串。还请包括简单的测试功能来测试类方法。
提示:使用init方法构造一些??参数
解决方案:
类 InputOutString (对象): def __init__ ( self ): self。s = "" def getString(自我): 自我。s = 输入() def printString ( self ) : print ( self.s.upper ( ) ) _ strObj = InputOutString () strObj。getString () strObj。打印字符串()
问题 6
2级
问题:编写一个程序,根据给定的公式计算并打印该值: Q = [(2 * C * D)/H] 的平方根 以下是 C 和 H 的固定值:C 为 50。H 为 30 . D 是变量,其值应以逗号分隔的顺序输入到您的程序中。示例让我们假设给程序以下逗号分隔的输入序列:100,150,180 程序的输出应该是:18,22,24
提示:如果收到的输出是十进制形式,则应四舍五入到最接近的值(例如,如果收到的输出为 26.0,则应打印为 26)应假定为控制台输入。
解决方案:
导入 数学 c = 50 h = 30 value = [] items = [ x for x in input (). split ( ',' )] for d in items : value . 附加(str(int(round(数学。sqrt (2 * c * float ( d )/ h ) )))) 打印(','。加入(值))
问题 7
2级
问题:编写一个程序,输入 2 个数字 X,Y 作为输入并生成一个二维数组。数组第 i 行第 j 列的元素值应该是 i*j。注:i=0,1..,X-1;j=0,1,≤Y-1。示例 假设给程序以下输入: 3,5 那么程序的输出应该是: [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [ 0、2、4、6、8]]
提示:注意:如果向问题提供输入数据,则应假定它是逗号分隔形式的控制台输入。
解决方案:
input_str = input () dimensions = [ int ( x ) for x in input_str。split ( ',' )] rowNum =维度[ 0 ] colNum =维度[ 1 ] multilist = [[ 0 for col in range ( colNum )] for row in range ( rowNum )] 对于 范围内的行 (rowNum): 对于 范围内的col ( colNum ): 多列表[ row ][ col ] = row * col 打印(多列表)
问题 8
2级
问题:编写一个程序,接受逗号分隔的单词序列作为输入,并在按字母顺序排序后以逗号分隔的序列打印单词。假设向程序提供以下输入:without,hello,bag,world 那么,输出应该是:bag,hello,without,world
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
items = [ x for x in input (). 拆分(',')] 项目。sort () print ( ',' . join ( items ))
问题 9
2级
问题:编写一个程序,接受行序列作为输入,并在将句子中的所有字符大写后打印行。假设向程序提供以下输入: Hello world 熟能生巧 那么,输出应该是: HELLO WORLD PRACTICE MAKES PERFECT
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
lines = [] while True : s = input () if s : lines。append ( s.upper ( ) ) else : break ; 对于 行中的句子 : 打印(句子)
问题 10
2级
问题:编写一个程序,该程序接受一系列空格分隔的单词作为输入,并在删除所有重复单词并按字母数字排序后打印单词。假设向程序提供了以下输入:hello world and practice make perfect and hello world again 那么,输出应该是:again and hello make perfect practice world
提示:如果向问题提供输入数据,则应假定它是控制台输入。我们使用 set container 自动删除重复数据,然后使用 sorted() 对数据进行排序。
解决方案:
s = input ( ) words = [ s中的单词 。split ( " " )] print ( " " . join ( sorted ( list ( set ( words )))))
问题 11
2级
问题:编写一个程序,它接受一系列逗号分隔的 4 位二进制数作为输入,然后检查它们是否能被 5 整除。可被 5 整除的数字将以逗号分隔的顺序打印。示例:0100,0011,1010,1001 那么输出应该是:1010 注意:假设数据是控制台输入的。
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
value = [] items = [ x for x in input (). split ( ',' )] for p in items : intp = int ( p , 2 ) if not intp % 5 : value。附加( p ) 打印(','。加入(值))
问题 12
2级
问题:编写一个程序,找出所有介于 1000 和 3000 之间的数字(都包括在内),使得该数字的每个数字都是偶数。获得的数字应以逗号分隔的顺序打印在一行上。
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
values = [] for i in range ( 1000 , 3001 ): s = str ( i ) if ( int ( s [ 0 ]) % 2 == 0 ) and ( int ( s [ 1 ]) % 2 == 0 )和( int ( s [ 2 ]) % 2 == 0 )和( int ( s [ 3 ]) % 2 == 0 ): 值。append ( s ) print ( "," . join ( values ))
问题 13
2级
问题:编写一个程序,接受一个句子并计算字母和数字的个数。假设向程序提供以下输入:hello world!123 那么,输出应该是:LETTERS 10 DIGITS 3
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
s = input () d = { "DIGITS" : 0 , "LETTERS" : 0 } for c in s : if c . isdigit (): d [ "DIGITS" ] += 1 elif c。isalpha (): d [ "LETTERS" ] += 1 else : pass print ( "LETTERS" , d [ "LETTERS"]) 打印(“数字”,d [ “数字” ])
问题 14
2级
问题:编写一个程序,接受一个句子,计算大写字母和小写字母的个数。假设向程序提供以下输入:Hello world!然后,输出应该是: UPPER CASE 1 LOWER CASE 9
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
s = input () d = { "UPPER CASE" : 0 , "LOWER CASE" : 0 } for c in s : if c . isupper (): d [ "大写" ] += 1 elif c。islower (): d [ "LOWER CASE" ] += 1 else : pass print ( "UPPER CASE" , d ["大写" ]) 打印( "小写" , d [ "小写" ])
问题 15
2级
问题:编写一个程序,以给定数字作为 a 的值,计算 a+aa+aaa+aaaa 的值。假设向程序提供以下输入:9 那么,输出应该是:11106
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
a = 输入() n1 = int ( "%s" % a ) n2 = int ( "%s%s" % ( a , a ) ) n3 = int ( "%s%s%s" % ( a , a , a ) ) n4 = int ( "%s%s%s%s" % ( a , a , a , a ) ) 打印( n1 + n2+ n3 + n4 )
问题 16
2级
问题:使用列表推导对列表中的每个奇数求平方。该列表由逗号分隔的数字序列输入。假设向程序提供以下输入:1,2,3,4,5,6,7,8,9 那么,输出应该是:1,3,5,7,9
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
values = input () numbers = [ x for x in values。split ( "," ) if int ( x ) % 2 != 0 ] print ( "," . join ( numbers ))
问题 17
2级
问题:编写一个程序,根据控制台输入的交易日志计算银行账户的净金额。事务日志格式如下: D 100 W 200
D 表示存款,W 表示取款。假设向程序提供以下输入: D 300 D 300 W 200 D 100 那么,输出应该是: 500
提示:如果向问题提供输入数据,则应假定它是控制台输入。
解决方案:
netAmount = 0 while True: s = input() if not s: break values = s.split(" ") operation = values[0] amount = int(values[1]) if operation=="D": netAmount+=amount elif operation=="W": netAmount-=amount else: pass print(netAmount)
Question 18
Level 3
Question: A website requires the users to input username and password to register. Write a program to check the validity of password input by users. Following are the criteria for checking the password:
- At least 1 letter between [a-z]
- At least 1 number between [0-9]
- At least 1 letter between [A-Z]
- At least 1 character from [$#@]
- Minimum length of transaction password: 6
- Maximum length of transaction password: 12 Your program should accept a sequence of comma separated passwords and will check them according to the above criteria. Passwords that match the criteria are to be printed, each separated by a comma. Example If the following passwords are given as input to the program: ABd1234@1,a F1#,2w3E*,2We3345 Then, the output of the program should be: ABd1234@1