一部分easy的删掉了
Prepare > Python > Introduction
Python If-Else
Task
Given an integer, , perform the following conditional actions:
- If is odd, print
Weird
- If is even and in the inclusive range of to , print
Not Weird
- If is even and in the inclusive range of to , print
Weird
- If is even and greater than , print
Not Weird
#!/bin/python3
import math
import os
import random
import re
import sys
if __name__ == '__main__':
n = int(input().strip())
if(n % 2 == 0 and (n <=5 or n > 20)):
print("Not Weird")
else:
print("Weird")
Arithmetic Operators
Python: Division
if __name__ == '__main__':
a = int(input())
b = int(input())
print(a//b) //整除
print(a/b) //分数除法
Loops
#输入3,输出 0 1 4
if __name__ == '__main__':
n = int(input())
for i in range(n):
print(i**2)
Write a function:Leap year
Task
An extra day is added to the calendar almost every four years as February 29, and the day is called a leap day. It corrects the calendar for the fact that our planet takes approximately 365.25 days to orbit the sun. A leap year contains a leap day. In the Gregorian calendar, three conditions are used to identify leap years:
The year can be evenly divided by 4, is a leap year, unless:The year can be evenly divided by 100, it is NOT a leap year, unless:The year is also evenly divisible by 400. Then it is a leap year.
This means that in the Gregorian calendar, the years 2000 and 2400 are leap years, while 1800, 1900, 2100, 2200, 2300 and 2500 are NOT leap years.
def is_leap(year):
leap = False
# Write your logic here
if(year%4 == 0 and year%100 != 0 )or (year%400 ==0):
leap = True
return leap
year = int(input())
Print Function
#输入3,输出123
if __name__ == '__main__':
n = int(input())
for i in range(1, n+1):
print(i, end="")
Prepare > Python > Basic Data Types
List Comprehensions
Task
输入:x=1 y=1 z=2 n=3
输出:[[0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2]]
if __name__ == '__main__':
x = int(input())
y = int(input())
z = int(input())
n = int(input())
print([[i,j,k] for i in range(x+1) for j in range(y+1) for k in range(z+1) if sum([i,j,k])!=n])
Find the Runner-Up Score!
Task
Given list is[2,3,4,5,5,6] . The maximum score is6 , second maximum is5 . Hence, we print 5 as the runner-up score.
if __name__ == '__main__':
n = int(input())
arr = map(int, input().split())
arr_sorted = sorted(set(arr), reverse=True)
print(arr_sorted[1])
#arr = map(int, input().split()):将其分割成多个字符串,然后将这些字符串转换为整数,并将它们存储在一个列表中。
#arr_sorted = sorted(set(arr), reverse=True):这一行代码首先使用 set(arr) 将列表中的元素去重,然后使用 sorted 对去重后的元素进行排序,reverse=True 表示降序排序。
Nested Lists
Task
If there are multiple students with the second lowest grade, order their names alphabetically and print each name on a new line.
if __name__ == '__main__':
main_list = []
score_set = set()
for _ in range(int(input())):
name = input()
score = float(input())
main_list.append((name, score))
score_set.add(score)
lowest_score = sorted(score_set)[1]
print(*sorted([name for name, score in main_list if score == lowest_score]), sep = '\n')
Finding the percentage
Task
marks key:value pairs are
'alpha’:[20, 30, 40]
’beta': [30,50,70]
query_name='beta'
The query_name is 'beta'. beta's average score is (30 + 50 + 70)/3 = 50.00.
if __name__ == '__main__':
n = int(input())
student_marks = {}
for _ in range(n):
name, *line = input().split()
scores = list(map(float, line))
student_marks[name] = scores
query_name = input()
arr = student_marks[query_name]
print("%.2f"%(sum(arr)/len(arr)))
Lists
Task
N =4
append 1
append 2
insert 3 1
Output:
[1, 3,2]
if __name__ == '__main__':
N = int(input())
list = []
for i in range(N):
command = input().split()
if(command[0] == "insert"):
list.insert(int(command[1]), int(command[2]))
elif(command[0] == "print"):
print(list)
elif(command[0] == "remove"):
list.remove(int(command[1]))
elif(command[0] == "append") :
list.append(int(command[1]))
elif(command[0] == "sort"):
list.sort()
elif(command[0] == "pop"):
list.pop()
elif(command[0] == "reverse"):
list.reverse()
Tuples
Task
Given an integer n , n and space-separated integers as input, create a tuple t, of those integers n. Then compute and print the result of hash(t).
if __name__ == '__main__':
n = int(input())
integer_list = map(int, input().split())
print(hash(tuple(integer_list)))
#将整数列表转换为元组,然后计算该元组的哈希值,并将哈希值打印出来。哈希值是元组内容的不可变表示,可以用于快速比较元组是否相等。
Prepare > Python > Strings
sWAP cASE
Task
大小写转换:Www.HackerRank.com → wWW.hACKERrANK.COM
def swap_case(s):
ns = s.swapcase()
return ns
if __name__ == '__main__':
s = input()
result = swap_case(s)
print(result)
#.swapcase():可以实现大小写转换
String Split and Join
Task
字符串拼接与分开:this is a string→this-is-a-string
def split_and_join(line):
# write your code here
return "-".join(line.split(" "))
if __name__ == '__main__':
line = input()
result = split_and_join(line)
print(result)
# s.split(" ") -> ['this', 'is', 'a', 'string']
# "-".join(s) -> this-is-a-string
# 思路是先拆开split,在加入join
What's Your Name?
Task
字符串输出:firstname lastname → Hello firstname lastname! You just delved into python.
def print_full_name(first, last):
# Write your code here
print(f'Hello {first} {last}! You just delved into python.')
if __name__ == '__main__':
first_name = input()
last_name = input()
print_full_name(first_name, last_name)
#f' { } ': 字符串(f-string)的语法,这是 Python 3.6 引入的一项功能。f 字符串允许在字符串中嵌入表达式,就可以在字符串中直接引用变量。
Mutations
Task
字符串插入字符:abracadabra
5 k
→ abrackdabra
def mutate_string(string, position, character):
return string[0:position]+character+string[position+1:]
if __name__ == '__main__':
s = input()
i, c = input().split()
s_new = mutate_string(s, int(i), c)
print(s_new)
# 字符串插入字符有两种办法:
# (1)先把string给list(),再指定[]=,最后''.join()把字符串拼接一起
# string = "abracadabra"
# l = list(string)
# l[5] = 'k'
# string = ''.join(l)
# (2)直接用切片给分开
# string[0:5] + k + string[6:]
Find a string
Task
查找相同的字符串:ABCDCDC → CDC
def count_substring(string, sub_string):
num = 0
for i in range(0, len(string)):
if ord(string[i]) == ord(sub_string[0]):
if i+len(sub_string)<= len(string):
if string[i:i+len(sub_string)] == sub_string[:]:
num += 1
return num
if __name__ == '__main__':
string = input().strip()
sub_string = input().strip()
count = count_substring(string, sub_string)
print(count)
# 还有一种写法,更简单:
# if string[::-1][i: i+len(sub_string)] == sub_string[::-1]:
# 取string的逆序,再从中取出sub_string一样长的字段
String Validators
Task
In the first line, print True if has any alphanumeric characters. Otherwise, print False.
In the second line, print True if has any alphabetical characters. Otherwise, print False.
In the third line, print True if has any digits. Otherwise, print False.
In the fourth line, print True if has any lowercase characters. Otherwise, print False.
In the fifth line, print True if has any uppercase characters. Otherwise, print False.
if __name__ == '__main__':
s = input()
print(any(i.isalnum() for i in s))
print(any(i.isalpha() for i in s))
print(any(i.isdigit() for i in s))
print(any(i.islower() for i in s))
print(any(i.isupper() for i in s))
# .isalnum():必须是a-z,A-Z,0-9
# .isalpha():必须是a-z,A-Z
# .isdigit():必须是0-9
# .islower():字母必须全是a-z
# .isupper():字母必须全是A-Z
Text Alignment
Task
输入5,输出
n = int(input())
c='H'
#head
for i in range(n):
print((c * i).rjust(n-1) + c + (c * i).ljust(n - 1))
#body
for j in range(n+1):
print((c * n).center(n * 2) + (c * n).center(n * 6))
#body center
for i in range((n//2)+1):
print((n * 5 * c).center(n * 6))
#leg
for j in range(n+1):
print((c * n).center(n * 2) + (c * n).center(n * 6))
#foot
for i in range(n):
print(((c * (n - 1 -i)).rjust(n) + c + (c * (n - 1 - i)).ljust(n)).rjust(n*6))
Text Wrap
Task
import textwrap
def wrap(string, max_width):
return textwrap.fill(string, max_width)
if __name__ == '__main__':
string, max_width = input(), int(input())
result = wrap(string, max_width)
print(result)
# textwrap.fill(string, max_width) :
# 是 Python 标准库中 textwrap 模块提供的一个函数。这个函数用于将文本字符串按照指定的最大宽度进行包装(wrap)。
Designer Door Mat
Task
其实跟那个H的道理一样
# Enter your code here. Read input from STDIN. Print output to STDOUT
n,m = map(int,input().split())
#part 1
c = '.|.'
c_1 = 'WELCOME'
c_2 = '-'
for i in range(n//2):
print((c * i).rjust((m-3)//2, c_2) + c + (c * i).ljust((m-3)//2, c_2))
#part 2
print(c_1.center(m, c_2))
#part 3
for i in range(n//2):
print((c * (n//2-i-1)).rjust((m-3)//2, c_2) + c + (c * (n//2-i-1)).ljust((m-3)//2, c_2))
# n//2:整除
# .center(,)
String Formatting
Task
python经典进制转换问题:输入十进制,输出十进制 八进制 十六进制(大写) 二进制
def print_formatted(number):
width=len(str(bin(number)[2:]))
for i in range(1, number + 1):
d, o, H, b = str(i), str(oct(i)[2:]), str(hex(i)[2:]).upper(), str(bin(i)[2:])
print(d.rjust(width), o.rjust(width), H.rjust(width), b.rjust(width))
if __name__ == '__main__':
n = int(input())
print_formatted(n)
# str()
# int() oct() hex()
# [:] python的切片
Alphabet Rangoli
Task
打印问题:
import string
def print_rangoli(size):
# your code goes here
alphabet = "abcdefghijklmnopqrstuvwxyz"
lst = list(alphabet[:size])
for i in range(1 , size+1):
res = lst[size - i + 1:][::-1] + lst[size - i :]
print("-".join(res).center(4*(size - 1) + 1, "-"))
for i in range(1 , size):
res.pop(size - i)
res.pop(size - i - 1)
print("-".join(res).center(4*(size - 1) + 1, "-"))
if __name__ == '__main__':
n = int(input())
print_rangoli(n)
Capitalize!
Task
首字母大写
import math
import os
import random
import re
import sys
# Complete the solve function below.
def solve(s):
x_s = s.split(" ")
cap_x = [word.capitalize() for word in x_s]
cap_s = " ".join(cap_x)
return cap_s
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
s = input()
result = solve(s)
fptr.write(result + '\n')
fptr.close()
The Minion Game
Task
给两个玩家同样的字符串。 两个玩家都必须使用字符串的字母来制作子串。 斯图尔特必须用辅音开头。 凯文必须用元音开头的单词。 游戏结束时,双方都做了所有可能的子字符串。一个玩家在字符串中每出现一个子字符串就得到 + 1分。
def minion_game(string):
if not string:
return
Stuart, Kevin = 0, 0
Stuart = play(string, False)
Kevin = play(string, True)
if Stuart > Kevin:
print(f'Stuart {Stuart}')
elif Stuart < Kevin:
print(f'Kevin {Kevin}')
else:
print('Draw')
def play(string : str, start_vowel : bool)->int:
vowels = "AEIOU"
consonants = "BCDFGHJKLMNPQRSTVWXYZ"
score = 0
str_len = len(string)
for index, ch in enumerate(string):
if (start_vowel and ch in vowels) or (not start_vowel and ch in consonants):
score += str_len - index
return score
if __name__ == '__main__':
s = input()
minion_game(s)
# enumerate() :
# 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
# 参考:https://www.bilibili.com/video/BV1GG411Q71W/?p=2&spm_id_from=pageDriver
Merge the Tools!
Task
指定字符串的长度分组,且只输出不重复的字符
import math
def merge_the_tools(string, k):
# your code goes here
result = ''
if not string:
return
for index,ch in enumerate(string):
if index > 0 and index % k == 0:
if result:
print(result)
result = ''
if ch not in result:
result += ch
if result:
print(result)
if __name__ == '__main__':
string, k = input(), int(input())
merge_the_tools(string, k)
# enumerate():
# 大有用处啊
# 新建字符串是:u = ''
# 字符串加入字符是:result += ch
Prepare > Python > Sets
Introduction to Sets
def average(array):
# your code goes here
return sum(set(arr)) / len(set(arr))
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().split()))
result = average(arr)
print(result)
Task
if __name__ == '__main__':